diff --git a/.dumi/theme/builtins/Previewer.less b/.dumi/theme/builtins/Previewer.less index f8f038e4e..dce93303e 100755 --- a/.dumi/theme/builtins/Previewer.less +++ b/.dumi/theme/builtins/Previewer.less @@ -4,6 +4,7 @@ background-color: #fff; border: 1px solid @c-border; border-radius: 1px; + margin-bottom: 24px; &[data-debug] { margin-top: 32px; diff --git a/.dumi/theme/builtins/Previewer.tsx b/.dumi/theme/builtins/Previewer.tsx index 71c16b641..eb308c401 100755 --- a/.dumi/theme/builtins/Previewer.tsx +++ b/.dumi/theme/builtins/Previewer.tsx @@ -76,7 +76,7 @@ const Previewer: React.FC = oProps => { const isActive = history?.location.hash === `#${props.identifier}`; const isSingleFile = Object.keys(props.sources).length === 1; const openCSB = useCodeSandbox(props.hideActions?.includes('CSB') ? null : props); - const openRiddle = useRiddle(props.hideActions?.includes('RIDDLE') ? null : props); + // const openRiddle = useRiddle(props.hideActions?.includes('RIDDLE') ? null : props); const [execMotions, isMotionRunning] = useMotions(props.motions || [], demoRef.current); const [copyCode, copyStatus] = useCopy(); const [currentFile, setCurrentFile] = useState('_'); @@ -158,14 +158,14 @@ const Previewer: React.FC = oProps => { onClick={openCSB} /> )} - {openRiddle && ( + {/* {openRiddle && ( - - ); -} - -export function Update(props) { - const { onFinish, data, schema = {}, associatedKey, ...restProps } = props; - const { title, viewName } = schema; - return ( - <> - - - ); -} - -export function Add(props) { - const { size, onFinish, schema = {}, associatedKey, ...restProps } = props; - console.log({ associatedKey }, 'add'); - const { filter, title, viewName, transform, componentProps = {} } = schema; - return ( - <> - - - - - - ); - }, - }); - }} - icon={} - {...componentProps} - > - {title} - - - ); -} - -export function Destroy(props) { - const { size, schema = {}, onFinish } = props; - const { title, componentProps = {} } = schema; - return ( - { - onFinish && (await onFinish()); - }} - > - - - ); -} - -export function Filter(props) { - const { schema = {}, onFinish } = props; - const { title, fields = [] } = schema; - const [visible, setVisible] = useState(false); - const [data, setData] = useState({}); - const [filterCount, setFilterCount] = useState(0); - console.log('Filter', { visible, data }); - - return ( - <> - {visible && ( -
setVisible(false)} - >
- )} - { - setVisible(visible); - }} - className={'filters-popover'} - style={{}} - overlayStyle={{ - minWidth: 500, - }} - content={ - <> - { - if (values) { - const items = values.filter.and || values.filter.or; - setFilterCount(Array.isArray(items) ? items.length : 0); - setData(values); - onFinish && (await onFinish(values)); - } - setVisible(false); - }} - schema={{ - type: 'filterForm', - fields: [ - { - dataIndex: ['filter'], - name: 'filter', - interface: 'json', - type: 'json', - component: { - type: 'filter', - 'x-component-props': { - fields, - }, - }, - }, - ], - }} - /> - - } - > - - - - ); -} - -export function Print(props) { - const { schema = {}, contentRef } = props; - const { title, buttonProps = {} } = schema; - return ( - ( - - )} - content={() => contentRef.current} - pageStyle={` - @page { - margin: 1cm; - } - table { page-break-inside:auto } - tr { page-break-inside:avoid; page-break-after:auto } - `} - documentTitle={' '} - /> - ); -} - -export function Export(props) { - const { schema = {}, onFinish } = props; - const { title, buttonProps = {} } = schema; - return ( - - ); -} - -export function Actions(props) { - const { onTrigger = {}, actions = [], style, ...restProps } = props; - return ( - actions.length > 0 && ( -
- {actions.map( - action => - ACTIONS.has(action.type) && ( -
- -
- ), - )} -
- ) - ); -} - -export default Actions; - -export function registerAction(type: string, Action: any) { - ACTIONS.set(type, Action); -} - -export function getAction(type: string) { - return ACTIONS.get(type); -} - -export function Action(props) { - const { schema = {} } = props; - // cnsole.log(schema); - const { type } = schema; - const Component = getAction(type); - return Component && ; -} - -registerAction('add', Add); -registerAction('update', Update); -registerAction('create', Create); -registerAction('destroy', Destroy); -registerAction('filter', Filter); -registerAction('print', Print); -registerAction('export', Export); diff --git a/packages/app/src/components/actions/style.less b/packages/app/src/components/actions/style.less deleted file mode 100644 index d226bbbbf..000000000 --- a/packages/app/src/components/actions/style.less +++ /dev/null @@ -1,15 +0,0 @@ -.action-buttons { - display: flex; - // justify-content: flex-end; - min-height: 32px; - flex-direction: row-reverse; - align-items: flex-start; - .action-button { - margin-left: 8px; - } - .filter-action-button { - position: absolute; - left: 24px; - margin-left: 0; - } -} \ No newline at end of file diff --git a/packages/app/src/components/fields/array-cards/index.tsx b/packages/app/src/components/fields/array-cards/index.tsx deleted file mode 100644 index 41e78d752..000000000 --- a/packages/app/src/components/fields/array-cards/index.tsx +++ /dev/null @@ -1,200 +0,0 @@ -import React, { Fragment } from 'react'; -import { - ISchemaFieldComponentProps, - SchemaField, -} from '@formily/react-schema-renderer'; -import { toArr, isFn, FormPath } from '@formily/shared'; -import { ArrayList } from '@formily/react-shared-components'; -import { CircleButton } from '../circle-button'; -import { TextButton } from '../text-button'; -import { Card } from 'antd'; -import { - PlusOutlined, - DeleteOutlined, - DownOutlined, - UpOutlined, -} from '@ant-design/icons'; -import styled from 'styled-components'; - -const ArrayComponents = { - CircleButton, - TextButton, - AdditionIcon: () => , - RemoveIcon: () => , - MoveDownIcon: () => , - MoveUpIcon: () => , -}; - -export const ArrayCards: any = styled( - (props: ISchemaFieldComponentProps & { className: string }) => { - const { value, schema, className, editable, path, mutators } = props; - const { - renderAddition, - renderRemove, - renderMoveDown, - renderMoveUp, - renderEmpty, - renderExtraOperations, - ...componentProps - } = schema.getExtendsComponentProps() || {}; - - const schemaItems = Array.isArray(schema.items) - ? schema.items[schema.items.length - 1] - : schema.items; - - const onAdd = () => { - if (schemaItems) { - mutators.push(schemaItems.getEmptyValue()); - } - }; - return ( -
- - {toArr(value).map((item, index) => { - return ( - - {index + 1} - . {componentProps.title || schema.title} - - } - extra={ - - mutators.remove(index)} - /> - mutators.moveDown(index)} - /> - mutators.moveUp(index)} - /> - {isFn(renderExtraOperations) - ? renderExtraOperations(index) - : renderExtraOperations} - - } - > - {schemaItems && ( - - )} - - ); - })} - - {({ children, allowAddition }) => { - return ( - -
{children}
-
- ); - }} -
- - {({ children, isEmpty }) => { - if (!isEmpty) { - return ( -
- {children} -
- ); - } - }} -
-
-
- ); - }, -)` - width: 100%; - .ant-card { - .ant-card { - box-shadow: none; - } - .ant-card-body { - padding: 20px 10px 0 10px; - } - .array-cards-addition { - box-shadow: none; - border: 1px solid #eee; - transition: all 0.35s ease-in-out; - &:hover { - border: 1px solid #ccc; - } - } - .empty-wrapper { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 10px; - img { - height: 85px; - } - .ant-btn { - color: #888; - } - } - } - .card-list-empty.card-list-item.add-pointer { - cursor: pointer; - } - - .array-cards-addition { - margin-top: 10px; - margin-bottom: 3px; - background: #fff; - display: flex; - cursor: pointer; - padding: 5px 0; - justify-content: center; - box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, 0.1); - } - .card-list-item { - margin-top: 10px; - border: 1px solid #eee; - } - .card-list-item:first-child { - margin-top: 0 !important; - } - .ant-card-extra { - display: flex; - button { - margin-right: 8px; - } - } -`; - -ArrayCards.isFieldComponent = true; - -export default ArrayCards; diff --git a/packages/app/src/components/fields/array-cards/style.ts b/packages/app/src/components/fields/array-cards/style.ts deleted file mode 100644 index d9079150a..000000000 --- a/packages/app/src/components/fields/array-cards/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/card/style/index'; diff --git a/packages/app/src/components/fields/array-table/index.tsx b/packages/app/src/components/fields/array-table/index.tsx deleted file mode 100644 index a7e1fa787..000000000 --- a/packages/app/src/components/fields/array-table/index.tsx +++ /dev/null @@ -1,238 +0,0 @@ -import React, { useContext } from 'react'; -import { - ISchemaFieldComponentProps, - SchemaField, - Schema, - complieExpression, - FormExpressionScopeContext, -} from '@formily/react-schema-renderer'; -import { toArr, isFn, isArr, FormPath } from '@formily/shared'; -import { ArrayList, DragListView } from '@formily/react-shared-components'; -import { CircleButton } from '../circle-button'; -import { TextButton } from '../text-button'; -import { Table, Form, Button } from 'antd'; -import { FormItemShallowProvider } from '@formily/antd'; -import { - PlusOutlined, - DeleteOutlined, - DownOutlined, - UpOutlined, -} from '@ant-design/icons'; -import styled from 'styled-components'; - -const ArrayComponents = { - CircleButton, - TextButton, - AdditionIcon: () => ( - <> - 新增 - - ), - RemoveIcon: () => , - MoveDownIcon: () => , - MoveUpIcon: () => , -}; - -const DragHandler = styled.span` - width: 7px; - display: inline-block; - height: 14px; - border: 2px dotted #c5c5c5; - border-top: 0; - border-bottom: 0; - cursor: move; - margin-bottom: 24px; -`; - -export const ArrayTable: any = styled( - (props: ISchemaFieldComponentProps & { className: string }) => { - const expressionScope = useContext(FormExpressionScopeContext); - const { value, schema, className, editable, path, mutators } = props; - const { - renderAddition, - renderRemove, - renderMoveDown, - renderMoveUp, - renderEmpty, - renderExtraOperations, - operationsWidth, - operations, - draggable, - ...componentProps - } = schema.getExtendsComponentProps() || {}; - const schemaItems = Array.isArray(schema.items) - ? schema.items[schema.items.length - 1] - : schema.items; - const onAdd = () => { - if (schemaItems) { - mutators.push(schemaItems.getEmptyValue()); - } - }; - const onMove = (dragIndex, dropIndex) => { - mutators.move(dragIndex, dropIndex); - }; - const renderColumns = (items: Schema) => { - return items.mapProperties((props, key) => { - const itemProps = { - ...props.getExtendsItemProps(), - ...props.getExtendsProps(), - }; - return { - title: complieExpression(props.title, expressionScope), - ...itemProps, - key, - dataIndex: key, - render: (value: any, record: any, index: number) => { - const newPath = FormPath.parse(path).concat(index, key); - return ( - - - - ); - }, - }; - }); - }; - // 兼容异步items schema传入 - let columns = []; - if (schema.items) { - columns = isArr(schema.items) - ? schema.items.reduce((buf, items) => { - return buf.concat(renderColumns(items)); - }, []) - : renderColumns(schema.items); - } - if (editable && operations !== false) { - columns.push({ - ...operations, - key: 'operations', - dataIndex: 'operations', - width: operationsWidth || 200, - render: (value: any, record: any, index: number) => { - return ( - -
- mutators.remove(index)} - /> - mutators.moveDown(index)} - /> - mutators.moveUp(index)} - /> - {isFn(renderExtraOperations) - ? renderExtraOperations(index) - : renderExtraOperations} -
-
- ); - }, - }); - } - if (draggable) { - columns.unshift({ - width: 20, - key: 'dragHandler', - render: () => { - return ; - }, - }); - } - const renderTable = () => { - return ( - { - return toArr(value).indexOf(record); - }} - pagination={false} - columns={columns} - dataSource={toArr(value)} - >
- ); - }; - return ( -
- - {draggable ? ( - - {renderTable()} - - ) : ( - renderTable() - )} - - {({ children }) => { - return ( - children && ( -
- {children} -
- ) - ); - }} -
-
-
- ); - }, -)` - width: 100%; - margin-bottom: 10px; - table { - margin-bottom: 0 !important; - } - .array-table-addition { - background: #fbfbfb; - cursor: pointer; - margin-top: 3px; - border-radius: 3px; - .next-btn-text { - color: #888; - } - .next-icon:before { - width: 16px !important; - font-size: 16px !important; - margin-right: 5px; - } - } - .ant-btn { - color: #888; - } - .array-item-operator { - display: flex; - button { - margin-right: 8px; - } - } -`; - -ArrayTable.isFieldComponent = true; - -export default ArrayTable; diff --git a/packages/app/src/components/fields/array-table/style.ts b/packages/app/src/components/fields/array-table/style.ts deleted file mode 100644 index fb324a70c..000000000 --- a/packages/app/src/components/fields/array-table/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/table/style/index'; diff --git a/packages/app/src/components/fields/automations/index.tsx b/packages/app/src/components/fields/automations/index.tsx deleted file mode 100644 index bd7e6849b..000000000 --- a/packages/app/src/components/fields/automations/index.tsx +++ /dev/null @@ -1,361 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import { - Button, - Select, - DatePicker, - Tag, - InputNumber, - TimePicker, - Input, -} from 'antd'; -import { - Select as AntdSelect, - mapStyledProps, - mapTextComponent, -} from '../shared'; -import moment from 'moment'; -import './style.less'; -import api from '@/api-client'; -import { useRequest } from 'umi'; - -export const DateTime = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(props => { - const { associatedKey, automationType, filter, onChange } = props; - const [aKey, setaKey] = useState(associatedKey); - const [aType, setaType] = useState(automationType); - console.log('Automations.DateTime', aKey, associatedKey); - const [value, setValue] = useState(props.value || {}); - const [offsetType, setOffsetType] = useState(() => { - if (!value.offset) { - return 'current'; - } - if (value.offset > 0) { - return 'after'; - } - if (value.offset < 0) { - return 'before'; - } - return 'current'; - }); - - useEffect(() => { - if (associatedKey !== aKey || automationType !== aType) { - setOffsetType('current'); - setValue({ - value: null, - byField: null, - offset: 0, - unit: undefined, - }); - onChange({ - value: null, - byField: null, - offset: 0, - unit: undefined, - }); - setaKey(associatedKey); - } - }, [associatedKey, automationType, aKey, aType]); - const { data = [], loading = true } = useRequest( - () => { - return associatedKey && automationType !== 'schedule' - ? api.resource('collections.fields').list({ - associatedKey, - filter: filter || { - type: 'date', - }, - }) - : Promise.resolve({ data: [] }); - }, - { - refreshDeps: [associatedKey, automationType, filter], - }, - ); - console.log({ data }); - return ( -
-
- {automationType === 'schedule' ? ( - { - onChange({ value: m.toISOString() }); - setValue({ value: m.toISOString() }); - // console.log('Automations.DateTime', m.toISOString(), {m, dateString}) - }} - defaultValue={(() => { - if (!value.value) { - return undefined; - } - const m = moment(value.value); - return m.isValid() ? m : undefined; - })()} - /> - ) : ( - - - - {offsetType !== 'current' && ( - { - const values = { - unit: 'day', - ...value, - }; - if (offsetType === 'before') { - values.offset = -1 * Math.abs(offset); - } else if (offsetType === 'after') { - values.offset = Math.abs(offset); - } - setValue(values); - onChange(values); - console.log('Automations.DateTime', values); - // console.log(offsetType); - }} - placeholder={'数字'} - /> - )} - {offsetType !== 'current' && ( - - )} - {offsetType !== 'current' && - value.unit && - ['day', 'week', 'month'].indexOf(value.unit) !== -1 && ( - { - const m = moment(value.time, 'HH:mm:ss'); - return m.isValid() ? m : undefined; - })()} - onChange={(m, dateString) => { - console.log('Automations.DateTime', m, dateString); - setValue({ ...value, time: dateString }); - onChange({ ...value, time: dateString }); - }} - /> - )} - - )} -
-
- ); -}); - -const cronmap = { - none: '不重复', - everysecond: '每秒', - everyminute: '每分钟', - everyhour: '每小时', - everyday: '每天', - everyweek: '每周', - everymonth: '每月', - custom: '自定义', -}; - -export const Cron = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(props => { - const { value, onChange } = props; - - console.log('Automations.DateTime', { value }); - - const re = /every_(\d+)_(.+)/i; - - const match = cronmap[value] ? null : re.exec(value); - - const [unit, setUnit] = useState(match ? match[2] : 'days'); - const [num, setNum] = useState(match ? parseInt(match[1]) : undefined); - const [cron, setCron] = useState(() => { - if (!value) { - return 'none'; - } - return match ? 'custom' : cronmap[value]; - }); - - return ( -
- - - {cron === 'custom' && ( - { - const v = parseInt(e.target.value); - setNum(v); - onChange(`every_${v}_${unit}`); - }} - defaultValue={num} - addonBefore={'每'} - /> - )} - {cron === 'custom' && ( - - )} - -
- ); -}); - -export const EndMode = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(props => { - const { value = 'none', onChange, automationType } = props; - const re = /after_(\d+)_times/i; - const match = re.exec(value); - - const [mode, setMode] = useState(() => { - if (automationType === 'schedule' && value === 'byField') { - return 'none'; - } else if ( - automationType === 'collections:schedule' && - value === 'customTime' - ) { - return 'none'; - } - - return match ? 'times' : value; - }); - - const [num, setNum] = useState(match ? parseInt(match[1]) : undefined); - - useEffect(() => { - if (automationType === 'schedule' && value === 'byField') { - setMode('none'); - onChange('none'); - } else if ( - automationType === 'collections:schedule' && - value === 'customTime' - ) { - setMode('none'); - onChange('none'); - } - }, [automationType]); - console.log('Automations.DateTime', { value, automationType, mode }); - - return ( -
- - - {mode === 'times' && ( - { - const v = parseInt(e.target.value); - setNum(v); - onChange(`after_${v}_times`); - }} - defaultValue={num} - addonAfter={'次'} - /> - )} - -
- ); -}); - -export const Automations = { - DateTime, - Cron, - EndMode, -}; diff --git a/packages/app/src/components/fields/automations/style.less b/packages/app/src/components/fields/automations/style.less deleted file mode 100644 index 6848a12ab..000000000 --- a/packages/app/src/components/fields/automations/style.less +++ /dev/null @@ -1,5 +0,0 @@ -.ant-input-group.ant-input-group-compact { - .ant-input-group-wrapper { - width: 120px; - } -} diff --git a/packages/app/src/components/fields/cascader/index.tsx b/packages/app/src/components/fields/cascader/index.tsx deleted file mode 100644 index e0db0c5be..000000000 --- a/packages/app/src/components/fields/cascader/index.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import { Cascader as AntdCascader } from 'antd'; -import { useRequest } from 'umi'; -import api from '@/api-client'; -import { - transformDataSourceKey, - mapStyledProps, - mapTextComponent, -} from '../shared'; - -function findTreeNode( - tree, - values, - { value = 'value', children = 'children' }, -) { - let node, i; - for (node = tree, i = 0; node && values[i]; i++) { - node = (node[children] || []).find( - item => item[value] === values[i][value], - ); - } - - return node; -} - -export const Cascader = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(function(props) { - const { - disabled, - // target, - // labelField, - // valueField = 'id', - // parentField, - // maxLevel, - // changeOnSelect, - value = [], - onChange, - schema = {}, - placeholder, - // TODO(feature): 增加静态数据支持 - // dataSource: [] - } = props; - const { - target, - targetKey: valueField, - // 值字段 - // valueField: 'code', - // 名称字段 - labelField, - // TODO(refactor): 等 toWhere 重构完成后要改成 parent - // 上级字段名 - parentField, - maxLevel, - // valueField = 'id', - // 深度限制,默认:-1(代表不控制,即如果是数据表,则无限加载) - // limit: -1, - // 可选层级,默认:-1(代表可选的最深层级) - // maxLevel: null, - // 是否可以不选择到最深一级 - // 'x-component-props': { changeOnSelect: true } - incompletely: changeOnSelect, - } = schema; - - const fieldNames = { - label: labelField, - value: valueField, - children: 'children', - }; - const [options, setOptions] = useState([]); - - const { loading, run } = useRequest( - async (selectedOptions = []) => { - if (maxLevel != null && selectedOptions.length >= maxLevel) { - return; - } - - const last = selectedOptions[selectedOptions.length - 1] || null; - if (last) { - if (last.isLeaf) { - return; - } - last.loading = true; - } - - return api.resource(target).list({ - filter: { - [parentField]: last && last[valueField], - }, - perPage: -1, - sort: [valueField], - }); - // TODO(bug): 关联资源加载问题较多,暂时先用 filter 解决 - // return api.resource(`${target}.${target}`).list({ - // associatedKey: last, - // perPage: -1 - // }); - }, - { - manual: true, - onSuccess(result, [selectedOptions = []]) { - if (!result) { - return; - } - - const data = result.map(item => ({ - ...item, - isLeaf: maxLevel != null && item.level >= maxLevel, - })); - // 找到已有值指向的 options 节点 - const root = { [fieldNames.children]: options }; - const node = findTreeNode(root, selectedOptions, fieldNames); - - if (node && node !== root) { - node.children = data; - node.loading = false; - // use spread array to avoid popup to be collapsed - setOptions([...options]); - } else { - setOptions(data); - } - }, - }, - ); - - // 根据 value 的值,按需预加载相应的数据 - useEffect(() => { - if (value.length) { - value.reduce( - (promise, option, i) => promise.then(() => run(value.slice(0, i))), - Promise.resolve(), - ); - } else { - run([]); - } - }, []); - - return ( - item[valueField])} - onChange={(v, selected) => { - if (maxLevel != null && v.length < maxLevel) { - run(selected); - } - if (changeOnSelect || !v.length || v.length >= maxLevel) { - onChange(selected); - } - }} - loadData={run} - changeOnSelect={changeOnSelect} - fieldNames={fieldNames} - /> - ); -}); - -export default Cascader; diff --git a/packages/app/src/components/fields/cascader/style.ts b/packages/app/src/components/fields/cascader/style.ts deleted file mode 100644 index f37dbb622..000000000 --- a/packages/app/src/components/fields/cascader/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/cascader/style/index'; diff --git a/packages/app/src/components/fields/checkbox/index.tsx b/packages/app/src/components/fields/checkbox/index.tsx deleted file mode 100644 index ac51049d2..000000000 --- a/packages/app/src/components/fields/checkbox/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import { Checkbox as AntdCheckbox } from 'antd'; -import { - transformDataSourceKey, - mapStyledProps, - mapTextComponent, -} from '../shared'; - -export const Checkbox = connect<'Group'>({ - valueName: 'checked', - getProps: mapStyledProps, -})(AntdCheckbox); - -Checkbox.Group = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(transformDataSourceKey(AntdCheckbox.Group, 'options')); - -export default Checkbox; diff --git a/packages/app/src/components/fields/checkbox/style.ts b/packages/app/src/components/fields/checkbox/style.ts deleted file mode 100644 index f6374b7e7..000000000 --- a/packages/app/src/components/fields/checkbox/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/checkbox/style/index'; diff --git a/packages/app/src/components/fields/circle-button/index.tsx b/packages/app/src/components/fields/circle-button/index.tsx deleted file mode 100644 index 6db278c2f..000000000 --- a/packages/app/src/components/fields/circle-button/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import { Button } from 'antd'; -import { ButtonProps } from 'antd/lib/button'; - -export const CircleButton: React.FC = props => { - const hasText = String(props.className || '').indexOf('has-text') > -1; - return ( - {' '} - - {showDeleteButton && ( - - )} - - - - ); -} - -interface FieldOptions { - name: string; - title: string; - interface: string; - [key: string]: any; -} - -interface FilterItemProps { - fields: FieldOptions[]; - [key: string]: any; -} - -const OP_MAP = { - string: [ - { label: '包含', value: '$includes', selected: true }, - { label: '不包含', value: '$notIncludes' }, - { label: '等于', value: 'eq' }, - { label: '不等于', value: 'ne' }, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - number: [ - { label: '等于', value: 'eq', selected: true }, - { label: '不等于', value: 'ne' }, - { label: '大于', value: 'gt' }, - { label: '大于等于', value: 'gte' }, - { label: '小于', value: 'lt' }, - { label: '小于等于', value: 'lte' }, - // {label: '介于', value: 'between'}, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - file: [ - { label: '存在', value: 'id.gt' }, - { label: '不存在', value: 'id.$null' }, - ], - boolean: [ - { label: '是', value: '$isTruly', selected: true }, - { label: '否', value: '$isFalsy' }, - ], - select: [ - { label: '等于', value: 'eq', selected: true }, - { label: '不等于', value: 'ne' }, - { label: '包含', value: 'in' }, - { label: '不包含', value: 'notIn' }, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - multipleSelect: [ - { label: '等于', value: '$match', selected: true }, - { label: '不等于', value: '$notMatch' }, - { label: '包含', value: '$anyOf' }, - { label: '不包含', value: '$noneOf' }, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - datetime: [ - { label: '等于', value: '$dateOn', selected: true }, - { label: '不等于', value: '$dateNotOn' }, - { label: '早于', value: '$dateBefore' }, - { label: '晚于', value: '$dateAfter' }, - { label: '不早于', value: '$dateNotBefore' }, - { label: '不晚于', value: '$dateNotAfter' }, - // {label: '介于', value: 'between'}, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - // {label: '是今天', value: 'now'}, - // {label: '在今天之前', value: 'before_today'}, - // {label: '在今天之后', value: 'after_today'}, - ], - time: [ - { label: '等于', value: 'eq', selected: true }, - { label: '不等于', value: 'neq' }, - { label: '大于', value: 'gt' }, - { label: '大于等于', value: 'gte' }, - { label: '小于', value: 'lt' }, - { label: '小于等于', value: 'lte' }, - // {label: '介于', value: 'between'}, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - // {label: '是今天', value: 'now'}, - // {label: '在今天之前', value: 'before_today'}, - // {label: '在今天之后', value: 'after_today'}, - ], - // linkTo: [ - // {label: '包含', value: 'cont'}, - // {label: '不包含', value: 'ncont'}, - // {label: '非空', value: '$notNull'}, - // {label: '为空', value: '$null'}, - // ], -}; - -const op = { - string: OP_MAP.string, - textarea: OP_MAP.string, - number: OP_MAP.number, - percent: OP_MAP.number, - datetime: OP_MAP.datetime, - date: OP_MAP.datetime, - time: OP_MAP.time, - checkbox: OP_MAP.boolean, - boolean: OP_MAP.boolean, - select: OP_MAP.select, - multipleSelect: OP_MAP.multipleSelect, - checkboxes: OP_MAP.multipleSelect, - radio: OP_MAP.select, - upload: OP_MAP.file, - attachment: OP_MAP.file, -}; - -const StringInput = props => { - const { value, onChange, ...restProps } = props; - return ( - { - onChange(e.target.value); - }} - /> - ); -}; - -const controls = { - string: StringInput, - textarea: StringInput, - number: InputNumber, - percent: props => ( - (value ? `${value}%` : '')} - parser={value => value.replace('%', '')} - {...props} - /> - ), - boolean: BooleanControl, - checkbox: BooleanControl, - select: OptionControl, - radio: OptionControl, - checkboxes: OptionControl, - multipleSelect: OptionControl, - time: TimeControl, - date: DateControl, -}; - -function DateControl(props: any) { - const { field, value, onChange, ...restProps } = props; - let format = field.dateFormat; - // if (field.showTime) { - // format += ` ${field.timeFormat}`; - // } - const m = moment(value, format); - return ( - { - onChange(value ? value.format('YYYY-MM-DD') : null); - }} - /> - ); - // return ( - // { - // onChange(value ? value.format(field.showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD') : null) - // }}/> - // ); -} - -function TimeControl(props: any) { - const { field, value, onChange, ...restProps } = props; - let format = field.timeFormat; - const m = moment(value, format); - return ( - { - onChange(value ? value.format('HH:mm:ss') : null); - }} - /> - ); -} - -function OptionControl(props) { - const { multiple = true, op, options, value, onChange, ...restProps } = props; - let mode: any = 'multiple'; - if (!multiple && ['eq', 'ne'].indexOf(op) !== -1) { - mode = undefined; - } - return ( - - ); -} - -function BooleanControl(props) { - const { value, onChange, ...restProps } = props; - return ( - { - onChange(e.target.value); - }} - > - - - - ); -} - -function NullControl(props) { - return null; -} - -function getComponentTypeByField(field) { - if (!field.component) { - return 'string'; - } - let componentType = field.component.type; - if (field.component.type === 'select' && field.multiple) { - componentType = 'multipleSelect'; - } - return componentType; -} - -export function FilterItem(props: FilterItemProps) { - const { - index, - fields = [], - sourceFields = [], - showDeleteButton = true, - onDelete, - onChange, - } = props; - const defaultField: any = - fields.find(field => field.name === props.dataSource.column) || {}; - const componentType = getComponentTypeByField(defaultField); - // const [type, setType] = useState(defaultField.interface || 'string'); - const [field, setField] = useState({}); - const [dataSource, setDataSource] = useState(props.dataSource || {}); - const [valueType, setValueType] = useState('custom'); - useEffect(() => { - const field = fields.find(field => field.name === props.dataSource.column); - if (field) { - setField(field); - // let componentType = getComponentTypeByField(field); - // setType(componentType); - } - setDataSource({ ...props.dataSource }); - if (/^{{.+}}$/.test(props.dataSource.value)) { - setValueType('ref'); - } - }, [props.dataSource]); - let ValueControl = controls[componentType] || controls.string; - if ( - ['$null', '$notNull', '$isTruly', '$isFalsy'].indexOf(dataSource.op) !== -1 - ) { - ValueControl = NullControl; - } - if (['boolean', 'checkbox'].indexOf(componentType) !== -1) { - ValueControl = NullControl; - } - // let multiple = true; - // if () - const opOptions = op[componentType || 'string'] || op.string; - console.log({ componentType, defaultField, field, valueType, opOptions }); - return ( - - - - {sourceFields.length > 0 && ( - - )} - {valueType !== 'ref' ? ( - { - onChange({ ...dataSource, value: value }); - }} - style={{ width: 180 }} - /> - ) : sourceFields.length > 0 ? ( - - ) : null} - {showDeleteButton && ( - - )} - - ); -} - -function toFilter(values: any) { - let filter: any; - let { type, andor = 'and', list = [], column, op, value } = values; - if (type === 'group') { - filter = { - [andor]: list.map(value => toFilter(value)).filter(Boolean), - }; - } else if (type === 'item' && column && op) { - if ( - [ - 'id.$null', - 'id.$notNull', - '$null', - '$notNull', - '$isTruly', - '$isFalsy', - ].indexOf(op) !== -1 - ) { - value = true; - } - // if (op === 'id.gt') { - // value = 0; - // } - filter = { - [`${column}`]: { [op]: value }, - }; - } - return filter; -} - -function toValues(filter: any = {}) { - let values: any = {}; - Object.keys(filter).forEach(key => { - const value = filter[key]; - if (Array.isArray(value)) { - values['andor'] = key; - values['type'] = 'group'; - values['list'] = value.map(v => toValues(v)); - } else if (typeof value === 'object') { - values['type'] = 'item'; - values['column'] = key; - values['op'] = Object.keys(value).shift(); - values['value'] = Object.values(value).shift(); - } - }); - return values; -} - -export const Filter = connect({ - getProps: mapStyledProps, -})(props => { - const dataSource = { - type: 'group', - list: [ - { - type: 'item', - }, - ], - }; - const { - value, - onChange, - associatedKey, - filter = {}, - sourceName, - sourceFilter = {}, - fields = [], - ...restProps - } = props; - console.log('filter', { associatedKey }); - const { data = [], loading = true } = useRequest( - () => { - return associatedKey - ? api.resource(`collections.fields`).list({ - associatedKey, - filter, - perPage: -1, - }) - : Promise.resolve({ - data: fields, - }); - }, - { - refreshDeps: [associatedKey], - }, - ); - - const { data: sourceFields = [] } = useRequest( - () => { - return sourceName - ? api.resource(`collections.fields`).list({ - associatedKey: sourceName, - filter: sourceFilter, - perPage: -1, - }) - : Promise.resolve({ - data: [], - }); - }, - { - refreshDeps: [sourceName], - }, - ); - console.log({ sourceName, sourceFields }); - - return ( - { - console.log(values); - onChange(toFilter(values)); - }} - {...restProps} - sourceFields={sourceFields} - fields={data.filter(item => item.filterable)} - /> - ); -}); - -export default Filter; diff --git a/packages/app/src/components/fields/filter/style.less b/packages/app/src/components/fields/filter/style.less deleted file mode 100644 index 54a1710ef..000000000 --- a/packages/app/src/components/fields/filter/style.less +++ /dev/null @@ -1,3 +0,0 @@ -.filter-remove-link { - color: #d9d9d9; -} diff --git a/packages/app/src/components/fields/filter/useDynamicList.ts b/packages/app/src/components/fields/filter/useDynamicList.ts deleted file mode 100644 index 25aff4717..000000000 --- a/packages/app/src/components/fields/filter/useDynamicList.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { useCallback, useRef, useState } from 'react'; - -export default (initialValue: T[]) => { - const counterRef = useRef(-1); - // key 存储器 - const keyList = useRef([]); - - // 内部方法 - const setKey = useCallback((index: number) => { - counterRef.current += 1; - keyList.current.splice(index, 0, counterRef.current); - }, []); - - const [list, setList] = useState(() => { - (initialValue || []).forEach((_, index) => { - setKey(index); - }); - return initialValue || []; - }); - - const resetList = (newList: T[] = []) => { - keyList.current = []; - counterRef.current = -1; - setList(() => { - (newList || []).forEach((_, index) => { - setKey(index); - }); - return newList || []; - }); - }; - - const insert = (index: number, obj: T) => { - setList(l => { - const temp = [...l]; - temp.splice(index, 0, obj); - setKey(index); - return temp; - }); - }; - - const getAll = () => list; - const getKey = (index: number) => keyList.current[index]; - const getIndex = (index: number) => - keyList.current.findIndex(ele => ele === index); - - const merge = (index: number, obj: T[]) => { - setList(l => { - const temp = [...l]; - obj.forEach((_, i) => { - setKey(index + i); - }); - temp.splice(index, 0, ...obj); - return temp; - }); - }; - - const replace = (index: number, obj: T) => { - setList(l => { - const temp = [...l]; - temp[index] = obj; - return temp; - }); - }; - - const remove = (index: number) => { - setList(l => { - const temp = [...l]; - temp.splice(index, 1); - - // remove keys if necessary - try { - keyList.current.splice(index, 1); - } catch (e) { - console.error(e); - } - return temp; - }); - }; - - const move = (oldIndex: number, newIndex: number) => { - if (oldIndex === newIndex) { - return; - } - setList(l => { - const newList = [...l]; - const temp = newList.filter((_: {}, index: number) => index !== oldIndex); - temp.splice(newIndex, 0, newList[oldIndex]); - - // move keys if necessary - try { - const keyTemp = keyList.current.filter( - (_: {}, index: number) => index !== oldIndex, - ); - keyTemp.splice(newIndex, 0, keyList.current[oldIndex]); - keyList.current = keyTemp; - } catch (e) { - console.error(e); - } - - return temp; - }); - }; - - const push = (obj: T) => { - setList(l => { - setKey(l.length); - return l.concat([obj]); - }); - }; - - const pop = () => { - // remove keys if necessary - try { - keyList.current = keyList.current.slice(0, keyList.current.length - 1); - } catch (e) { - console.error(e); - } - - setList(l => l.slice(0, l.length - 1)); - }; - - const unshift = (obj: T) => { - setList(l => { - setKey(0); - return [obj].concat(l); - }); - }; - - const sortForm = (result: unknown[]) => - result - .map((item, index) => ({ key: index, item })) // add index into obj - .sort((a, b) => getIndex(a.key) - getIndex(b.key)) // sort based on the index of table - .filter(item => !!item.item) // remove undefined(s) - .map(item => item.item); // retrive the data - - const shift = () => { - // remove keys if necessary - try { - keyList.current = keyList.current.slice(1, keyList.current.length); - } catch (e) { - console.error(e); - } - setList(l => l.slice(1, l.length)); - }; - - return { - list, - insert, - merge, - replace, - remove, - getAll, - getKey, - getIndex, - move, - push, - pop, - unshift, - shift, - sortForm, - resetList, - }; -}; diff --git a/packages/app/src/components/fields/form-block/index.tsx b/packages/app/src/components/fields/form-block/index.tsx deleted file mode 100644 index 9051a4b31..000000000 --- a/packages/app/src/components/fields/form-block/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import { Card } from 'antd'; -import { CardProps } from 'antd/lib/card'; -import styled from 'styled-components'; - -export const FormBlock = createVirtualBox( - 'block', - styled(({ children, className, ...props }) => { - return ( - - {children} - - ); - })` - margin-bottom: 10px !important; - &.ant-card { - border: none; - box-shadow: none; - } - `, -); - -export default FormBlock; diff --git a/packages/app/src/components/fields/form-block/style.ts b/packages/app/src/components/fields/form-block/style.ts deleted file mode 100644 index d9079150a..000000000 --- a/packages/app/src/components/fields/form-block/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/card/style/index'; diff --git a/packages/app/src/components/fields/form-card/index.tsx b/packages/app/src/components/fields/form-card/index.tsx deleted file mode 100644 index abfc2537e..000000000 --- a/packages/app/src/components/fields/form-card/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import { Card } from 'antd'; -import { CardProps } from 'antd/lib/card'; -import styled from 'styled-components'; - -export const FormCard = createVirtualBox( - 'card', - styled(({ children, className, ...props }) => { - return ( - - {children} - - ); - })` - margin-bottom: 10px !important; - `, -); - -export default FormCard; diff --git a/packages/app/src/components/fields/form-card/style.ts b/packages/app/src/components/fields/form-card/style.ts deleted file mode 100644 index d9079150a..000000000 --- a/packages/app/src/components/fields/form-card/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/card/style/index'; diff --git a/packages/app/src/components/fields/form-description/index.tsx b/packages/app/src/components/fields/form-description/index.tsx deleted file mode 100644 index 85b9c017c..000000000 --- a/packages/app/src/components/fields/form-description/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import { Card } from 'antd'; -import styled from 'styled-components'; -import { markdown } from '@/components/views/Field'; - -export const FormDescription = createVirtualBox( - 'description', - styled(({ schema = {}, children, className, ...props }) => { - const { title, tooltip } = schema as any; - console.log({ schema }); - return ( - - {typeof tooltip === 'string' && tooltip && ( -
- )} -
- ); - })` - margin-bottom: 24px !important; - &.ant-card { - border: none; - box-shadow: none; - .ant-card-head { - font-size: 16px; - background: #fafafa; - margin: 0 -24px; - padding: 4px 24px !important; - border-top: 1px solid #f0f0f0; - } - p:first-child { - margin-top: 14px; - } - p:last-child { - margin-bottom: 0; - } - } - `, -); - -export default FormDescription; diff --git a/packages/app/src/components/fields/form-grid-col/index.tsx b/packages/app/src/components/fields/form-grid-col/index.tsx deleted file mode 100644 index 450af0c15..000000000 --- a/packages/app/src/components/fields/form-grid-col/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import { Col } from 'antd'; -import { ColProps } from 'antd/lib/grid'; - -export const FormGridCol = createVirtualBox('grid-col', props => { - return {props.children}; -}); - -export default FormGridCol; diff --git a/packages/app/src/components/fields/form-grid-col/style.ts b/packages/app/src/components/fields/form-grid-col/style.ts deleted file mode 100644 index 329e770d2..000000000 --- a/packages/app/src/components/fields/form-grid-col/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/col/style/index'; diff --git a/packages/app/src/components/fields/form-grid-row/index.tsx b/packages/app/src/components/fields/form-grid-row/index.tsx deleted file mode 100644 index b9792dc78..000000000 --- a/packages/app/src/components/fields/form-grid-row/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { AntdSchemaFieldAdaptor, pickFormItemProps } from '@formily/antd'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import { Row } from 'antd'; -import { RowProps } from 'antd/lib/grid'; -import { FormItemProps as ItemProps } from 'antd/lib/form'; -import { IItemProps } from '../types'; - -export const FormGridRow = createVirtualBox( - 'grid-row', - props => { - const { title, label } = props; - const grids = {props.children}; - if (title || label) { - return ( - - {grids} - - ); - } - return grids; - }, -); - -export default FormGridRow; diff --git a/packages/app/src/components/fields/form-grid-row/style.ts b/packages/app/src/components/fields/form-grid-row/style.ts deleted file mode 100644 index 146d18915..000000000 --- a/packages/app/src/components/fields/form-grid-row/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/row/style/index'; diff --git a/packages/app/src/components/fields/form-item-grid/index.tsx b/packages/app/src/components/fields/form-item-grid/index.tsx deleted file mode 100644 index d0f13eaaa..000000000 --- a/packages/app/src/components/fields/form-item-grid/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React, { Fragment } from 'react'; -import { - AntdSchemaFieldAdaptor, - pickFormItemProps, - pickNotFormItemProps, -} from '@formily/antd'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import { toArr } from '@formily/shared'; -import { Row, Col } from 'antd'; -import { FormItemProps as ItemProps } from 'antd/lib/form'; -import { IFormItemGridProps, IItemProps } from '../types'; -import { normalizeCol } from '../shared'; - -export const FormItemGrid = createVirtualBox< - React.PropsWithChildren ->('grid', props => { - const { - cols: rawCols, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - title, - label, - } = props; - const formItemProps = pickFormItemProps(props); - const gridProps = pickNotFormItemProps(props); - const children = toArr(props.children); - const cols = toArr(rawCols).map(col => normalizeCol(col)); - const childNum = children.length; - - if (cols.length < childNum) { - let offset: number = childNum - cols.length; - let lastSpan: number = - 24 - - cols.reduce((buf, col) => { - return ( - buf + - Number(col.span ? col.span : 0) + - Number(col.offset ? col.offset : 0) - ); - }, 0); - for (let i = 0; i < offset; i++) { - cols.push({ span: Math.floor(lastSpan / offset) }); - } - } - const grids = ( - - {children.reduce((buf, child, key) => { - return child - ? buf.concat( - - {child} - , - ) - : buf; - }, [])} - - ); - - if (title || label) { - return ( - - {grids} - - ); - } - return {grids}; -}); - -export default FormItemGrid; diff --git a/packages/app/src/components/fields/form-item-grid/style.ts b/packages/app/src/components/fields/form-item-grid/style.ts deleted file mode 100644 index fd36035fb..000000000 --- a/packages/app/src/components/fields/form-item-grid/style.ts +++ /dev/null @@ -1,2 +0,0 @@ -import 'antd/lib/row/style/index'; -import 'antd/lib/col/style/index'; diff --git a/packages/app/src/components/fields/form-layout/index.tsx b/packages/app/src/components/fields/form-layout/index.tsx deleted file mode 100644 index 7b7bce78d..000000000 --- a/packages/app/src/components/fields/form-layout/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import { FormItemDeepProvider, useDeepFormItem } from '@formily/antd'; -import { createVirtualBox } from '@formily/react-schema-renderer'; -import cls from 'classnames'; -import { IFormItemTopProps } from '../types'; - -export const FormLayout = createVirtualBox( - 'layout', - props => { - const { inline } = useDeepFormItem(); - const isInline = props.inline || inline; - const children = - isInline || props.className || props.style ? ( -
- {props.children} -
- ) : ( - props.children - ); - return {children}; - }, -); - -export default FormLayout; diff --git a/packages/app/src/components/fields/form-mega-layout/index.tsx b/packages/app/src/components/fields/form-mega-layout/index.tsx deleted file mode 100644 index 5d55ac2fd..000000000 --- a/packages/app/src/components/fields/form-mega-layout/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import { MegaLayout, FormMegaLayout } from '@formily/antd'; - -export { MegaLayout, FormMegaLayout }; diff --git a/packages/app/src/components/fields/form-slot/index.ts b/packages/app/src/components/fields/form-slot/index.ts deleted file mode 100644 index bfcd039dd..000000000 --- a/packages/app/src/components/fields/form-slot/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { FormSlot } from '@formily/react-schema-renderer'; - -export { FormSlot }; - -export default FormSlot; diff --git a/packages/app/src/components/fields/form-step/index.tsx b/packages/app/src/components/fields/form-step/index.tsx deleted file mode 100644 index 096349b7b..000000000 --- a/packages/app/src/components/fields/form-step/index.tsx +++ /dev/null @@ -1,157 +0,0 @@ -import React, { useRef, Fragment, useEffect } from 'react'; -import { - createControllerBox, - ISchemaVirtualFieldComponentProps, - createEffectHook, - useFormEffects, - useFieldState, - IVirtualBoxProps, -} from '@formily/react-schema-renderer'; -import { toArr } from '@formily/shared'; -import { Steps } from 'antd'; -import { createMatchUpdate } from '../shared'; -import { IFormStep } from '../types'; - -enum StateMap { - ON_FORM_STEP_NEXT = 'onFormStepNext', - ON_FORM_STEP_PREVIOUS = 'onFormStepPrevious', - ON_FORM_STEP_GO_TO = 'onFormStepGoto', - ON_FORM_STEP_CURRENT_CHANGE = 'onFormStepCurrentChange', - ON_FORM_STEP_DATA_SOURCE_CHANGED = 'onFormStepDataSourceChanged', -} -const EffectHooks = { - onStepNext$: createEffectHook(StateMap.ON_FORM_STEP_NEXT), - onStepPrevious$: createEffectHook(StateMap.ON_FORM_STEP_PREVIOUS), - onStepGoto$: createEffectHook(StateMap.ON_FORM_STEP_GO_TO), - onStepCurrentChange$: createEffectHook<{ - value: number; - preValue: number; - }>(StateMap.ON_FORM_STEP_CURRENT_CHANGE), -}; - -type ExtendsProps = StateMap & typeof EffectHooks; - -export const FormStep: React.FC> & - ExtendsProps = createControllerBox( - 'step', - ({ - form, - schema, - path, - name, - children, - }: ISchemaVirtualFieldComponentProps) => { - const { dataSource, ...stepProps } = schema.getExtendsComponentProps(); - const [{ current }, setFieldState] = useFieldState({ - current: stepProps.current || 0, - }); - const ref = useRef(current); - const itemsRef = useRef([]); - itemsRef.current = toArr(dataSource); - - const matchUpdate = createMatchUpdate(name, path); - - const update = (cur: number) => { - form.notify(StateMap.ON_FORM_STEP_CURRENT_CHANGE, { - path, - name, - value: cur, - preValue: current, - }); - setFieldState({ - current: cur, - }); - }; - - useEffect(() => { - form.notify(StateMap.ON_FORM_STEP_DATA_SOURCE_CHANGED, { - path, - name, - value: itemsRef.current, - }); - }, [itemsRef.current.length]); - - useFormEffects(($, { setFieldState }) => { - const updateFields = () => { - itemsRef.current.forEach(({ name }, index) => { - setFieldState(name, (state: any) => { - state.display = index === current; - }); - }); - }; - updateFields(); - $(StateMap.ON_FORM_STEP_DATA_SOURCE_CHANGED).subscribe( - ({ name, path }) => { - matchUpdate(name, path, () => { - updateFields(); - }); - }, - ); - - $(StateMap.ON_FORM_STEP_CURRENT_CHANGE).subscribe( - ({ value, name, path }: any = {}) => { - matchUpdate(name, path, () => { - form.hostUpdate(() => { - itemsRef.current.forEach(({ name }, index) => { - if (!name) - throw new Error( - 'FormStep dataSource must include `name` property', - ); - setFieldState(name, (state: any) => { - state.display = index === value; - }); - }); - }); - }); - }, - ); - - $(StateMap.ON_FORM_STEP_NEXT).subscribe(({ name, path }: any = {}) => { - matchUpdate(name, path, () => { - form.validate().then(({ errors }) => { - if (errors.length === 0) { - update( - ref.current + 1 > itemsRef.current.length - 1 - ? ref.current - : ref.current + 1, - ); - } - }); - }); - }); - - $(StateMap.ON_FORM_STEP_PREVIOUS).subscribe( - ({ name, path }: any = {}) => { - matchUpdate(name, path, () => { - update(ref.current - 1 < 0 ? ref.current : ref.current - 1); - }); - }, - ); - - $(StateMap.ON_FORM_STEP_GO_TO).subscribe( - ({ name, path, value }: any = {}) => { - matchUpdate(name, path, () => { - if (!(value < 0 || value > itemsRef.current.length)) { - update(value); - } - }); - }, - ); - }); - ref.current = current; - return ( - - - {itemsRef.current.map((props, key) => { - return ; - })} - {' '} - {children} - - ); - }, -) as any; - -Object.assign(FormStep, StateMap, EffectHooks); - -export default FormStep; diff --git a/packages/app/src/components/fields/form-step/style.ts b/packages/app/src/components/fields/form-step/style.ts deleted file mode 100644 index 0054007b2..000000000 --- a/packages/app/src/components/fields/form-step/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/steps/style/index'; diff --git a/packages/app/src/components/fields/form-tab/index.tsx b/packages/app/src/components/fields/form-tab/index.tsx deleted file mode 100644 index a2e2421bf..000000000 --- a/packages/app/src/components/fields/form-tab/index.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import React, { Fragment, useEffect, useRef } from 'react'; -import { - createControllerBox, - ISchemaVirtualFieldComponentProps, - createEffectHook, - useFormEffects, - useFieldState, - FormEffectHooks, - SchemaField, - FormPath, - IVirtualBoxProps, -} from '@formily/react-schema-renderer'; -import { Tabs, Badge } from 'antd'; -import { TabPaneProps } from 'antd/lib/tabs'; -import { IFormTab } from '../types'; -import { createMatchUpdate } from '../shared'; - -enum StateMap { - ON_FORM_TAB_ACTIVE_KEY_CHANGE = 'onFormTabActiveKeyChange', -} - -const { onFormChange$ } = FormEffectHooks; - -const EffectHooks = { - onTabActiveKeyChange$: createEffectHook<{ - name?: string; - path?: string; - value?: any; - }>(StateMap.ON_FORM_TAB_ACTIVE_KEY_CHANGE), -}; - -const parseTabItems = (items: any, hiddenKeys?: string[]) => { - return items.reduce((buf: any, { schema, key }) => { - if (Array.isArray(hiddenKeys)) { - if (hiddenKeys.includes(key)) { - return buf; - } - } - if (schema.getExtendsComponent() === 'tabpane') { - return buf.concat({ - props: schema.getExtendsComponentProps(), - schema, - key, - }); - } - return buf; - }, []); -}; - -const parseDefaultActiveKey = ( - hiddenKeys: Array = [], - items: any, - defaultActiveKey, -) => { - if (!hiddenKeys.includes(defaultActiveKey)) return defaultActiveKey; - - const index = items.findIndex(item => !hiddenKeys.includes(item.key)); - return index >= 0 ? items[index].key : ''; -}; - -const parseChildrenErrors = (errors: any, target: string) => { - return errors.filter(({ path }) => { - return FormPath.parse(path).includes(target); - }); -}; - -const addErrorBadge = ( - tab: React.ReactNode, - currentPath: FormPath, - childrenErrors: any[], -) => { - const currentErrors = childrenErrors.filter(({ path }) => { - return FormPath.parse(path).includes(currentPath); - }); - if (currentErrors.length > 0) { - return ( - - {tab} - - ); - } - return tab; -}; - -type ExtendsProps = StateMap & - typeof EffectHooks & { - TabPane: React.FC>; - }; - -type ExtendsState = { - activeKey?: string; - childrenErrors?: any; -}; - -export const FormTab: React.FC> & - ExtendsProps = createControllerBox( - 'tab', - ({ form, schema, name, path }: ISchemaVirtualFieldComponentProps) => { - const orderProperties = schema.getOrderProperties(); - let { - hiddenKeys, - defaultActiveKey, - ...componentProps - } = schema.getExtendsComponentProps(); - hiddenKeys = hiddenKeys || []; - const [{ activeKey, childrenErrors }, setFieldState] = useFieldState< - ExtendsState - >({ - activeKey: parseDefaultActiveKey( - hiddenKeys, - orderProperties, - defaultActiveKey, - ), - childrenErrors: [], - }); - const itemsRef = useRef([]); - itemsRef.current = parseTabItems(orderProperties, hiddenKeys); - const update = (cur: string) => { - form.notify(StateMap.ON_FORM_TAB_ACTIVE_KEY_CHANGE, { - name, - path, - value: cur, - }); - }; - const matchUpdate = createMatchUpdate(name, path); - useEffect(() => { - if (Array.isArray(hiddenKeys)) { - setFieldState({ - activeKey: parseDefaultActiveKey( - hiddenKeys, - orderProperties, - defaultActiveKey, - ), - }); - } - }, [hiddenKeys.length]); - useFormEffects(({ hasChanged }) => { - onFormChange$().subscribe(formState => { - const errorsChanged = hasChanged(formState, 'errors'); - if (errorsChanged) { - setFieldState({ - childrenErrors: parseChildrenErrors(formState.errors, path), - }); - } - }); - EffectHooks.onTabActiveKeyChange$().subscribe( - ({ value, name, path }: any = {}) => { - if (!itemsRef.current.map(item => item.key).includes(value)) return; - matchUpdate(name, path, () => { - setFieldState({ - activeKey: value, - }); - }); - }, - ); - }); - return ( - - {itemsRef.current.map(({ props, schema, key }) => { - const currentPath = FormPath.parse(path).concat(key); - return ( - - - - ); - })} - - ); - }, -) as any; - -FormTab.TabPane = createControllerBox( - 'tabpane', - ({ children }) => { - return {children}; - }, -); - -Object.assign(FormTab, StateMap, EffectHooks); - -export default FormTab; diff --git a/packages/app/src/components/fields/form-tab/style.ts b/packages/app/src/components/fields/form-tab/style.ts deleted file mode 100644 index a7c2682f9..000000000 --- a/packages/app/src/components/fields/form-tab/style.ts +++ /dev/null @@ -1,2 +0,0 @@ -import 'antd/lib/tabs/style/index'; -import 'antd/lib/badge/style/index'; diff --git a/packages/app/src/components/fields/form-text-box/index.tsx b/packages/app/src/components/fields/form-text-box/index.tsx deleted file mode 100644 index 934a6c6f6..000000000 --- a/packages/app/src/components/fields/form-text-box/index.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import React, { useRef, useLayoutEffect } from 'react'; -import { createControllerBox, Schema } from '@formily/react-schema-renderer'; -import { IFormTextBox } from '../types'; -import { toArr } from '@formily/shared'; -import { FormItemProps as ItemProps } from 'antd/lib/form'; -import { version } from 'antd'; -import { AntdSchemaFieldAdaptor, pickFormItemProps } from '@formily/antd'; -import styled from 'styled-components'; - -const isV4 = /^4\./.test(version); - -export const FormTextBox = createControllerBox( - 'text-box', - styled(({ props, form, className, children }) => { - const schema = new Schema(props); - const mergeProps = schema.getExtendsComponentProps(); - const { title, label, text, gutter, style } = Object.assign( - { - gutter: 5, - }, - mergeProps, - ); - const formItemProps = pickFormItemProps(mergeProps); - const ref: React.RefObject = useRef(); - const arrChildren = toArr(children); - const split = text.split('%s'); - let index = 0; - useLayoutEffect(() => { - if (ref.current) { - const elements = ref.current.querySelectorAll('.text-box-field'); - const syncLayouts = Array.prototype.map.call( - elements, - (el: HTMLElement) => { - return [ - el, - () => { - const ctrl = el.querySelector('.ant-form-item-children'); - setTimeout(() => { - if (ctrl) { - const editable = form.getFormState(state => state.editable); - el.style.width = editable - ? ctrl.getBoundingClientRect().width + 'px' - : 'auto'; - } - }); - }, - ]; - }, - ); - syncLayouts.forEach(([el, handler]) => { - handler(); - el.addEventListener('DOMSubtreeModified', handler); - }); - - return () => { - syncLayouts.forEach(([el, handler]) => { - el.removeEventListener('DOMSubtreeModified', handler); - }); - }; - } - }, []); - const newChildren = split.reduce((buf, item, key) => { - return buf.concat( - item ? ( -

- {item} -

- ) : null, - arrChildren[key] ? ( -
- {arrChildren[key]} -
- ) : null, - ); - }, []); - - const textChildren = ( -
- {newChildren} -
- ); - - if (!title && !label) return textChildren; - return ( - - {textChildren} - - ); - })` - display: flex; - .text-box-words:nth-child(1) { - margin-left: 0; - } - .text-box-words { - margin-bottom: 0 !important; - ${isV4 ? 'line-height:32px' : ''} - } - .text-box-field { - display: inline-block; - .ant-form-item { - margin-bottom: 0 !important; - } - } - .next-form-item { - margin-bottom: 0 !important; - } - .preview-text { - text-align: center !important; - } - `, -); - -export default FormTextBox; diff --git a/packages/app/src/components/fields/icons/index.tsx b/packages/app/src/components/fields/icons/index.tsx deleted file mode 100644 index d41780c5c..000000000 --- a/packages/app/src/components/fields/icons/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import React, { useState } from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import { Popover, Button, Input } from 'antd'; -import { acceptEnum, mapStyledProps, mapTextComponent } from '../shared'; -import { icons, hasIcon, Icon as IconComponent } from '@/components/icons'; -import { CloseOutlined } from '@ant-design/icons'; - -function IconField(props: any) { - const { value, onChange } = props; - const [visible, setVisible] = useState(false); - return ( -
- - { - setVisible(val); - }} - content={ -
- {[...icons.keys()].map(key => ( - { - onChange(key); - setVisible(false); - }} - > - - - ))} -
- } - title="图标" - trigger="click" - > - -
- {value && } -
-
- ); -} - -export const Icon = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(IconField); - -export default Icon; diff --git a/packages/app/src/components/fields/index.tsx b/packages/app/src/components/fields/index.tsx deleted file mode 100644 index 41b37d62f..000000000 --- a/packages/app/src/components/fields/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -export * from './text-button'; -export * from './time-picker'; -export * from './transfer'; -export * from './switch'; -export * from './array-cards'; -export * from './array-table'; -export * from './checkbox'; -export * from './circle-button'; -export * from './date-picker'; -export * from './form-block'; -export * from './form-card'; -export * from './form-tab'; -export * from './form-grid-col'; -export * from './form-grid-row'; -export * from './form-item-grid'; -export * from './form-layout'; -export * from './form-mega-layout'; -export * from './form-description'; -export * from './form-step'; -export * from './form-text-box'; -export * from './form-slot'; -export * from './input'; -export * from './select'; -export * from './number-picker'; -export * from './password'; -export * from './radio'; -export * from './range'; -export * from './rating'; -export * from './upload'; -export * from './registry'; diff --git a/packages/app/src/components/fields/input/index.tsx b/packages/app/src/components/fields/input/index.tsx deleted file mode 100644 index b6c2acc5c..000000000 --- a/packages/app/src/components/fields/input/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import React from 'react'; -import { Input as AntdInput } from 'antd'; -import { acceptEnum, mapStyledProps, mapTextComponent } from '../shared'; - -export const Input = connect<'TextArea'>({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})( - acceptEnum(({ onChange, ...restProps }) => ( - { - // 文本字段,如果空要 null 处理 - onChange(e.target.value ? e : null); - }} - /> - )), -); - -Input.TextArea = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})( - acceptEnum(props => ( - - )), -); - -export default Input; diff --git a/packages/app/src/components/fields/input/style.ts b/packages/app/src/components/fields/input/style.ts deleted file mode 100644 index 6e18cbb4f..000000000 --- a/packages/app/src/components/fields/input/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/input/style/index'; diff --git a/packages/app/src/components/fields/markdown/index.tsx b/packages/app/src/components/fields/markdown/index.tsx deleted file mode 100644 index d75d71c9a..000000000 --- a/packages/app/src/components/fields/markdown/index.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import React from 'react'; -import { Input as AntdInput } from 'antd'; -import { acceptEnum, mapStyledProps, mapTextComponent } from '../shared'; - -export const Markdown = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})( - acceptEnum(props => ( - - )), -); - -export default Markdown; diff --git a/packages/app/src/components/fields/number-picker/index.tsx b/packages/app/src/components/fields/number-picker/index.tsx deleted file mode 100644 index 2949a427e..000000000 --- a/packages/app/src/components/fields/number-picker/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import { InputNumber } from 'antd'; -import { acceptEnum, mapStyledProps, mapTextComponent } from '../shared'; - -export const NumberPicker = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(acceptEnum(InputNumber)); - -export const Percent = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})( - acceptEnum(props => ( - (value ? `${value}%` : '')} - parser={value => value.replace('%', '')} - {...props} - /> - )), -); - -export default NumberPicker; diff --git a/packages/app/src/components/fields/number-picker/style.ts b/packages/app/src/components/fields/number-picker/style.ts deleted file mode 100644 index 212aeeab8..000000000 --- a/packages/app/src/components/fields/number-picker/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/input-number/style/index'; diff --git a/packages/app/src/components/fields/password/index.tsx b/packages/app/src/components/fields/password/index.tsx deleted file mode 100644 index d4c66c597..000000000 --- a/packages/app/src/components/fields/password/index.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { useState } from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import { Input } from 'antd'; -import { PasswordProps } from 'antd/lib/input'; -import { PasswordStrength } from '@formily/react-shared-components'; -import styled from 'styled-components'; -import { mapStyledProps } from '../shared'; - -export interface IPasswordProps extends PasswordProps { - checkStrength: boolean; -} - -export const Password = connect({ - getProps: mapStyledProps, -})(styled((props: IPasswordProps) => { - const { value, className, checkStrength, onChange, ...others } = props; - - return ( - - { - // 密码字段,如果没有设置不处理 - onChange(e.target.value ? e : undefined); - }} - /> - {checkStrength && ( - - {score => { - return ( -
-
-
-
-
-
-
- ); - }} - - )} - - ); -})` - .password-strength-wrapper { - background: #e0e0e0; - margin-bottom: 3px; - position: relative; - .div { - position: absolute; - z-index: 1; - height: 8px; - top: 0; - background: #fff; - width: 1px; - transform: translate(-50%, 0); - } - .div-1 { - left: 20%; - } - .div-2 { - left: 40%; - } - .div-3 { - left: 60%; - } - .div-4 { - left: 80%; - } - .password-strength-bar { - position: relative; - background-image: -webkit-linear-gradient(left, #ff5500, #ff9300); - transition: all 0.35s ease-in-out; - height: 8px; - width: 100%; - margin-top: 5px; - } - } -`); - -export default Password; diff --git a/packages/app/src/components/fields/password/style.ts b/packages/app/src/components/fields/password/style.ts deleted file mode 100644 index 6e18cbb4f..000000000 --- a/packages/app/src/components/fields/password/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/input/style/index'; diff --git a/packages/app/src/components/fields/permissions/index.tsx b/packages/app/src/components/fields/permissions/index.tsx deleted file mode 100644 index 9476aa0e0..000000000 --- a/packages/app/src/components/fields/permissions/index.tsx +++ /dev/null @@ -1,376 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import React, { useEffect, useState } from 'react'; -import { Input as AntdInput, Table, Checkbox, Select, Tag } from 'antd'; -import { acceptEnum, mapStyledProps, mapTextComponent } from '../shared'; -import api from '@/api-client'; -import { useRequest } from 'umi'; -import { useDynamicList } from 'ahooks'; -import findIndex from 'lodash/findIndex'; -import get from 'lodash/get'; -import set from 'lodash/set'; -import { DrawerSelectComponent } from '../drawer-select'; - -export const Permissions = {} as { Actions: any; Fields: any; Tabs: any }; - -Permissions.Actions = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(({ onChange, value = [], resourceKey, ...restProps }) => { - const { data = [], loading = true } = useRequest( - () => { - return api.resource('collections.actions').list({ - associatedKey: resourceKey, - perPage: -1, - }); - }, - { - refreshDeps: [resourceKey], - }, - ); - - return ( - { - return type === 'create' ? ( - 对新数据操作 - ) : ( - 对已有数据操作 - ); - }, - }, - { - title: '允许操作', - dataIndex: ['name'], - render: (val, record) => { - const values = [...(value || [])]; - const index = findIndex( - values, - (item: any) => - item && item.name === `${resourceKey}:${record.name}`, - ); - console.log(values); - return ( - = 0} - onChange={e => { - // const index = findIndex(values, (item: any) => item && item.name === `${resourceKey}:${record.name}`); - if (index >= 0) { - if (!e.target.checked) { - values.splice(index, 1); - } - } else { - values.push({ - name: `${resourceKey}:${record.name}`, - }); - } - onChange(values); - }} - /> - ); - }, - }, - { - title: '可操作的数据范围', - dataIndex: ['scope'], - render: (scope, record) => { - if (['filter', 'create'].indexOf(record.type) !== -1) { - return null; - } - const values = [...(value || [])]; - const index = findIndex( - values, - (item: any) => - item && item.name === `${resourceKey}:${record.name}`, - ); - console.log( - values, - index, - `${resourceKey}:${record.name}`, - get(values, [index, 'scope']), - ); - return ( - { - const values = [...(value || [])]; - const index = findIndex( - values, - (item: any) => - item && item.name === `${resourceKey}:${record.name}`, - ); - if (index === -1) { - values.push({ - name: `${resourceKey}:${record.name}`, - scope_id: data.id, - }); - } else { - set(values, [index, 'scope_id'], data.id); - } - console.log('valvalvalvalval', { values }); - onChange(values); - console.log('valvalvalvalval', data); - }} - /> - // { - // const values = [...value||[]]; - // const index = findIndex(values, (item: any) => item && item.name === `${resourceKey}:${record.name}`); - // if (index === -1) { - // values.push({ - // name: `${resourceKey}:${record.name}`, - // scope_id: data, - // }); - // } else { - // set(values, [index, 'scope_id'], data); - // } - // console.log('valvalvalvalval', {values}) - // onChange(values); - // console.log('valvalvalvalval', data); - // }} - // /> - ); - }, - }, - ]} - loading={loading} - /> - ); -}); - -Permissions.Fields = connect<'TextArea'>({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(({ onChange, value = [], resourceKey, ...restProps }) => { - const actions = {}; - value.forEach(item => { - actions[item.field_id] = item.actions; - }); - - // console.log(actions); - - const [fields, setFields] = useState(value || []); - - const { data = [], loading = true } = useRequest( - () => { - return api.resource('collections.fields').list({ - associatedKey: resourceKey, - perPage: -1, - }); - }, - { - refreshDeps: [resourceKey], - }, - ); - console.log({ resourceKey, data }); - - const columns = [ - { - title: '字段名称', - dataIndex: ['title'], - }, - ].concat( - [ - { - title: '查看', - action: `${resourceKey}:list`, - }, - { - title: '编辑', - action: `${resourceKey}:update`, - }, - { - title: '新增', - action: `${resourceKey}:create`, - }, - ].map(({ title, action }) => { - let checked = - value.filter(({ actions = [] }) => actions.indexOf(action) !== -1) - .length === data.length; - return { - title: ( - <> - { - const values = data.map(field => { - const items = actions[field.id] || []; - const index = items.indexOf(action); - if (index > -1) { - if (!e.target.checked) { - items.splice(index, 1); - } - } else { - if (e.target.checked) { - items.push(action); - } - } - return { - field_id: field.id, - actions: items, - }; - }); - // console.log(values); - setFields([...values]); - onChange([...values]); - }} - />{' '} - {title} - - ), - dataIndex: ['id'], - render: (val, record) => { - const items = actions[record.id] || []; - // console.log({items}, items.indexOf(action)); - return ( - { - const values = [...value]; - const index = findIndex( - values, - ({ field_id, actions = [] }) => { - return field_id === record.id; - }, - ); - if (e.target.checked && index === -1) { - values.push({ - field_id: record.id, - actions: [action], - }); - } else { - const items = values[index].actions || []; - const actionIndex = items.indexOf(action); - if (!e.target.checked && actionIndex > -1) { - items.splice(actionIndex, 1); - // values[index].actions = items; - } else if (e.target.checked && actionIndex === -1) { - items.push(action); - } - } - onChange(values); - setFields(values); - }} - /> - ); - }, - }; - }) as any, - ); - - return ( -
- ); -}); - -Permissions.Tabs = connect<'TextArea'>({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(({ onChange, value = [], resourceKey, ...restProps }) => { - const { data = [], loading = true, mutate } = useRequest( - () => { - return api.resource('collections.tabs').list({ - associatedKey: resourceKey, - perPage: -1, - }); - }, - { - refreshDeps: [resourceKey], - }, - ); - - // const [checked, setChecked] = useState(false); - - // console.log(checked); - - // useEffect(() => { - // setChecked(data.length === value.length); - // console.log({resourceKey, data, value}, data.length === value.lengh); - // }, [ - // data, - // ]); - - return ( -
- { - onChange( - e.target.checked ? data.map(record => record.id) : [], - ); - }} - />{' '} - 查看 - - ), - dataIndex: ['id'], - render: (val, record) => { - const values = [...value]; - return ( - { - const index = values.indexOf(record.id); - if (index !== -1) { - if (!e.target.checked) { - values.splice(index, 1); - } - } else { - values.push(record.id); - } - onChange(values); - }} - /> - ); - }, - }, - ]} - loading={loading} - /> - ); -}); diff --git a/packages/app/src/components/fields/radio/index.tsx b/packages/app/src/components/fields/radio/index.tsx deleted file mode 100644 index 1afaf726f..000000000 --- a/packages/app/src/components/fields/radio/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import { Radio as AntdRadio } from 'antd'; -import { - transformDataSourceKey, - mapStyledProps, - mapTextComponent, -} from '../shared'; - -export const Radio = connect<'Group'>({ - valueName: 'checked', - getProps: mapStyledProps, -})(AntdRadio); - -Radio.Group = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(transformDataSourceKey(AntdRadio.Group, 'options')); - -export default Radio; diff --git a/packages/app/src/components/fields/radio/style.ts b/packages/app/src/components/fields/radio/style.ts deleted file mode 100644 index 710205400..000000000 --- a/packages/app/src/components/fields/radio/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/radio/style/index'; diff --git a/packages/app/src/components/fields/range/index.tsx b/packages/app/src/components/fields/range/index.tsx deleted file mode 100644 index 7f48f469d..000000000 --- a/packages/app/src/components/fields/range/index.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; -import { Slider } from 'antd'; -import { connect } from '@formily/react-schema-renderer'; -import { mapStyledProps } from '../shared'; - -export interface ISliderMarks { - [key: number]: - | React.ReactNode - | { - style: React.CSSProperties; - label: React.ReactNode; - }; -} - -export declare type SliderValue = number | [number, number]; - -// TODO 并不是方法,最好能引用组件的 typescript 接口定义 -export interface ISliderProps { - min?: number; - max?: number; - marks?: ISliderMarks; - value?: SliderValue; - defaultValue?: SliderValue; - onChange?: (value: SliderValue) => void; -} - -export const Range = connect({ - defaultProps: { - style: { - width: 320, - }, - }, - getProps: mapStyledProps, -})( - class Component extends React.Component { - public render() { - const { onChange, value, min, max, marks, ...rest } = this.props; - let newMarks = {}; - if (Array.isArray(marks)) { - marks.forEach(mark => { - newMarks[mark] = mark; - }); - } else { - newMarks = marks; - } - return ( - - ); - } - }, -); - -export default Range; diff --git a/packages/app/src/components/fields/range/style.ts b/packages/app/src/components/fields/range/style.ts deleted file mode 100644 index 6db7cb7b1..000000000 --- a/packages/app/src/components/fields/range/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/slider/style/index'; diff --git a/packages/app/src/components/fields/rating/index.tsx b/packages/app/src/components/fields/rating/index.tsx deleted file mode 100644 index 7a28b9e36..000000000 --- a/packages/app/src/components/fields/rating/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import { Rate } from 'antd'; -import { mapStyledProps } from '../shared'; - -export const Rating = connect({ - getProps: mapStyledProps, -})(Rate); - -export default Rating; diff --git a/packages/app/src/components/fields/rating/style.ts b/packages/app/src/components/fields/rating/style.ts deleted file mode 100644 index f63c4f264..000000000 --- a/packages/app/src/components/fields/rating/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/rate/style/index'; diff --git a/packages/app/src/components/fields/registry.ts b/packages/app/src/components/fields/registry.ts deleted file mode 100644 index 21a4620d7..000000000 --- a/packages/app/src/components/fields/registry.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { registerFormFields } from '@formily/antd'; -import { TimePicker } from './time-picker'; -import { Transfer } from './transfer'; -import { Switch } from './switch'; -import { ArrayCards } from './array-cards'; -import { ArrayTable } from './array-table'; -import { Checkbox } from './checkbox'; -import { DatePicker } from './date-picker'; -import { Input } from './input'; -import { NumberPicker, Percent } from './number-picker'; -import { Password } from './password'; -import { Radio } from './radio'; -import { Range } from './range'; -import { Rating } from './rating'; -import { Upload } from './upload'; -import { Filter } from './filter'; -import { RemoteSelect } from './remote-select'; -import { DrawerSelect } from './drawer-select'; -import { SubTable } from './sub-table'; -import { Cascader } from './cascader'; -import { Icon } from './icons'; -import { ColorSelect } from './color-select'; -import { Permissions } from './permissions'; -import { Values } from './values'; -import { Automations } from './automations'; -import { Wysiwyg } from './wysiwyg'; -import { Markdown } from './markdown'; - -export const setup = () => { - registerFormFields({ - time: TimePicker, - timerange: TimePicker.RangePicker, - transfer: Transfer, - cascader: Cascader, - boolean: Checkbox, - switch: Switch, - checkbox: Checkbox, - array: ArrayCards, - cards: ArrayCards, - table: ArrayTable, - checkboxes: Checkbox.Group, - date: DatePicker, - daterange: DatePicker.RangePicker, - year: DatePicker.YearPicker, - month: DatePicker.MonthPicker, - week: DatePicker.WeekPicker, - string: Input, - select: Input, - icon: Icon, - textarea: Input.TextArea, - number: NumberPicker, - percent: Percent, - password: Password, - radio: Radio.Group, - range: Range, - rating: Rating, - upload: Upload, - filter: Filter, - remoteSelect: RemoteSelect, - drawerSelect: DrawerSelect, - colorSelect: ColorSelect, - subTable: SubTable, - values: Values, - wysiwyg: Wysiwyg, - markdown: Markdown, - 'permissions.actions': Permissions.Actions, - 'permissions.fields': Permissions.Fields, - 'permissions.tabs': Permissions.Tabs, - 'automations.datetime': Automations.DateTime, - 'automations.endmode': Automations.EndMode, - 'automations.cron': Automations.Cron, - }); -}; diff --git a/packages/app/src/components/fields/remote-select/index.tsx b/packages/app/src/components/fields/remote-select/index.tsx deleted file mode 100644 index 261e6d6e5..000000000 --- a/packages/app/src/components/fields/remote-select/index.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import React, { useEffect } from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import moment from 'moment'; -import { Select } from 'antd'; -import { - mapStyledProps, - mapTextComponent, - compose, - isStr, - isArr, -} from '../shared'; -import { useRequest } from 'umi'; -import api from '@/api-client'; -import { Spin } from '@/components/spin'; -import get from 'lodash/get'; - -function RemoteSelectComponent(props) { - let { - schema = {}, - value, - onChange, - disabled, - resourceName, - associatedKey, - filter, - labelField, - valueField, - objectValue, - placeholder, - multiple, - } = props; - console.log({ schema }); - if (!resourceName) { - resourceName = get(schema, 'component.resourceName'); - } - if (!filter) { - filter = get(schema, 'component.filter'); - } - if (!labelField) { - labelField = get(schema, 'component.labelField'); - } - if (!valueField) { - valueField = get(schema, 'component.valueField'); - } - if (!valueField) { - valueField = 'id'; - } - const { data = [], loading = true } = useRequest( - () => { - return api.resource(resourceName).list({ - associatedKey, - filter, - }); - }, - { - refreshDeps: [resourceName, associatedKey], - }, - ); - const selectProps: any = {}; - if (multiple) { - selectProps.mode = 'multiple'; - } - console.log({ data, props, associatedKey }); - return ( - <> - - - ); -} - -export const RemoteSelect = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(RemoteSelectComponent); - -export default RemoteSelect; diff --git a/packages/app/src/components/fields/select/index.tsx b/packages/app/src/components/fields/select/index.tsx deleted file mode 100644 index 07afbdc4e..000000000 --- a/packages/app/src/components/fields/select/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import { - Select as AntdSelect, - mapStyledProps, - mapTextComponent, -} from '../shared'; - -export const Select = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(AntdSelect); - -export default Select; diff --git a/packages/app/src/components/fields/select/style.ts b/packages/app/src/components/fields/select/style.ts deleted file mode 100644 index 62d31e950..000000000 --- a/packages/app/src/components/fields/select/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/select/style/index'; diff --git a/packages/app/src/components/fields/shared.tsx b/packages/app/src/components/fields/shared.tsx deleted file mode 100644 index abede87db..000000000 --- a/packages/app/src/components/fields/shared.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import React from 'react'; -import { mapTextComponent, mapStyledProps, normalizeCol } from '@formily/antd'; -import { Select as AntSelect } from 'antd'; -import { SelectProps as AntSelectProps } from 'antd/lib/select'; -import styled from 'styled-components'; -import { isArr, FormPath } from '@formily/shared'; -export * from '@formily/shared'; - -export const compose = (...args: any[]) => { - return (payload: any, ...extra: any[]) => { - return args.reduce((buf, fn) => { - return buf !== undefined ? fn(buf, ...extra) : fn(payload, ...extra); - }, payload); - }; -}; - -interface SelectOption { - label: React.ReactText; - value: any; - [key: string]: any; -} - -type SelectProps = AntSelectProps & { - dataSource?: SelectOption[]; -}; - -const createEnum = (enums: any) => { - if (isArr(enums)) { - return enums.map(item => { - if (typeof item === 'object') { - return { - ...item, - }; - } else { - return { - label: item, - value: item, - }; - } - }); - } - - return []; -}; - -export const Select: React.FC = styled((props: SelectProps) => { - const { dataSource = [], onChange, value, ...others } = props; - const children = createEnum(dataSource).map(item => { - const { label, value, key, children = [], ...others } = item; - if (children.length) { - return ( - - {children.map(({ value, label, ...others }: any) => ( - - {label} - - ))} - - ); - } - return ( - - {label} - - ); - }); - return ( - { - onChange( - value, - isArr(options) - ? options.map(item => ({ - ...item, - props: undefined, - })) - : { - ...options, - props: undefined, //干掉循环引用 - }, - ); - }} - > - {children} - - ); -})` - min-width: 100px; - width: 100%; -`; -export const acceptEnum = (component: React.JSXElementConstructor) => { - return ({ dataSource, ...others }) => { - if (dataSource) { - return React.createElement(Select, { dataSource, ...others }); - } else { - return React.createElement(component, others); - } - }; -}; - -export const transformDataSourceKey = (component, dataSourceKey) => { - return ({ dataSource, ...others }) => { - return React.createElement(component, { - [dataSourceKey]: dataSource, - ...others, - }); - }; -}; - -export const createMatchUpdate = (name: string, path: string) => ( - targetName: string, - targetPath: string, - callback: () => void, -) => { - if (targetName || targetPath) { - if (targetName) { - if (FormPath.parse(targetName).matchAliasGroup(name, path)) { - callback(); - } - } else if (targetPath) { - if (FormPath.parse(targetPath).matchAliasGroup(name, path)) { - callback(); - } - } - } else { - callback(); - } -}; - -export { mapTextComponent, mapStyledProps, normalizeCol }; diff --git a/packages/app/src/components/fields/sub-table/Table.tsx b/packages/app/src/components/fields/sub-table/Table.tsx deleted file mode 100644 index 11aee43e9..000000000 --- a/packages/app/src/components/fields/sub-table/Table.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react'; -import View from '@/components/views'; - -export interface SimpleTableProps { - schema?: any; - activeTab?: any; - resourceName: string; - associatedName?: string; - associatedKey?: string; - [key: string]: any; -} - -export function generateIndex(): string { - return `${Math.random() - .toString(36) - .replace('0.', '') - .slice(-4) - .padStart(4, '0')}`; -} - -export default function Table(props: SimpleTableProps) { - const { schema = {}, associatedKey, value, onChange, __index } = props; - const { collection_name, name } = schema; - const viewName = `${collection_name}.${name}.${schema.viewName || 'table'}`; - console.log({ props, associatedKey, schema, __index, viewName }); - return ( - <> - - - ); -} diff --git a/packages/app/src/components/fields/sub-table/index.tsx b/packages/app/src/components/fields/sub-table/index.tsx deleted file mode 100644 index a2ceb1a6f..000000000 --- a/packages/app/src/components/fields/sub-table/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React, { useRef } from 'react'; -import { connect } from '@formily/react-schema-renderer'; -import moment from 'moment'; -import { Select, Button, Table as AntdTable } from 'antd'; -import { - mapStyledProps, - mapTextComponent, - compose, - isStr, - isArr, -} from '../shared'; -import Table from './Table'; - -export const SubTable = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})(Table); - -export default SubTable; diff --git a/packages/app/src/components/fields/switch/index.tsx b/packages/app/src/components/fields/switch/index.tsx deleted file mode 100644 index 0c0de2ea5..000000000 --- a/packages/app/src/components/fields/switch/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Switch as AntdSwitch } from 'antd'; -import { connect } from '@formily/react-schema-renderer'; -import { acceptEnum, mapStyledProps } from '../shared'; - -export const Switch = connect({ - valueName: 'checked', - getProps: mapStyledProps, -})(acceptEnum(AntdSwitch)); - -export default Switch; diff --git a/packages/app/src/components/fields/switch/style.ts b/packages/app/src/components/fields/switch/style.ts deleted file mode 100644 index 29f0bcde1..000000000 --- a/packages/app/src/components/fields/switch/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/switch/style/index'; diff --git a/packages/app/src/components/fields/text-button/index.tsx b/packages/app/src/components/fields/text-button/index.tsx deleted file mode 100644 index 61b6cf390..000000000 --- a/packages/app/src/components/fields/text-button/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import { Button } from 'antd'; -import { ButtonProps } from 'antd/lib/button'; - -export const TextButton: React.FC = props => ( - - - )} - - {visible && ( - setVisible(false)} - onMovePrevRequest={() => { - setImgIndex((imgIndex + images.length - 1) % images.length); - }} - onMoveNextRequest={() => { - setImgIndex((imgIndex + 1) % images.length); - }} - /> - )} - - ); -}); - -export default Upload; diff --git a/packages/app/src/components/fields/upload/style.ts b/packages/app/src/components/fields/upload/style.ts deleted file mode 100644 index c8b5f6c84..000000000 --- a/packages/app/src/components/fields/upload/style.ts +++ /dev/null @@ -1 +0,0 @@ -import 'antd/lib/upload/style/index'; diff --git a/packages/app/src/components/fields/values/index.tsx b/packages/app/src/components/fields/values/index.tsx deleted file mode 100644 index 03ea20ec1..000000000 --- a/packages/app/src/components/fields/values/index.tsx +++ /dev/null @@ -1,495 +0,0 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import { - Button, - Select, - Input, - Space, - Form, - InputNumber, - DatePicker, - TimePicker, - Radio, -} from 'antd'; -import { PlusCircleOutlined, CloseCircleOutlined } from '@ant-design/icons'; -import useDynamicList from './useDynamicList'; -import { connect } from '@formily/react-schema-renderer'; -import { mapStyledProps } from '../shared'; -import get from 'lodash/get'; -import moment from 'moment'; -import './style.less'; -import api from '@/api-client'; -import { useRequest } from 'umi'; - -export function FilterGroup(props: any) { - const { - fields = [], - sourceFields = [], - onDelete, - onChange, - onAdd, - dataSource = [], - } = props; - const { list, getKey, push, remove, replace } = useDynamicList( - dataSource, - ); - let style: any = { - position: 'relative', - }; - return ( -
-
- {list.map((item, index) => { - // console.log(item); - // const Component = item.type === 'group' ? FilterGroup : FilterItem; - return ( -
- { - 1} - onChange={value => { - replace(index, value); - const newList = [...list]; - newList[index] = value; - onChange(newList); - // console.log(list, value, index); - }} - onDelete={() => { - remove(index); - const newList = [...list]; - newList.splice(index, 1); - onChange(newList); - // console.log(list, index); - }} - /> - } -
- ); - })} -
-
- - - -
-
- ); -} - -interface FieldOptions { - name: string; - title: string; - interface: string; - [key: string]: any; -} - -interface FilterItemProps { - fields: FieldOptions[]; - [key: string]: any; -} - -const OP_MAP = { - string: [ - { label: '包含', value: '$includes', selected: true }, - { label: '不包含', value: '$notIncludes' }, - { label: '等于', value: 'eq' }, - { label: '不等于', value: 'ne' }, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - number: [ - { label: '等于', value: 'eq', selected: true }, - { label: '不等于', value: 'ne' }, - { label: '大于', value: 'gt' }, - { label: '大于等于', value: 'gte' }, - { label: '小于', value: 'lt' }, - { label: '小于等于', value: 'lte' }, - // {label: '介于', value: 'between'}, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - file: [ - { label: '存在', value: 'id.gt' }, - { label: '不存在', value: 'id.$null' }, - ], - boolean: [ - { label: '是', value: '$isTruly', selected: true }, - { label: '否', value: '$isFalsy' }, - ], - select: [ - { label: '等于', value: 'eq', selected: true }, - { label: '不等于', value: 'ne' }, - { label: '包含', value: 'in' }, - { label: '不包含', value: 'notIn' }, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - multipleSelect: [ - { label: '等于', value: '$match', selected: true }, - { label: '不等于', value: '$notMatch' }, - { label: '包含', value: '$anyOf' }, - { label: '不包含', value: '$noneOf' }, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - ], - datetime: [ - { label: '等于', value: '$dateOn', selected: true }, - { label: '不等于', value: '$dateNotOn' }, - { label: '早于', value: '$dateBefore' }, - { label: '晚于', value: '$dateAfter' }, - { label: '不早于', value: '$dateNotBefore' }, - { label: '不晚于', value: '$dateNotAfter' }, - // {label: '介于', value: 'between'}, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - // {label: '是今天', value: 'now'}, - // {label: '在今天之前', value: 'before_today'}, - // {label: '在今天之后', value: 'after_today'}, - ], - time: [ - { label: '等于', value: 'eq', selected: true }, - { label: '不等于', value: 'neq' }, - { label: '大于', value: 'gt' }, - { label: '大于等于', value: 'gte' }, - { label: '小于', value: 'lt' }, - { label: '小于等于', value: 'lte' }, - // {label: '介于', value: 'between'}, - { label: '非空', value: '$notNull' }, - { label: '为空', value: '$null' }, - // {label: '是今天', value: 'now'}, - // {label: '在今天之前', value: 'before_today'}, - // {label: '在今天之后', value: 'after_today'}, - ], - // linkTo: [ - // {label: '包含', value: 'cont'}, - // {label: '不包含', value: 'ncont'}, - // {label: '非空', value: '$notNull'}, - // {label: '为空', value: '$null'}, - // ], -}; - -const op = { - string: OP_MAP.string, - textarea: OP_MAP.string, - number: OP_MAP.number, - percent: OP_MAP.number, - datetime: OP_MAP.datetime, - date: OP_MAP.datetime, - time: OP_MAP.time, - checkbox: OP_MAP.boolean, - boolean: OP_MAP.boolean, - select: OP_MAP.select, - multipleSelect: OP_MAP.multipleSelect, - checkboxes: OP_MAP.multipleSelect, - radio: OP_MAP.select, - upload: OP_MAP.file, - attachment: OP_MAP.file, -}; - -const StringInput = props => { - const { value, onChange, ...restProps } = props; - return ( - { - onChange(e.target.value); - }} - /> - ); -}; - -const controls = { - string: StringInput, - textarea: StringInput, - number: InputNumber, - percent: props => ( - (value ? `${value}%` : '')} - parser={value => value.replace('%', '')} - {...props} - /> - ), - boolean: BooleanControl, - checkbox: BooleanControl, - select: OptionControl, - radio: OptionControl, - checkboxes: OptionControl, - multipleSelect: OptionControl, - time: TimeControl, - date: DateControl, -}; - -function DateControl(props: any) { - const { field, value, onChange, ...restProps } = props; - let format = field.dateFormat; - // if (field.showTime) { - // format += ` ${field.timeFormat}`; - // } - const m = moment(value, format); - return ( - { - onChange(value ? value.format('YYYY-MM-DD') : null); - }} - /> - ); - // return ( - // { - // onChange(value ? value.format(field.showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD') : null) - // }}/> - // ); -} - -function TimeControl(props: any) { - const { field, value, onChange, ...restProps } = props; - let format = field.timeFormat; - const m = moment(value, format); - return ( - { - onChange(value ? value.format('HH:mm:ss') : null); - }} - /> - ); -} - -function OptionControl(props) { - const { multiple = true, op, options, value, onChange, ...restProps } = props; - let mode: any = 'multiple'; - if (!multiple && ['eq', 'ne'].indexOf(op) !== -1) { - mode = undefined; - } - return ( - - ); -} - -function BooleanControl(props) { - const { value, onChange, ...restProps } = props; - return ( - { - onChange(e.target.value); - }} - > - - - - ); -} - -function NullControl(props) { - return null; -} - -export function FilterItem(props: FilterItemProps) { - const { - index, - fields = [], - sourceFields = [], - showDeleteButton = true, - onDelete, - onChange, - } = props; - const [type, setType] = useState('string'); - const [field, setField] = useState({}); - const [dataSource, setDataSource] = useState(props.dataSource || {}); - useEffect(() => { - const field = fields.find(field => field.name === props.dataSource.column); - if (field) { - setField(field); - let componentType = field.component.type; - if (field.component.type === 'select' && field.multiple) { - componentType = 'multipleSelect'; - } - setType(componentType); - } - setDataSource({ ...props.dataSource }); - }, [props.dataSource, type]); - let ValueControl = controls[type] || controls.string; - if (['truncate'].indexOf(dataSource.op) !== -1) { - ValueControl = NullControl; - } else if (dataSource.op === 'ref') { - ValueControl = () => { - return ( - - ); - }; - } - // let multiple = true; - // if () - // const opOptions = op[type]||op.string; - const opOptions = [ - { label: '自定义填写', value: 'eq', selected: true }, - { label: '等于触发数据', value: 'ref' }, - { label: '清空数据', value: 'truncate' }, - ]; - console.log({ field, dataSource, type, ValueControl }); - return ( - - - - { - onChange({ ...dataSource, value: value }); - }} - style={{ width: 180 }} - /> - {showDeleteButton && ( - - )} - - ); -} - -export const Values = connect({ - getProps: mapStyledProps, -})(props => { - const { - value = [], - onChange, - associatedKey, - sourceName, - sourceFilter = {}, - filter = {}, - fields = [], - ...restProps - } = props; - - const { data = [], loading = true } = useRequest( - () => { - return associatedKey - ? api.resource(`collections.fields`).list({ - associatedKey, - filter, - }) - : Promise.resolve({ - data: fields, - }); - }, - { - refreshDeps: [associatedKey], - }, - ); - - const { data: sourceFields = [] } = useRequest( - () => { - return sourceName - ? api.resource(`collections.fields`).list({ - associatedKey: sourceName, - filter: sourceFilter, - }) - : Promise.resolve({ - data: [], - }); - }, - { - refreshDeps: [sourceName], - }, - ); - - return ( - Object.keys(item).length) - : [] - } - onChange={values => { - onChange(values.filter(item => Object.keys(item).length)); - }} - {...restProps} - fields={data} - sourceFields={sourceFields} - /> - ); -}); - -export default Values; diff --git a/packages/app/src/components/fields/values/style.less b/packages/app/src/components/fields/values/style.less deleted file mode 100644 index 54a1710ef..000000000 --- a/packages/app/src/components/fields/values/style.less +++ /dev/null @@ -1,3 +0,0 @@ -.filter-remove-link { - color: #d9d9d9; -} diff --git a/packages/app/src/components/fields/values/useDynamicList.ts b/packages/app/src/components/fields/values/useDynamicList.ts deleted file mode 100644 index 25aff4717..000000000 --- a/packages/app/src/components/fields/values/useDynamicList.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { useCallback, useRef, useState } from 'react'; - -export default (initialValue: T[]) => { - const counterRef = useRef(-1); - // key 存储器 - const keyList = useRef([]); - - // 内部方法 - const setKey = useCallback((index: number) => { - counterRef.current += 1; - keyList.current.splice(index, 0, counterRef.current); - }, []); - - const [list, setList] = useState(() => { - (initialValue || []).forEach((_, index) => { - setKey(index); - }); - return initialValue || []; - }); - - const resetList = (newList: T[] = []) => { - keyList.current = []; - counterRef.current = -1; - setList(() => { - (newList || []).forEach((_, index) => { - setKey(index); - }); - return newList || []; - }); - }; - - const insert = (index: number, obj: T) => { - setList(l => { - const temp = [...l]; - temp.splice(index, 0, obj); - setKey(index); - return temp; - }); - }; - - const getAll = () => list; - const getKey = (index: number) => keyList.current[index]; - const getIndex = (index: number) => - keyList.current.findIndex(ele => ele === index); - - const merge = (index: number, obj: T[]) => { - setList(l => { - const temp = [...l]; - obj.forEach((_, i) => { - setKey(index + i); - }); - temp.splice(index, 0, ...obj); - return temp; - }); - }; - - const replace = (index: number, obj: T) => { - setList(l => { - const temp = [...l]; - temp[index] = obj; - return temp; - }); - }; - - const remove = (index: number) => { - setList(l => { - const temp = [...l]; - temp.splice(index, 1); - - // remove keys if necessary - try { - keyList.current.splice(index, 1); - } catch (e) { - console.error(e); - } - return temp; - }); - }; - - const move = (oldIndex: number, newIndex: number) => { - if (oldIndex === newIndex) { - return; - } - setList(l => { - const newList = [...l]; - const temp = newList.filter((_: {}, index: number) => index !== oldIndex); - temp.splice(newIndex, 0, newList[oldIndex]); - - // move keys if necessary - try { - const keyTemp = keyList.current.filter( - (_: {}, index: number) => index !== oldIndex, - ); - keyTemp.splice(newIndex, 0, keyList.current[oldIndex]); - keyList.current = keyTemp; - } catch (e) { - console.error(e); - } - - return temp; - }); - }; - - const push = (obj: T) => { - setList(l => { - setKey(l.length); - return l.concat([obj]); - }); - }; - - const pop = () => { - // remove keys if necessary - try { - keyList.current = keyList.current.slice(0, keyList.current.length - 1); - } catch (e) { - console.error(e); - } - - setList(l => l.slice(0, l.length - 1)); - }; - - const unshift = (obj: T) => { - setList(l => { - setKey(0); - return [obj].concat(l); - }); - }; - - const sortForm = (result: unknown[]) => - result - .map((item, index) => ({ key: index, item })) // add index into obj - .sort((a, b) => getIndex(a.key) - getIndex(b.key)) // sort based on the index of table - .filter(item => !!item.item) // remove undefined(s) - .map(item => item.item); // retrive the data - - const shift = () => { - // remove keys if necessary - try { - keyList.current = keyList.current.slice(1, keyList.current.length); - } catch (e) { - console.error(e); - } - setList(l => l.slice(1, l.length)); - }; - - return { - list, - insert, - merge, - replace, - remove, - getAll, - getKey, - getIndex, - move, - push, - pop, - unshift, - shift, - sortForm, - resetList, - }; -}; diff --git a/packages/app/src/components/fields/wysiwyg/index.tsx b/packages/app/src/components/fields/wysiwyg/index.tsx deleted file mode 100644 index 0bf4e66f9..000000000 --- a/packages/app/src/components/fields/wysiwyg/index.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { connect } from '@formily/react-schema-renderer'; -import React from 'react'; -import { Input as AntdInput } from 'antd'; -import { acceptEnum, mapStyledProps, mapTextComponent } from '../shared'; - -export const Wysiwyg = connect({ - getProps: mapStyledProps, - getComponent: mapTextComponent, -})( - acceptEnum(props => ( - - )), -); - -export default Wysiwyg; diff --git a/packages/app/src/components/menu/index.tsx b/packages/app/src/components/menu/index.tsx deleted file mode 100644 index 7d4dc4df6..000000000 --- a/packages/app/src/components/menu/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { Layout, Menu, Breadcrumb } from 'antd'; -import { Link as UmiLink, useLocation } from 'umi'; -import Icon from '@/components/icons'; -import './style.less'; - -function pathcamp(path1: string, path2: string) { - return true; - if (path1 === path2) { - return true; - } - return path1.indexOf(`${path2}/`) === 0; -} - -function Link(props: any) { - const { to, children } = props; - if (/^http/.test(to)) { - return ( - - {children} - - ); - } - return ; -} - -export default (props: any) => { - const { - menuId, - currentPageName, - items = [], - hideChildren, - ...restProps - } = props; - if (items.length === 0) { - return null; - } - const toPaths = data => { - const paths = []; - data.forEach(item => { - if (item.path && item.path === currentPageName) { - paths.push(`${item.name}`); - } - if (item.paths && item.paths.includes(currentPageName)) { - paths.push(`${item.name}`); - } - paths.push(...toPaths(item.children || [])); - }); - return paths; - }; - const keys = toPaths(items); - console.log({ menuId, currentPageName, items, keys }); - const [loading, setLoading] = useState(true); - useEffect(() => { - setLoading(true); - setTimeout(() => { - setLoading(false); - }); - }, [menuId]); - if (loading) { - return null; - } - const renderChildren = items => { - return items.map(item => { - const { children = [] } = item; - // const subItems = children.filter(child => child.showInMenu); - if (!hideChildren && children.length) { - return ( - } - title={<>{item.title}} - > - {renderChildren(children)} - - ); - } - return ( - } - key={`${item.name}`} - > - {item.title} - - ); - }); - }; - return ( - { - console.log({ openKeys }); - }} - onSelect={info => { - console.log({ info }); - }} - onDeselect={info => { - console.log({ info }); - }} - {...restProps} - > - {renderChildren(items)} - - ); -}; diff --git a/packages/app/src/components/menu/style.less b/packages/app/src/components/menu/style.less deleted file mode 100644 index fc47ce22e..000000000 --- a/packages/app/src/components/menu/style.less +++ /dev/null @@ -1,7 +0,0 @@ -.ant-menu-sub.ant-menu-inline > .ant-menu-item, -.ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title { - height: 32px; - line-height: 32px; - margin: 4px 0; - font-size: 13px; -} diff --git a/packages/app/src/components/pages/AdminLoader/index.tsx b/packages/app/src/components/pages/AdminLoader/index.tsx deleted file mode 100644 index c81109f57..000000000 --- a/packages/app/src/components/pages/AdminLoader/index.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import api from '@/api-client'; -import { useRequest, useLocation, useHistory, Redirect } from 'umi'; -import get from 'lodash/get'; -import { TopMenuLayout } from '@/components/pages/TopMenuLayout'; -import { SideMenuLayout } from '@/components/pages/SideMenuLayout'; -import Page from '@/components/pages/Page'; -import pathToRegexp from 'path-to-regexp'; -import { Spin } from '@/components/spin'; - -export function AdminLoader(props: any) { - const { data = [], error, loading, run } = useRequest(() => - api.resource('menus').getTree(), - ); - (window as any).reloadMenu = async () => { - await run(); - }; - const { - lastPage: { path }, - } = props; - const location = useLocation(); - const match = pathToRegexp(`${path}/:path?/:rowId?/:tabId?`).exec( - location.pathname, - ); - const pageName = match[1] || null; - const history = useHistory(); - - const currentRowId = match[2] || null; - const items = data; - // .filter(item => item.type !== 'group' || (item.children && item.children.length)) - const sideMenu = items.find(item => { - if (item.paths && item.paths.includes(pageName)) { - return true; - } - return false; - }); - console.log({ pageName, sideMenu }); - - if (loading) { - return ; - } - - if (!pageName) { - return ; - } - - return ( - <> - - {sideMenu ? ( - - - - ) : ( - - )} - - - ); -} - -export default AdminLoader; diff --git a/packages/app/src/components/pages/AvatarDropdown/index.tsx b/packages/app/src/components/pages/AvatarDropdown/index.tsx deleted file mode 100644 index f69e7b976..000000000 --- a/packages/app/src/components/pages/AvatarDropdown/index.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import { Layout, Menu, Dropdown, Avatar } from 'antd'; -import './style.less'; -import { history, Link, request, useModel } from 'umi'; -import { - ProfileOutlined, - LogoutOutlined, - UserOutlined, - CodeOutlined, -} from '@ant-design/icons'; -import Icon from '@/components/icons'; -import { useResponsive } from 'ahooks'; - -const overlay = ( - - - 个人资料 - - - { - await request('/users:logout'); - localStorage.removeItem('NOCOBASE_TOKEN'); - (window as any).routesReload(); - history.push('/login'); - // window.location.href = '/login'; - }} - > - 退出登录 - - -); - -export default (props: any) => { - const { - initialState = {}, - loading, - error, - refresh, - setInitialState, - } = useModel('@@initialState'); - const responsive = useResponsive(); - const isMobile = responsive.small && !responsive.middle && !responsive.large; - const { currentUser = {} } = initialState as any; - return ( -
- - e.preventDefault()} - > - } - style={{ marginRight: 5 }} - />{' '} - { currentUser.nickname || currentUser.email } - - -
- ); -}; diff --git a/packages/app/src/components/pages/AvatarDropdown/style.less b/packages/app/src/components/pages/AvatarDropdown/style.less deleted file mode 100644 index 229bd0ca7..000000000 --- a/packages/app/src/components/pages/AvatarDropdown/style.less +++ /dev/null @@ -1,27 +0,0 @@ -.avatar-dropdown-wrapper { - position: absolute; - right: 0; - color: rgba(255, 255, 255, 0.65); - &:hover { - color: #fff; - background-color: rgba(255, 255, 255, 0.1); - } - .dropdown-link { - padding-left: 20px; - padding-right: 20px; - cursor: pointer; - } -} - -@media only screen and (max-width: 800px) { - .avatar-dropdown-wrapper { - bottom: 0; - left: 0; - right: auto; - width: 100%; - .dropdown-link { - display: block; - padding: 10px 20px; - } - } -} diff --git a/packages/app/src/components/pages/Page/index.tsx b/packages/app/src/components/pages/Page/index.tsx deleted file mode 100644 index 8caf6b567..000000000 --- a/packages/app/src/components/pages/Page/index.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import React from 'react'; -import { PageHeader, Card, Row, Col, Modal, message } from 'antd'; -import './style.less'; -import { Helmet, useHistory } from 'umi'; -import { Spin } from '@/components/spin'; -import { useRequest, useModel } from 'umi'; -import api from '@/api-client'; -import View from '@/components/views'; -import get from 'lodash/get'; -import { markdown } from '@/components/views/Field'; - -export function Page(props: any) { - const { currentRowId, pageName, children, ...restProps } = props; - const { initialState = {}, refresh, setInitialState } = useModel( - '@@initialState', - ); - const siteTitle = get(initialState, 'systemSettings.title'); - - const { data = {}, loading, error } = useRequest( - () => - api.resource('menus').getInfo({ - resourceKey: pageName, - }), - { - refreshDeps: [pageName], - }, - ); - - const history = useHistory(); - - if (error) { - return null; - } - - if (loading) { - return ; - } - - const views = data.views || []; - - return ( -
- - - {data.title} - {siteTitle} - - - -
-
- {views.map(view => { - let viewName: string; - let span = 24; - let float = 'left'; - if (typeof view === 'string') { - viewName = view; - } - if (typeof view === 'object') { - viewName = `${view.name}`; - if (view.width === '50%') { - span = 12; - } else if (view.width === '100%') { - span = 24; - } - if (view.float == 'right') { - float = 'right'; - } - } - return ( -
- { - if (!view.draft) { - message.success('草稿保存成功'); - return; - } - if (!view.draft.message) { - return; - } - Modal.success({ - title: '草稿保存成功', - content: ( -
- ), - onCancel: () => { - const path = get(view, 'redirect.name'); - path && history.push(`${path}`); - }, - onOk: () => { - const path = get(view, 'redirect.name'); - path && history.push(`${path}`); - }, - }); - }} - onFinish={() => { - if (!view.message) { - return; - } - Modal.success({ - title: '提交成功', - content: ( -
- ), - onOk: () => { - const path = get(view, 'redirect.name'); - path && history.push(`${path}`); - }, - onCancel: () => { - const path = get(view, 'redirect.name'); - path && history.push(`${path}`); - }, - }); - }} - viewName={viewName} - /> -
- ); - })} -
-
-
- ); -} - -export default Page; diff --git a/packages/app/src/components/pages/Page/style.less b/packages/app/src/components/pages/Page/style.less deleted file mode 100644 index c8d46a2ee..000000000 --- a/packages/app/src/components/pages/Page/style.less +++ /dev/null @@ -1,66 +0,0 @@ -.page-content { - margin: 24px; -} - -.env-root-push + style + div > div { - transform: translateX(-10%); -} - -.env-root-push + div > div { - transform: translateX(-10%); -} - -@media only screen and (max-width: 800px) { - .ant-row.nb-row { - margin: 0 !important; - .ant-col { - display: block; - flex: 0 0 100%; - max-width: 100%; - padding: 0 !important; - margin-bottom: 1px !important; - } - } -} - -.noco-row { - margin: 0 -12px; - &::after { - content: ' '; - clear: both; - display: block; - } - .noco-col { - margin-left: 12px; - margin-right: 12px; - margin-bottom: 24px; - width: calc(50% - 24px); - float: left; - } - .noco-col-24 { - width: calc(100% - 24px); - } - .float-left { - float: left; - clear: left; - } - .float-right { - float: right; - clear: right; - } -} - -@media only screen and (max-width: 800px) { - .page-content { - margin: 0; - margin-top: 1px; - } - .noco-row { - margin: 0; - .noco-col { - width: 100%; - margin: 0; - margin-bottom: 1px; - } - } -} \ No newline at end of file diff --git a/packages/app/src/components/pages/PageLoader.tsx b/packages/app/src/components/pages/PageLoader.tsx deleted file mode 100644 index 7d2bb03c0..000000000 --- a/packages/app/src/components/pages/PageLoader.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React, { useState } from 'react'; -import { TemplateLoader } from './TemplateLoader'; -import { useRequest } from 'umi'; -import { templates } from '@/pages'; -import api from '@/api-client'; - -export function PageLoader(props: any) { - const { path } = props.match.params; - const { data = {}, error, loading, run } = useRequest(() => - api.resource('pages').getRoutes(), - ); - const [first, setFirst] = useState(true); - (window as any).routesReload = async () => { - setFirst(false); - await run(); - }; - console.log(data); - return ( - - ); -} - -export default PageLoader; diff --git a/packages/app/src/components/pages/SideMenuLayout/index.tsx b/packages/app/src/components/pages/SideMenuLayout/index.tsx deleted file mode 100644 index a4d385de9..000000000 --- a/packages/app/src/components/pages/SideMenuLayout/index.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import React, { useState } from 'react'; -import { Layout, Breadcrumb, Drawer } from 'antd'; -import { Link } from 'umi'; -import Menu from '@/components/menu'; -import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons'; -import { useLocalStorageState } from 'ahooks'; -import { useResponsive } from 'ahooks'; -import './style.less'; - -export function SideMenuLayout(props: any) { - const { currentPageName, menu = [], menuId } = props; - const [visible, setVisible] = useState(false); - // console.log(menu); - const [collapsed, setCollapsed] = useLocalStorageState( - `nocobase-menu-collapsed-${menuId}`, - false, - ); - const responsive = useResponsive(); - const isMobile = responsive.small && !responsive.middle && !responsive.large; - document.body.className = collapsed ? 'collapsed' : ''; - return ( - - {!isMobile && ( - - -
{ - setCollapsed(!collapsed); - setVisible(true); - document.body.className = collapsed ? 'collapsed' : ''; - }} - className={'menu-toggle'} - > - {React.createElement( - collapsed ? MenuUnfoldOutlined : MenuFoldOutlined, - { - style: { fontSize: 16 }, - }, - )} -
- - )} - - {props.children} - {isMobile && ( - { - setCollapsed(!collapsed); - setVisible(false); - document.body.className = collapsed ? 'collapsed' : ''; - }} - placement={'left'} - closable={false} - bodyStyle={{ padding: 0 }} - > - { - setCollapsed(false); - setVisible(false); - document.body.className = collapsed ? 'collapsed' : ''; - }} - currentPageName={currentPageName} - menuId={menuId} - items={menu} - mode={'inline'} - /> - - )} - {isMobile && ( -
{ - setCollapsed(!collapsed); - setVisible(true); - document.body.className = collapsed ? 'collapsed' : ''; - }} - className={'menu-toggle'} - > - {React.createElement( - collapsed ? MenuUnfoldOutlined : MenuFoldOutlined, - { - style: { fontSize: 16 }, - }, - )} -
- )} - - - ); -} - -export default SideMenuLayout; diff --git a/packages/app/src/components/pages/SideMenuLayout/style.less b/packages/app/src/components/pages/SideMenuLayout/style.less deleted file mode 100644 index 391ba1df7..000000000 --- a/packages/app/src/components/pages/SideMenuLayout/style.less +++ /dev/null @@ -1,21 +0,0 @@ -.nb-sider { - position: relative; - left: 0; - z-index: 100; - box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05); - &.collapsed { - margin-left: -200px; - } - .ant-menu-light { - border-right-color: transparent !important; - } -} - -.menu-toggle { - position: fixed; - bottom: 12px; - left: 12px; - line-height: 1; - cursor: pointer; - z-index: 1000; -} diff --git a/packages/app/src/components/pages/TemplateLoader.tsx b/packages/app/src/components/pages/TemplateLoader.tsx deleted file mode 100644 index 4ab965f52..000000000 --- a/packages/app/src/components/pages/TemplateLoader.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react'; -import { Redirect } from 'umi'; -import get from 'lodash/get'; -import { Spin } from '@/components/spin'; -// import { CollectionLoader } from './CollectionLoader'; - -function getRoutes(path: string, pages: any) { - const keys = path.split('/'); - const routes: Array = []; - while (keys.length) { - const uri = keys.join('/'); - if (pages[uri]) { - routes.push({ ...pages[uri], path: uri }); - } - keys.pop(); - } - if (path && pages['/']) { - routes.push({ ...pages['/'], path: '/' }); - } - return routes; -} - -export function TemplateLoader(props: any) { - const { loading, pathname, pages, templates } = props; - if (loading) { - return ; - } - const redirect = get(pages, [pathname, 'redirect']); - if (redirect) { - return ; - } - const routes = getRoutes(pathname, pages); - let component: any; - console.log(templates); - const len = routes.length; - const componentProps = { ...props }; - while (routes.length) { - const route = routes.shift(); - console.log(route.template); - // const tmp = route.template.replace(/^@\/pages\//g, ''); - let Component: any; - // const Component = route.type === 'collection' - // ? CollectionLoader - // : require(`@/pages/${tmp}`).default; - if (route.type === 'collection') { - Component = (props) => { - return
- }; - componentProps.match.params['collection'] = route.collection; - } else { - Component = templates[route.template]; - } - if (len === routes.length + 1) { - componentProps.match.params['pagepath'] = route.path.replace(/^\//g, ''); - componentProps['lastPage'] = route; - } - componentProps['page'] = route; - component = ( - - {component} - - ); - if (route.inherit === false) { - break; - } - } - return component; -} - -export default TemplateLoader; diff --git a/packages/app/src/components/pages/TopMenuLayout/index.tsx b/packages/app/src/components/pages/TopMenuLayout/index.tsx deleted file mode 100644 index 9910e9186..000000000 --- a/packages/app/src/components/pages/TopMenuLayout/index.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { useState } from 'react'; -import { Layout, Dropdown, Avatar, Drawer } from 'antd'; -import './style.less'; -import { history, Link, request, useModel } from 'umi'; -import { UserOutlined, CodeOutlined, MenuOutlined } from '@ant-design/icons'; -import AvatarDropdown from '@/components/pages/AvatarDropdown'; -import Menu from '@/components/menu'; -import { useResponsive, useLocalStorageState } from 'ahooks'; -import get from 'lodash/get'; - -export function TopMenuLayout(props: any) { - const { currentPageName, menu = [] } = props; - console.log({ menu }); - // const [visible, setVisible] = useState(false); - const [visible, setVisible] = useLocalStorageState( - `nocobase-nav-visible`, - false, - ); - const responsive = useResponsive(); - const isMobile = responsive.small && !responsive.middle && !responsive.large; - const { - initialState = {}, - loading, - error, - refresh, - setInitialState, - } = useModel('@@initialState'); - const logoUrl = get(initialState, 'systemSettings.logo.url'); - console.log({ logoUrl }); - return ( - - -
- {logoUrl && } -
- {!isMobile && ( - - )} - {!isMobile && } - {isMobile && ( - { - setVisible(true); - }} - style={{ - fontSize: 16, - color: '#fff', - position: 'absolute', - right: 16, - top: 16, - }} - /> - )} - {isMobile && ( - { - setVisible(false); - }} - placement={'right'} - closable={false} - bodyStyle={{ background: '#001529', padding: 0 }} - > - { - setVisible(false); - }} - mode={'inline'} - hideChildren={true} - items={menu} - className={'noco-top-menu'} - style={{ float: 'left' }} - theme="dark" - /> - - - )} - - {props.children} - - ); -} - -export default TopMenuLayout; diff --git a/packages/app/src/components/pages/TopMenuLayout/logo-blue.svg b/packages/app/src/components/pages/TopMenuLayout/logo-blue.svg deleted file mode 100644 index 80b9f1bbb..000000000 --- a/packages/app/src/components/pages/TopMenuLayout/logo-blue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/app/src/components/pages/TopMenuLayout/logo-white.svg b/packages/app/src/components/pages/TopMenuLayout/logo-white.svg deleted file mode 100644 index 475f38e7d..000000000 --- a/packages/app/src/components/pages/TopMenuLayout/logo-white.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/app/src/components/pages/TopMenuLayout/logo.svg b/packages/app/src/components/pages/TopMenuLayout/logo.svg deleted file mode 100644 index 1aa836ce4..000000000 --- a/packages/app/src/components/pages/TopMenuLayout/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/app/src/components/pages/TopMenuLayout/style.less b/packages/app/src/components/pages/TopMenuLayout/style.less deleted file mode 100644 index 58e2850db..000000000 --- a/packages/app/src/components/pages/TopMenuLayout/style.less +++ /dev/null @@ -1,37 +0,0 @@ -.logo { - // font-family: 'Michroma', sans-serif; - color: rgba(255, 255, 255, 0.8); - font-size: 18px; - letter-spacing: 2px; - font-weight: 300; - padding: 0 15px; - img { - height: 100%; - } - svg { - margin-top: 12px; - } -} - -body { - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.noco-top-menu.ant-menu-dark.ant-menu-horizontal > .ant-menu-item:hover, -.noco-top-menu.ant-menu.ant-menu-dark .ant-menu-item-selected, -.noco-top-menu.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected { - background-color: rgba(255, 255, 255, 0.1); -} - -.ant-layout-content { - overflow: auto; -} - -.ant-layout-header { - display: flex; -} - -.ant-menu-dark.ant-menu-horizontal { - margin-right: 100px; -} diff --git a/packages/app/src/components/pages/index.tsx b/packages/app/src/components/pages/index.tsx deleted file mode 100644 index 413de02d9..000000000 --- a/packages/app/src/components/pages/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export { PageLoader } from './PageLoader'; -export { TemplateLoader } from './TemplateLoader'; -export { PageLoader as default } from './PageLoader'; diff --git a/packages/app/src/components/pages/style.less b/packages/app/src/components/pages/style.less deleted file mode 100644 index 0544bb7f9..000000000 --- a/packages/app/src/components/pages/style.less +++ /dev/null @@ -1,20 +0,0 @@ -.page-content { - margin: 24px; -} - -.popover-button-mask { - height: 100vh; - width: 100vw; - z-index: -1; - position: fixed; - background-color: rgba(0, 0, 0, 0.45); - top: 0px; - left: 0px; -} - -@media only screen and (max-width: 800px) { - #content .page-content { - margin: 0px; - margin-top: 1px; - } -} diff --git a/packages/app/src/components/spin/index.tsx b/packages/app/src/components/spin/index.tsx deleted file mode 100644 index edd588d3d..000000000 --- a/packages/app/src/components/spin/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import { Spin as AntdSpin } from 'antd'; -import { LoadingOutlined } from '@ant-design/icons'; - -export const icon = ; - -export function Spin(props: any) { - return ( - - ); -} diff --git a/packages/app/src/components/views/Association.tsx b/packages/app/src/components/views/Association.tsx deleted file mode 100644 index 77d5f058d..000000000 --- a/packages/app/src/components/views/Association.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import './style.less'; -import { Helmet } from 'umi'; -import { Spin } from '@/components/spin'; -import { useRequest, useLocation } from 'umi'; -import api from '@/api-client'; -import { Actions } from '@/components/actions'; -import { - Table as AntdTable, - Card, - Pagination, - Button, - Tabs, - Descriptions, - Tooltip, -} from 'antd'; -import { LoadingOutlined } from '@ant-design/icons'; -import ReactDragListView from 'react-drag-listview'; -import arrayMove from 'array-move'; -import get from 'lodash/get'; -import Drawer from '@/components/drawer'; -import Field from '@/components/views/Field'; -import { Form } from './Form'; -import { View } from '.'; - -export function Association(props) { - const { schema = {}, ...restProps } = props; - const { targetViewName } = schema; - return ( -
- -
- ); -} diff --git a/packages/app/src/components/views/Calendar/index.tsx b/packages/app/src/components/views/Calendar/index.tsx deleted file mode 100644 index 45b1b846d..000000000 --- a/packages/app/src/components/views/Calendar/index.tsx +++ /dev/null @@ -1,272 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react'; -import { Table as AntdTable, Card, Pagination } from 'antd'; -import { useRequest, useHistory } from 'umi'; -import api from '@/api-client'; -import { - LoadingOutlined, - LeftOutlined, - RightOutlined, -} from '@ant-design/icons'; -import './style.less'; -import { Calendar as BigCalendar, momentLocalizer } from 'react-big-calendar'; -import * as dates from 'react-big-calendar/lib/utils/dates'; -import moment from 'moment'; -const localizer = momentLocalizer(moment); // or globalizeLocalizer -import Drawer from '@/components/drawer'; -import { Details, DetailsPage } from '../Table'; -import { Actions } from '@/components/actions'; - -export const icon = ; - -export interface CalendarProps { - schema?: any; - activeTab?: any; - resourceName: string; - associatedName?: string; - associatedKey?: string; - [key: string]: any; -} - -// let weekRangeFormat = ({ start, end }, culture, local) => -// local.format(start, 'MMMM DD', culture) + -// ' – ' + -// local.format(end, dates.eq(start, end, 'month') ? 'DD' : 'MMMM DD', culture) - -function toEvents(data, options: any = {}) { - const { startDateField, endDateField, labelField, idField = 'id' } = options; - if (!Array.isArray(data)) { - return []; - } - return data.map(item => ({ - id: item[idField], - title: item[labelField], - allDay: true, - start: moment( - item[startDateField || 'createdAt'] || item.created_at, - ).toDate(), - end: moment( - item[endDateField || startDateField || 'createdAt'] || item.created_at, - ).toDate(), - })); -} - -export function Calendar(props: CalendarProps) { - const { schema = {}, associatedKey, defaultFilter } = props; - - const paginated = false; - - const { - rowKey = 'id', - filter: schemaFilter, - sort, - appends, - resourceName, - labelField, - startDateField, - endDateField, - detailsOpenMode, - details = [], - actions = [], - } = schema; - - console.log({ schema }); - - const [calendarView, setCalendarView] = useState('month'); - - const history = useHistory(); - - const { data, loading, mutate, refresh, run, params } = useRequest( - (params = {}, ...args) => { - const { current, pageSize, sorter, filter, ...restParams } = params as any; - console.log('paramsparamsparamsparamsparams', params, args); - return api - .resource(resourceName) - .list({ - associatedKey, - page: paginated ? current : 1, - perPage: paginated ? pageSize : -1, - sorter, - sort, - 'fields[appends]': appends, - // filter, - // ...actionDefaultParams, - filter: { - and: [ - defaultFilter, - schemaFilter, - filter, - // __parent ? { - // collection_name: __parent, - // } : null, - ].filter(obj => obj && Object.keys(obj).length), - }, - // ...args2, - }) - .then(({ data = [], meta = {} }) => { - return { - data: { - list: data, - total: meta.count || data.length, - }, - }; - }); - }, - { - paginated, - }, - ); - - const events = toEvents(data?.list, { - idField: rowKey, - labelField, - startDateField, - endDateField, - }); - - const messages = { - allDay: '', - previous: ( -
- -
- ), - next: ( -
- -
- ), - today: '今天', - month: '月', - week: '周', - day: '天', - agenda: '列表', - date: '日期', - time: '时间', - event: '事件', - noEventsInRange: '无', - showMore: count => `还有 ${count} 项`, - }; - - console.log('events', data); - return ( -
- - { - if (dates.eq(start, end, 'month')) { - return local.format(start, 'Y年M月', culture); - } - return `${local.format(start, 'Y年M月', culture)} - ${local.format( - end, - 'Y年M月', - culture, - )}`; - }, - }} - events={events} - onSelectSlot={slotInfo => { - // setFormMode('create'); - // drawerRef.current.setVisible(true); - // console.log('onSelectSlot', slotInfo) - }} - onView={view => { - setCalendarView(view); - console.log(view); - }} - onSelectEvent={data => { - console.log({ data }); - if (!detailsOpenMode || !details.length) { - return; - } - if (detailsOpenMode === 'window') { - const paths = history.location.pathname.split('/'); - history.push(`/admin/${paths[2]}/${data[rowKey]}/0`); - } else { - Drawer.open({ - headerStyle: - details.length > 1 - ? { - paddingBottom: 0, - borderBottom: 0, - // paddingTop: 16, - // marginBottom: -4, - } - : {}, - // title: details.length > 1 ? undefined : data[labelField], - title: data.title, - bodyStyle: { - // padding: 0, - }, - content: ({ resolve, closeWithConfirm }) => ( -
-
{ - await refresh(); - resolve(); - }} - onValueChange={() => { - closeWithConfirm && closeWithConfirm(true); - }} - onDraft={async () => { - await refresh(); - resolve(); - }} - onReset={resolve} - onDataChange={async () => { - await refresh(); - }} - data={data} - resolve={resolve} - items={details} - /> -
- ), - }); - } - }} - onRangeChange={range => { - console.log({ range }); - }} - views={['month', 'week', 'day']} - // step={120} - // showMultiDayTimes - // max={dates.add(dates.endOf(new Date(2015, 17, 1), 'day'), -1, 'hours')} - // defaultDate={new Date(2015, 3, 1)} - components={{ - timeGutterHeader: () =>
全天
, - }} - localizer={localizer} - /> -
- ); -} diff --git a/packages/app/src/components/views/Calendar/style.less b/packages/app/src/components/views/Calendar/style.less deleted file mode 100644 index 01fe7d9dc..000000000 --- a/packages/app/src/components/views/Calendar/style.less +++ /dev/null @@ -1,771 +0,0 @@ -@charset "UTF-8"; -.rbc-btn { - color: inherit; - font: inherit; - margin: 0; -} - -button.rbc-btn { - overflow: visible; - text-transform: none; - -webkit-appearance: button; - cursor: pointer; -} - -button[disabled].rbc-btn { - cursor: not-allowed; -} - -button.rbc-input::-moz-focus-inner { - border: 0; - padding: 0; -} - -.rbc-calendar { - box-sizing: border-box; - display: flex; - flex-direction: column; - align-items: stretch; - &.view-month { - height: 75vh; - } -} - -.rbc-calendar *, -.rbc-calendar *:before, -.rbc-calendar *:after { - box-sizing: inherit; -} - -.rbc-abs-full, -.rbc-row-bg { - overflow: hidden; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.rbc-ellipsis, -.rbc-event-label, -.rbc-row-segment .rbc-event-content, -.rbc-show-more { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.rbc-rtl { - direction: rtl; -} - -.rbc-off-range { - color: rgba(0, 0, 0, 0.25); -} - -.rbc-off-range-bg { - // background: #e6e6e6; -} - -.rbc-header { - // font-size: 16px; - overflow: hidden; - flex: 1 0 0%; - text-overflow: ellipsis; - white-space: nowrap; - padding: 4px 12px; - text-align: right; - vertical-align: middle; - // font-weight: 500; - min-height: 32px; - color: rgba(0, 0, 0, 0.85); - margin: 0 4px; - border-bottom: 2px solid #f0f0f0; -} -.rbc-header + .rbc-header { - // border-left: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-header + .rbc-header { - border-left-width: 0; - border-right: 1px solid #f0f0f0; -} -.rbc-header > a, -.rbc-header > a:active, -.rbc-header > a:visited { - color: inherit; - text-decoration: none; -} - -.rbc-row-content { - position: relative; - user-select: none; - -webkit-user-select: none; - z-index: 4; -} - -.rbc-row-content-scrollable { - display: flex; - flex-direction: column; - height: 100%; -} -.rbc-row-content-scrollable .rbc-row-content-scroll-container { - height: 100%; - overflow-y: scroll; - /* Hide scrollbar for Chrome, Safari and Opera */ - -ms-overflow-style: none; - /* IE and Edge */ - scrollbar-width: none; - /* Firefox */ -} -.rbc-row-content-scrollable - .rbc-row-content-scroll-container::-webkit-scrollbar { - display: none; -} - -.rbc-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: center; - margin-bottom: 10px; - font-size: 16px; -} -.rbc-toolbar .rbc-toolbar-label { - flex-grow: 1; - padding: 0 10px; - text-align: center; -} -.rbc-toolbar button { - outline: none; - font-size: 14px; - line-height: 1.5715; - height: 32px; - color: #373a3c; - display: inline-block; - margin: 0; - position: relative; - z-index: 1; - text-align: center; - vertical-align: middle; - background: none; - background-image: none; - border: 1px solid #d9d9d9; - padding: 4px 15px; - border-radius: 2px; - line-height: normal; - white-space: nowrap; -} -.rbc-toolbar button:active, -.rbc-toolbar button.rbc-active { - // background-image: none; - // box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - // background-color: #e6e6e6; - z-index: 2; - color: #1890ff; - border-color: #1890ff; -} -.rbc-toolbar button:active:hover, -.rbc-toolbar button:active:focus, -.rbc-toolbar button.rbc-active:hover, -.rbc-toolbar button.rbc-active:focus { - // color: #373a3c; - // background-color: #d4d4d4; - // border-color: #8c8c8c; - z-index: 2; - color: #40a9ff; - border-color: #40a9ff; -} -// .rbc-toolbar button:focus { -// color: #373a3c; -// background-color: #e6e6e6; -// border-color: #adadad; } -.rbc-toolbar button:hover { - // color: #373a3c; - // background-color: #e6e6e6; - z-index: 2; - color: #40a9ff; - border-color: #40a9ff; -} - -.rbc-btn-group { - display: inline-block; - white-space: nowrap; -} -.rbc-btn-group > button:first-child:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.rbc-btn-group > button:last-child:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.rbc-rtl .rbc-btn-group > button:first-child:not(:last-child) { - border-radius: 4px; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.rbc-rtl .rbc-btn-group > button:last-child:not(:first-child) { - border-radius: 4px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.rbc-btn-group > button:not(:first-child):not(:last-child) { - border-radius: 0; -} -.rbc-btn-group button + button { - margin-left: -1px; -} -.rbc-rtl .rbc-btn-group button + button { - margin-left: 0; - margin-right: -1px; -} -.rbc-btn-group + .rbc-btn-group, -.rbc-btn-group + button { - margin-left: 10px; -} - -.rbc-event { - border: none; - box-sizing: border-box; - box-shadow: none; - margin: 0; - padding: 2px 5px; - background-color: #f0f0f0; - border-radius: 2px; - // color: #1890ff; - cursor: pointer; - font-size: 12px; - width: 100%; - text-align: left; - &:hover { - background-color: #e6f7ff; - color: #1890ff; - } -} -.rbc-slot-selecting .rbc-event { - cursor: inherit; - pointer-events: none; -} -.rbc-event.rbc-selected { - background-color: #e6f7ff; - color: #1890ff; -} -.rbc-event:focus { - // outline: 5px auto #3b99fc; -} - -.rbc-event-label { - font-size: 80%; -} - -.rbc-event-overlaps { - box-shadow: -1px 1px 5px 0px rgba(51, 51, 51, 0.5); -} - -.rbc-event-continues-prior { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.rbc-event-continues-after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.rbc-event-continues-earlier { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.rbc-event-continues-later { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.rbc-row { - display: flex; - flex-direction: row; -} - -.rbc-row-segment { - padding: 0 4px 1px 4px; -} - -.rbc-selected-cell { - background-color: rgba(0, 0, 0, 0.1); -} - -.rbc-show-more { - z-index: 4; - font-weight: bold; - font-size: 85%; - height: auto; - line-height: normal; - color: inherit; - padding: 2px 5px; -} - -.rbc-month-view { - position: relative; - // border: 1px solid #f0f0f0; - display: flex; - flex-direction: column; - flex: 1 0 0; - width: 100%; - user-select: none; - -webkit-user-select: none; - height: 68vh; -} - -.rbc-month-header { - display: flex; - flex-direction: row; -} - -.rbc-month-row { - display: flex; - position: relative; - flex-direction: column; - flex: 1 0 0; - flex-basis: 0px; - overflow: hidden; - height: 100%; -} -.rbc-month-row + .rbc-month-row { - // border-top: 1px solid #f0f0f0; -} - -.rbc-date-cell { - // cursor: pointer; - flex: 1 1 0; - min-width: 0; - padding-right: 12px; - padding-top: 4px; - text-align: right; -} -.rbc-date-cell.rbc-now a { - // font-weight: bold; - color: #1890ff; -} -.rbc-date-cell > a, -.rbc-date-cell > a:active, -.rbc-date-cell > a:visited { - color: inherit; - text-decoration: none; -} -.rbc-date-cell > a:hover { - color: #1890ff; -} - -.rbc-row-bg { - display: flex; - flex-direction: row; - flex: 1 0 0; - overflow: hidden; -} - -.rbc-day-bg { - flex: 1 0 0%; - // border-top: 2px solid #f0f0f0; - margin: 0 4px; - &:hover { - background: #f5f5f5; - } - // cursor: pointer; -} - -.rbc-month-view { - .rbc-day-bg { - border-top: 2px solid #f0f0f0; - } - .rbc-today { - border-color: #1890ff !important; - background-color: #e6f7ff !important; - } - .rbc-header { - border-bottom: 0 !important; - } -} - -.rbc-day-bg + .rbc-day-bg { - // margin-left: 8px; - // border-left: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-day-bg + .rbc-day-bg { - // border-left-width: 0; - // border-right: 1px solid #f0f0f0; -} - -.rbc-overlay { - position: absolute; - z-index: 5; - margin-top: 5px; - border-radius: 2px; - // border: 1px solid #e5e5e5; - background-color: #fff; - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), - 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - padding: 12px 16px; -} -.rbc-overlay > * + * { - margin-top: 1px; -} - -.rbc-overlay-header { - font-weight: 500; - min-height: 32px; - border-bottom: 1px solid #f0f0f0; - margin: -12px -16px 12px -16px; - padding: 5px 16px 4px; -} - -.rbc-agenda-view { - display: flex; - flex-direction: column; - flex: 1 0 0; - overflow: auto; -} -.rbc-agenda-view table.rbc-agenda-table { - width: 100%; - border: 1px solid #f0f0f0; - border-spacing: 0; - border-collapse: collapse; -} -.rbc-agenda-view table.rbc-agenda-table tbody > tr > td { - padding: 5px 10px; - vertical-align: top; -} -.rbc-agenda-view table.rbc-agenda-table .rbc-agenda-time-cell { - padding-left: 15px; - padding-right: 15px; - text-transform: lowercase; -} -.rbc-agenda-view table.rbc-agenda-table tbody > tr > td + td { - border-left: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-agenda-view table.rbc-agenda-table tbody > tr > td + td { - border-left-width: 0; - border-right: 1px solid #f0f0f0; -} -.rbc-agenda-view table.rbc-agenda-table tbody > tr + tr { - border-top: 1px solid #f0f0f0; -} -.rbc-agenda-view table.rbc-agenda-table thead > tr > th { - padding: 3px 5px; - text-align: left; - border-bottom: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-agenda-view table.rbc-agenda-table thead > tr > th { - text-align: right; -} - -.rbc-agenda-time-cell { - text-transform: lowercase; -} -.rbc-agenda-time-cell .rbc-continues-after:after { - content: ' »'; -} -.rbc-agenda-time-cell .rbc-continues-prior:before { - content: '« '; -} - -.rbc-agenda-date-cell, -.rbc-agenda-time-cell { - white-space: nowrap; -} - -.rbc-agenda-event-cell { - width: 100%; -} - -.rbc-time-column { - display: flex; - flex-direction: column; - min-height: 100%; -} -.rbc-time-column .rbc-timeslot-group { - flex: 1; -} - -.rbc-timeslot-group { - border-bottom: 1px solid #f0f0f0; - min-height: 40px; - line-height: 39px; - display: flex; - flex-flow: column nowrap; - // cursor: pointer; - &:hover { - background: #f0f0f0; - } -} - -.rbc-time-gutter, -.rbc-header-gutter { - flex: none; -} - -.rbc-label { - padding: 0 5px; -} - -.rbc-day-slot { - position: relative; -} -.rbc-day-slot .rbc-events-container { - bottom: 0; - left: 0; - position: absolute; - right: 0; - margin-right: 10px; - top: 0; -} -.rbc-day-slot .rbc-events-container.rbc-rtl { - left: 10px; - right: 0; -} -.rbc-day-slot .rbc-event { - border: 1px solid #265985; - display: flex; - max-height: 100%; - min-height: 20px; - flex-flow: column wrap; - align-items: flex-start; - overflow: hidden; - position: absolute; -} -.rbc-day-slot .rbc-event-label { - flex: none; - padding-right: 5px; - width: auto; -} -.rbc-day-slot .rbc-event-content { - width: 100%; - flex: 1 1 0; - word-wrap: break-word; - line-height: 1; - height: 100%; - min-height: 1em; -} -.rbc-day-slot .rbc-time-slot { - // border-top: 1px solid #f7f7f7; -} -.rbc-time-header-gutter { - line-height: 40px; -} -.rbc-time-header-cell { - min-height: 32px !important; -} -.rbc-calendar.view-week { - .rbc-time-header-cell { - margin-top: -32px; - margin-bottom: 4px; - } - .rbc-time-view { - padding-top: 32px; - border-top: 0; - } - .rbc-header { - padding: 4px 8px; - } - .rbc-time-header-content { - padding: 4px 0; - } - .rbc-time-header-gutter { - padding: 0; - padding-top: 2px; - > div { - border-top: 2px solid #f0f0f0; - padding: 0 5px; - } - } -} -.rbc-time-view-resources .rbc-time-gutter, -.rbc-time-view-resources .rbc-time-header-gutter { - position: sticky; - left: 0; - background-color: white; - border-right: 1px solid #f0f0f0; - z-index: 10; - margin-right: -1px; -} - -.rbc-time-view-resources .rbc-time-header { - overflow: hidden; -} - -.rbc-time-view-resources .rbc-time-header-content { - min-width: auto; - flex: 1 0 0; - flex-basis: 0px; -} - -.rbc-time-view-resources .rbc-time-header-cell-single-day { - display: none; -} - -.rbc-time-view-resources .rbc-day-slot { - min-width: 140px; -} - -.rbc-time-view-resources .rbc-header, -.rbc-time-view-resources .rbc-day-bg { - width: 140px; - flex: 1 1 0; - flex-basis: 0 px; -} - -.rbc-time-header-content + .rbc-time-header-content { - margin-left: -1px; -} - -.rbc-time-slot { - flex: 1 0 0; -} -.rbc-time-slot.rbc-now { - font-weight: bold; -} - -.rbc-day-header { - text-align: center; -} - -.rbc-slot-selection { - z-index: 10; - position: absolute; - background-color: rgba(0, 0, 0, 0.5); - color: white; - font-size: 75%; - width: 100%; - padding: 3px; -} - -.rbc-slot-selecting { - cursor: move; -} - -.rbc-time-view { - display: flex; - flex-direction: column; - flex: 1; - width: 100%; - border-top: 1px solid #f0f0f0; - min-height: 0; -} -.rbc-time-view .rbc-time-gutter { - white-space: nowrap; -} -.rbc-time-view .rbc-allday-cell { - box-sizing: content-box; - width: 100%; - height: 100%; - position: relative; -} -.rbc-time-view .rbc-allday-cell + .rbc-allday-cell { - border-left: 1px solid #f0f0f0; -} -.rbc-time-view .rbc-allday-events { - position: relative; - z-index: 4; -} -.rbc-time-view .rbc-row { - box-sizing: border-box; - min-height: 20px; -} - -.rbc-time-header { - display: flex; - flex: 0 0 auto; - flex-direction: row; -} -.rbc-time-header.rbc-overflowing { - border-right: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-time-header.rbc-overflowing { - border-right-width: 0; - border-left: 1px solid #f0f0f0; -} -.rbc-time-header > .rbc-row:first-child { - border-bottom: 1px solid #f0f0f0; -} -.rbc-time-header > .rbc-row.rbc-row-resource { - border-bottom: 1px solid #f0f0f0; -} - -.rbc-time-header-cell-single-day { - display: none; -} - -.rbc-time-header-content { - flex: 1; - display: flex; - min-width: 0; - flex-direction: column; - // border-left: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-time-header-content { - border-left-width: 0; - border-right: 1px solid #f0f0f0; -} -.rbc-time-header-content > .rbc-row.rbc-row-resource { - border-bottom: 1px solid #f0f0f0; - flex-shrink: 0; -} - -.rbc-time-content { - display: flex; - flex: 1 0 0%; - align-items: flex-start; - width: 100%; - border-top: 1px solid #f0f0f0; - overflow-y: auto; - position: relative; -} -.rbc-time-content > .rbc-time-gutter { - flex: none; -} -.rbc-time-content > * + * > * { - // border-left: 1px solid #f0f0f0; -} -.rbc-rtl .rbc-time-content > * + * > * { - border-left-width: 0; - border-right: 1px solid #f0f0f0; -} -.rbc-time-content > .rbc-day-slot { - width: 100%; - user-select: none; - -webkit-user-select: none; -} - -.rbc-current-time-indicator { - position: absolute; - z-index: 3; - left: 0; - right: 0; - height: 1px; - background-color: #74ad31; - pointer-events: none; -} - -@media only screen and (max-width: 800px) { - .view-type-calendar .action-buttons { - position: relative !important; - left: 0 !important; - .filter-action-button { - left: 0 !important; - } - } - .rbc-toolbar .rbc-toolbar-label { - position: absolute; - top: 28px; - left: 50%; - transform: translateX(-50%); - } - .rbc-toolbar { - justify-content: space-between !important; - } - .rbc-header { - padding: 4px !important; - } -} diff --git a/packages/app/src/components/views/Descriptions.tsx b/packages/app/src/components/views/Descriptions.tsx deleted file mode 100644 index 60ddf4875..000000000 --- a/packages/app/src/components/views/Descriptions.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import React, { useRef } from 'react'; -import './style.less'; -import { Helmet } from 'umi'; -import { Spin } from '@/components/spin'; -import { useRequest, useLocation } from 'umi'; -import api from '@/api-client'; -import { Actions } from '@/components/actions'; -import { - Table as AntdTable, - Card, - Pagination, - Button, - Tabs, - Descriptions as AntdDescriptions, - Tooltip, -} from 'antd'; -import { LoadingOutlined } from '@ant-design/icons'; -import arrayMove from 'array-move'; -import get from 'lodash/get'; -import Drawer from '@/components/drawer'; -import Field from '@/components/views/Field'; -import { Form } from './Form'; -import { configResponsive, useResponsive } from 'ahooks'; -import { InfoCircleOutlined } from '@ant-design/icons'; - -configResponsive({ - small: 0, - middle: 800, - large: 1200, -}); -function toGroups(fields: any[]) { - const groups = []; - let group = { - title: undefined, - tooltip: undefined, - children: [], - }; - fields.forEach(field => { - if (field.interface === 'description') { - if (group.children.length) { - groups.push(group); - } - group = { - title: field.title, - tooltip: field.tooltip, - children: [], - }; - } else { - group.children.push(field); - } - }); - if (group.children.length) { - groups.push(group); - } - return groups; -} - -export function Descriptions(props) { - const { data: record = {}, schema = {}, onDataChange } = props; - const { - rowKey = 'id', - resourceName, - fields = [], - actions = [], - appends = [], - associationField = {}, - } = schema; - const responsive = useResponsive(); - - const resourceKey = - props.resourceKey || record[associationField.targetKey || rowKey]; - const associatedKey = - props.associatedKey || record[associationField.sourceKey || 'id']; - - // console.log({resourceKey, data: record, associatedKey, associationField}) - - const { data = {}, loading, refresh } = useRequest(() => { - return api.resource(resourceName).get({ - resourceKey, - associatedKey, - 'fields[appends]': appends, - }); - }); - const contentRef = useRef(); - if (loading) { - return ; - } - let descriptionsProps: any = { - size: 'middle', - bordered: true, - }; - if (responsive.small && !responsive.middle && !responsive.large) { - descriptionsProps = { - layout: 'vertical', - }; - } - const groups = toGroups(fields); - - return ( -
- -
- {groups.map(group => ( - - {group.title}{' '} - {group.tooltip && ( - - - - )} - - ) - } - column={1} - > - {group.children.map((field: any) => { - const label = field.tooltip ? ( - <> - {field.title || field.name}  - - - - - ) : ( - field.title || field.name - ); - return ( - - - - ); - })} - - ))} -
-
- ); -} diff --git a/packages/app/src/components/views/Field/index.tsx b/packages/app/src/components/views/Field/index.tsx deleted file mode 100644 index b54a4dc32..000000000 --- a/packages/app/src/components/views/Field/index.tsx +++ /dev/null @@ -1,557 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import moment from 'moment'; -import { Tag, Popover, Table, Modal, Checkbox, message } from 'antd'; -import Icon from '@/components/icons'; -import get from 'lodash/get'; -import isEmpty from 'lodash/isEmpty'; -import findIndex from 'lodash/findIndex'; -import { getImageByUrl, testUrl } from '@/components/fields'; -import { CheckOutlined, CloseOutlined } from '@ant-design/icons'; -import marked from 'marked'; -import set from 'lodash/set'; -import Lightbox from 'react-image-lightbox'; -import api from '@/api-client'; -import { useRequest } from 'umi'; -import Drawer from '@/components/drawer'; -import View from '@/components/views'; -import './style.less'; -import 'react-image-lightbox/style.css'; - -marked.setOptions({ - gfm: true, - breaks: true, -}); - -const renderer = new marked.Renderer(); -renderer.link = (href, title, text) => - `${text}`; - -export function markdown(text: string) { - return marked(text, { - renderer, - }); -} - -const InterfaceTypes = new Map(); - -function registerFieldComponent(type, Component) { - InterfaceTypes.set(type, Component); -} - -function registerFieldComponents(components) { - Object.keys(components).forEach(key => { - registerFieldComponent(key, components[key]); - }); -} - -function getFieldComponent(type) { - if (InterfaceTypes.has(type)) { - return InterfaceTypes.get(type); - } - return InterfaceTypes.get('string'); -} - -export function StringField(props: any) { - const { value, viewType } = props; - if (!value) { - return null; - } - if (typeof value === 'object') { - return JSON.stringify(value); - } - if (viewType === 'table' && value.length > 20) { - return ( - { - e.stopPropagation(); - }} - style={{ maxWidth: 300 }} - > - {value} -
- } - > - {value.substring(0, 15)}... - - ); - } - return <>{value}; -} - -export function TextareaField(props: any) { - const { value, viewType } = props; - if (!value) { - return null; - } - if (viewType !== 'table') { - return ( -
- ); - } - if (value.length > 20) { - return ( - e.stopPropagation()} - className={'textarea-field-content'} - style={{ maxWidth: 300 }} - dangerouslySetInnerHTML={{ __html: markdown(value) }} - /> - } - > - {value.substring(0, 15)}... - - ); - } - return <>{value}; -} -// const { data = [], loading = true } = useRequest(() => { -// return api.resource('collections.actions').list({ -// associatedKey: resourceKey, -// }); -// }, { -// refreshDeps: [resourceKey] -// }); -export function BooleanField(props: any) { - const { - data = {}, - value, - schema: { name, editable, resourceName }, - } = props; - if (editable) { - return ( - { - await api.resource(resourceName).toggle({ - associatedKey: data.associatedKey, - resourceKey: data.id, - }); - message.success('保存成功'); - // console.log(props); - }} - /> - ); - } - // console.log(props); - return ( - <> - {value ? ( - - ) : ( - - )} - - ); -} - -export function NumberField(props: any) { - const { - schema: { precision = 0 }, - value, - } = props; - if (!isNumber(value)) { - return null; - } - return ( -
- {new Intl.NumberFormat().format(value)} -
- ); -} - -export function isNumber(num) { - if (typeof num === 'number') { - return num - num === 0; - } - if (typeof num === 'string' && num.trim() !== '') { - return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); - } - return false; -} - -export function PercentField(props: any) { - const { - schema: { precision = 0 }, - value, - } = props; - if (!isNumber(value)) { - return null; - } - return ( -
- {new Intl.NumberFormat().format(value)}% -
- ); -} - -export function DateTimeField(props: any) { - const { - schema: { dateFormat, showTime, timeFormat }, - value, - } = props; - const m = moment(value); - if (!m.isValid()) { - return null; - } - let format = dateFormat; - if (showTime) { - format += ` ${timeFormat}`; - } - return <>{m.format(`${format}`)}; -} - -export function IconField(props) { - const { value } = props; - return ; -} - -function toFlat(items = []): Array { - let flat = []; - items.forEach(item => { - flat.push(item); - if (Array.isArray(item.children) && item.children.length) { - flat = flat.concat(toFlat(item.children)); - } - }); - return flat; -} - -export function DataSourceField(props: any) { - const { - schema: { dataSource = [] }, - value, - } = props; - const items = toFlat(dataSource); - // console.log(items); - if (isEmpty(value)) { - return null; - } - if (Array.isArray(value)) { - return value.map(val => { - const item = items.find(item => item.value === val); - return item ? ( - {item ? item.label : val} - ) : ( - {val} - ); - }); - } - const item = items.find(item => item.value === value); - return item ? ( - {item ? item.label : value} - ) : ( - {value} - ); -} - -export function RealtionField(props: any) { - const { - schema: { labelField }, - value, - } = props; - if (!value) { - return null; - } - const items = Array.isArray(value) ? value : [value]; - return ( - <> - {items.map(item => ( - {get(item, labelField)} - ))} - - ); -} - -export function SubTableField(props: any) { - const { - data, - schema, - schema: { name, children, collection_name }, - value, - } = props; - if (!Array.isArray(value)) { - return null; - } - const viewName = `${collection_name}.${name}.${schema.viewName || 'table'}`; - console.log({ value, viewName, schema }); - return ( -
- -
- ); -} - -export function LinkToField(props: any) { - const { ctx, data, schema, value } = props; - if (!value) { - return null; - } - // console.log({props}); - const values = Array.isArray(value) ? value : [value]; - const isArr = Array.isArray(value); - return ( -
- {values.map((item, itemIndex) => ( - - ))} -
- ); -} - -export function LinkToFieldLink(props) { - const { - data, - isArr, - itemIndex, - ctx = {}, - parent, - schema, - schema: { title, labelField, viewName, name, target, collection_name }, - } = props; - // const [data, setData] = useState(props.data||{}); - return ( - - { - e.stopPropagation(); - // setVisible(true); - Drawer.open({ - title: data[labelField], - content: ({ resolve, closeWithConfirm }) => { - const { index, mutate, dataSource, onChange } = ctx; - return ( -
- { - closeWithConfirm && closeWithConfirm(true); - }} - noRequest={!!onChange} - onFinish={values => { - if (typeof index === 'undefined') { - return; - } - let items = [...dataSource]; - const parentData = { ...parent }; - set( - parentData, - isArr ? [name, itemIndex] : [name], - values, - ); - items[index] = parentData; - // setData(values); - mutate(items); - onChange(items); - resolve(); - // console.log({values, parentData, data, items}); - }} - associatedKey={parent.id} - data={data} - viewName={ - viewName || `${collection_name}.${name}.descriptions` - } - /> -
- ); - }, - }); - }} - > - {data[labelField]} -
-
- ); -} - -function getImgUrls(value) { - const values = Array.isArray(value) ? value : [value]; - return values - .filter(item => testUrl(item.url)) - .map(item => item); -} - -export function AttachmentField(props: any) { - const { value, schema } = props; - const [imgIndex, setImgIndex] = useState(0); - const [visible, setVisible] = useState(false); - if (!value) { - return null; - } - const values = Array.isArray(value) ? value : [value]; - const images = getImgUrls(values); - return ( -
{ - e.stopPropagation(); - }} - className={'attachment-field'} - > - {values.map(item => ( - { - setVisible(true); - const index = findIndex(images, img => item.id === img.id); - setImgIndex(index); - }} - data={item} - schema={schema} - /> - ))} - {visible && ( - setVisible(false)} - onMovePrevRequest={() => { - setImgIndex((imgIndex + images.length - 1) % images.length); - }} - onMoveNextRequest={() => { - setImgIndex((imgIndex + 1) % images.length); - }} - /> - )} -
- ); -} - -export function AttachmentFieldItem(props: any) { - const { title, url } = props.data || {}; - const img = getImageByUrl(url, { - // exclude: ['.png', '.jpg', '.jpeg', '.gif'], - }); - // const [visible, setVisible] = useState(false); - return ( - <> - { - e.stopPropagation(); - if (testUrl(url)) { - props.onClick && props.onClick(); - // setVisible(true); - e.preventDefault(); - } - }} - className={'attachment-field-item'} - target={'_blank'} - href={url} - > - {title} - - {/* { - e.stopPropagation(); - setVisible(false); - }} - // @ts-ignore - onClick={(e) => { - e.stopPropagation(); - }} - bodyStyle={{padding: 0}} - footer={null} - visible={visible}> - { - e.stopPropagation(); - }} style={{height: 'auto', width: '100%'}} alt={title} title={title} src={url}/> - */} - - ); -} - -export function LogField(props) { - const { value = {} } = props; - return
{value.title || value.name}
; -} - -export function LogFieldValue(props) { - const { value, data } = props; - return ( - - ); -} - -export function JsonField(props) { - const { value } = props; - if (typeof value === 'object') { - return ( -
-        {JSON.stringify(value, null, 2)}
-      
- ); - } -} - -export function ChinaRegion(props: any) { - const { schema, value } = props; - if (!value) { - return null; - } - const values = (Array.isArray(value) ? value : [value]).sort((a, b) => - a.level !== b.level ? a.level - b.level : a.sort - b.sort, - ); - return ( -
- {values.map(item => item.name).join('/')} -
- ); -} - -registerFieldComponents({ - string: StringField, - textarea: TextareaField, - boolean: BooleanField, - select: DataSourceField, - status: DataSourceField, - multipleSelect: DataSourceField, - radio: DataSourceField, - checkboxes: DataSourceField, - number: NumberField, - percent: PercentField, - datetime: DateTimeField, - createdAt: DateTimeField, - updatedAt: DateTimeField, - icon: IconField, - createdBy: RealtionField, - updatedBy: RealtionField, - subTable: SubTableField, - linkTo: LinkToField, - attachment: AttachmentField, - 'logs.field': LogField, - 'logs.fieldValue': LogFieldValue, - chinaRegion: ChinaRegion, - json: JsonField, -}); - -export default function Field(props: any) { - const { schema = {} } = props; - const Component = getFieldComponent( - schema.interface || get(schema, 'component.type'), - ); - return ; -} diff --git a/packages/app/src/components/views/Field/style.less b/packages/app/src/components/views/Field/style.less deleted file mode 100644 index fae97d0f9..000000000 --- a/packages/app/src/components/views/Field/style.less +++ /dev/null @@ -1,58 +0,0 @@ -.link-to-field-tag { - &::after { - content: ','; - } - &:last-child::after { - content: ''; - } -} - -.ant-table-cell { - > .percent-field, - > .number-field { - text-align: right; - } -} - -.sub-table-field { - overflow: auto; - > .ant-table-wrapper { - width: 1px; - overflow: visible; - } -} - -.attachment-modal { - .ant-modal-close { - background: rgba(255, 255, 255, 0.4); - } -} - -.textarea-field-content { - > *:last-child { - margin-bottom: 0; - } -} - -.ant-table-cell.noco-field-percent, -.ant-table-cell.noco-field-number { - text-align: right; -} - -.ant-upload.ant-upload-select-picture-card > .ant-upload { - flex-direction: column; -} - -.attachment-field-item { - display: inline-block; - line-height: 0; - margin-right: 3px; - padding: 1px; - border: 1px solid #d9d9d9; - border-radius: 2px; - background: #fafafa; - img { - height: 18px; - border-radius: 2px; - } -} diff --git a/packages/app/src/components/views/FilterForm.tsx b/packages/app/src/components/views/FilterForm.tsx deleted file mode 100644 index 0ac860595..000000000 --- a/packages/app/src/components/views/FilterForm.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React, { useState } from 'react'; -import { Tooltip, Button } from 'antd'; -import { - SchemaForm, - SchemaMarkupField as Field, - createFormActions, - createAsyncFormActions, - Submit, - Reset, - FormButtonGroup, - registerFormFields, - FormValidator, - setValidationLanguage, -} from '@formily/antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import scopes from '@/components/views/scopes'; -import { fields2properties } from './Form'; - -export function FilterForm(props: any) { - const { data, onFinish } = props; - const { fields = [] } = props.schema || {}; - return ( - { - // setData({filter: {}}); - onFinish && (await onFinish(null)); - }} - onSubmit={async values => { - if (onFinish) { - await onFinish(values); - } - }} - schema={{ - type: 'object', - properties: fields2properties(fields), - }} - expressionScope={scopes} - > - - - 取消 - 确定 - - - ); -} diff --git a/packages/app/src/components/views/Form.tsx b/packages/app/src/components/views/Form.tsx deleted file mode 100644 index 32888a252..000000000 --- a/packages/app/src/components/views/Form.tsx +++ /dev/null @@ -1,287 +0,0 @@ -import React, { useState } from 'react'; -import { Tooltip, Card, Button, message } from 'antd'; -import { - SchemaForm, - SchemaMarkupField as Field, - createFormActions, - createAsyncFormActions, - Submit, - Reset, - FormButtonGroup, - registerFormFields, - FormValidator, - setValidationLanguage, - FormSpy, - LifeCycleTypes, -} from '@formily/antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import api from '@/api-client'; -import { useRequest, useLocation } from 'umi'; -import Drawer from '@/components/drawer'; -import set from 'lodash/set'; -import cloneDeep from 'lodash/cloneDeep'; -import { Spin } from '@/components/spin'; -import { markdown } from '@/components/views/Field'; -import scopes from '@/components/views/scopes'; - -export function fields2properties(fields = [], options: any = {}) { - const { mode } = options; - const properties = {}; - fields.forEach(field => { - const data = { - ...field.component, - title: field.title, - required: field.required, - }; - if (field.multiple) { - set(data, 'x-component-props.mode', 'multiple'); - } - if (field.dateFormat) { - set(data, 'x-component-props.format', field.dateFormat); - } - if (field.showTime) { - set(data, 'x-component-props.showTime', true); - field.timeFormat && - set( - data, - 'x-component-props.format', - `${field.dateFormat} ${field.timeFormat}`, - ); - } - if (field.createOnly && mode !== 'create') { - set(data, 'x-component-props.disabled', true); - } - const linkages = field.linkages; - delete field.linkages; - set(data, 'x-component-props.schema', cloneDeep(field)); - if (field.dataSource) { - data.enum = field.dataSource; - } - if (field.interface === 'boolean') { - set(data, 'x-component-props.children', data.title); - delete data.title; - } - properties[field.name] = data; - if (field.interface === 'linkTo') { - set(data, 'x-component-props.target', field.target); - set(data, 'x-component-props.multiple', field.multiple); - } - if (field.name === 'dataSource') { - set(data, 'x-component-props.operationsWidth', 'auto'); - set(data, 'x-component-props.bordered', true); - set(data, 'x-component-props.className', 'data-source-table'); - const property = {}; - Object.assign(property, { - label: { - type: 'string', - title: '选项', - required: true, - 'x-component-props': { - bordered: false, - }, - }, - color: { - type: 'colorSelect', - title: '颜色', - 'x-component-props': { - bordered: false, - }, - }, - }); - set(data, 'items.properties', property); - } - if (linkages) { - data['x-linkages'] = linkages; - } - if (field.defaultValue !== null) { - data.default = field.defaultValue; - } - if (field.tooltip) { - data.description = ( -
- ); - } - }); - console.log({ properties, options }); - return properties; -} -const actions = createFormActions(); - -export function Form(props: any) { - const { - initialValues = {}, - onValueChange, - onReset, - __parent, - noRequest = false, - onFinish, - onDraft, - resolve, - data: record = {}, - associatedKey, - schema = {}, - } = props; - console.log({ noRequest, record, associatedKey, __parent }); - const { - statusable, - resourceName, - rowKey = 'id', - fields = [], - appends = [], - associationField = {}, - } = schema; - - const resourceKey = - props.resourceKey || record[associationField.targetKey || rowKey]; - - const { data = {}, loading, refresh } = useRequest(() => { - return !noRequest && resourceKey - ? api.resource(resourceName).get({ - associatedKey, - resourceKey, - 'fields[appends]': appends, - }) - : Promise.resolve({ data: record }); - }); - - const [status, setStatus] = useState('publish'); - - if (loading) { - return ; - } - - return ( - { - $(LifeCycleTypes.ON_FORM_INIT).subscribe(() => { - setFieldState('*', state => { - set(state.props, 'x-component-props.__index', resourceKey); - }); - }); - }} - // actions={actions} - schema={{ - type: 'object', - properties: fields2properties(fields, { - mode: !!Object.keys(data).length ? null : 'create', - }), - }} - onReset={async () => { - onReset && (await onReset()); - }} - onChange={values => { - console.log('onValueChange'); - onValueChange && onValueChange(values); - }} - onSubmit={async values => { - console.log({ status }); - if (!noRequest) { - resourceKey - ? await api.resource(resourceName).update({ - associatedKey, - resourceKey, - values: { - ...values, - status, - }, - }) - : await api.resource(resourceName).create({ - associatedKey, - values: { - ...values, - status, - }, - }); - } - onFinish && (await onFinish(values)); - }} - expressionScope={scopes} - > - - 取消 - {statusable && ( - { - switch (action.type) { - case LifeCycleTypes.ON_FORM_SUBMIT_START: - return { - ...state, - submitting: true, - }; - case LifeCycleTypes.ON_FORM_SUBMIT_END: - return { - ...state, - submitting: false, - }; - default: - return state; - } - }} - > - {({ state, form }) => { - const [submitting, setSubmitting] = useState(false); - return ( - - ); - }} - - )} - 确定 - - - ); -} diff --git a/packages/app/src/components/views/Kanban/index.tsx b/packages/app/src/components/views/Kanban/index.tsx deleted file mode 100644 index ea53395e6..000000000 --- a/packages/app/src/components/views/Kanban/index.tsx +++ /dev/null @@ -1,327 +0,0 @@ -import React, { useState } from 'react'; -import { useRequest, useHistory } from 'umi'; -import api from '@/api-client'; -import { Descriptions, Popconfirm, Card, Button } from 'antd'; -import Board, { moveCard } from '@lourenci/react-kanban'; -import '@lourenci/react-kanban/dist/styles.css'; -import Drawer from '@/components/drawer'; -import { Actions, Create, Destroy } from '@/components/actions'; -import get from 'lodash/get'; -import filter from 'lodash/filter'; -import Field from '@/components/views/Field'; -import { Details, DetailsPage } from '@/components/views/Table'; -import merge from 'lodash/merge'; -import { Spin } from '@/components/spin'; -import './style.less'; - -export function Kanban(props: any) { - const { defaultFilter, associatedKey, schema = {} } = props; - const { - filter: schemaFilter, - sort, - appends, - groupField = {}, - resourceName, - createViewName = 'form', - disableCardDrag = false, - // allowAddCard = false, - // allowRemoveCard = false, - labelField, - actions = [], - fields = [], - detailsOpenMode, - details = [], - rowKey = 'id', - } = schema; - const { dataSource = [] } = groupField; - console.log({ groupField, dataSource }); - - const paginated = false; - - const history = useHistory(); - - const { data, loading, mutate, refresh, run, params } = useRequest( - (params = {}, ...args) => { - const { current, pageSize, sorter, filter, ...restParams } = params; - console.log('paramsparamsparamsparamsparams', params, args); - return api - .resource(resourceName) - .list({ - associatedKey, - page: paginated ? current : 1, - perPage: paginated ? pageSize : -1, - sorter, - sort: [`${groupField.name}_sort`], - 'fields[appends]': appends, - // filter, - // ...actionDefaultParams, - filter: { - and: [ - defaultFilter, - schemaFilter, - filter, - // __parent ? { - // collection_name: __parent, - // } : null, - ].filter(obj => obj && Object.keys(obj).length), - }, - // ...args2, - }) - .then(({ data = [], meta = {} }) => { - return { - data: { - list: data, - total: meta.count || data.length, - }, - }; - }); - }, - { - paginated, - }, - ); - - if (loading) { - return ; - } - - const columns = dataSource.map(group => { - return { - id: group.value, - title: group.label, - cards: filter(data?.list, item => { - return get(item, groupField.name) === group.value; - }), - }; - }); - console.log({ columns }); - - const bodyStyle: any = {}; - - if (fields.length === 0) { - bodyStyle.padding = 0; - } - - const createAction = actions.find(action => { - return action.type === 'create'; - }); - - let allowAddCard = !!props.allowAddCard; - - if (createAction) { - allowAddCard = true; - } - - let allowRemoveCard = !!props.allowRemoveCard; - const destroyAction = actions.find(action => { - return action.type === 'destroy'; - }); - if (destroyAction) { - allowRemoveCard = true; - } - - return ( -
- !['create', 'destroy'].includes(action.type), - )} - onTrigger={{ - async filter(values) { - const items = values.filter.and || values.filter.or; - // @ts-ignore - run({ ...params[0], filter: values.filter }); - // refresh(); - }, - }} - /> - { - const openDetails = e => { - if (!detailsOpenMode || !details.length) { - return; - } - if (detailsOpenMode === 'window') { - const paths = history.location.pathname.split('/'); - history.push(`/admin/${paths[2]}/${data[rowKey]}/0`); - } else { - Drawer.open({ - headerStyle: - details.length > 1 - ? { - paddingBottom: 0, - borderBottom: 0, - // paddingTop: 16, - // marginBottom: -4, - } - : {}, - title: data[labelField], - content: ({ resolve, closeWithConfirm }) => ( -
-
{ - await refresh(); - resolve(); - }} - onValueChange={() => { - closeWithConfirm && closeWithConfirm(true); - }} - onDraft={async () => { - await refresh(); - resolve(); - }} - onReset={resolve} - onDataChange={async () => { - await refresh(); - }} - data={data} - resolve={resolve} - items={details} - /> -
- ), - }); - } - }; - return ( - {data[labelField]}
} - bodyStyle={bodyStyle} - extra={ - allowRemoveCard && ( - { - await api.resource(resourceName).destroy({ - associatedKey, - filter: { - [`${rowKey}.in`]: [data[rowKey]], - }, - }); - await refresh(); - }} - /> - ) - } - > -
- {fields.length > 0 && ( - - {fields.map((field: any) => { - return ( - - - - ); - })} - - )} -
- - ); - }} - onCardDragEnd={async ({ columns }, card, source, destination) => { - await api.resource(resourceName).update({ - associatedKey, - resourceKey: card[rowKey], - values: { - [groupField.name]: destination.toColumnId, - }, - }); - const destColumn = columns.find( - column => column.id === destination.toColumnId, - ); - const targetIndex = get(destColumn, [ - 'cards', - destination.toPosition + 1, - rowKey, - ]); - console.log({ targetIndex, card, destination }); - await api.resource(resourceName).sort({ - associatedKey, - resourceKey: card[rowKey], - values: { - field: `${groupField.name}_sort`, - sticky: destination.toPosition === 0, - target: { - [rowKey]: targetIndex, - }, - }, - }); - }} - initialBoard={{ columns }} - // allowAddCard={{ on: "bottom" }} - allowAddCard={false} - // onNewCardConfirm={draftCard => ({ - // id: new Date().getTime(), - // ...draftCard - // })} - renderColumnHeader={({ title, id }, { addCard }) => { - return ( - <> -
- {title} -
- {allowAddCard && ( - { - refresh(); - }} - initialValues={{ - [groupField.name]: id, - }} - schema={merge(createAction, { - title: null, - pageTitle: '新增', - componentProps: { - type: 'text', - block: true, - className: 'noco-card-adder-button', - style: { - marginBottom: 10, - border: 0, - background: '#fff', - }, - }, - })} - /> - )} - - ); - }} - onCardNew={console.log} - /> -
- ); -} diff --git a/packages/app/src/components/views/Kanban/style.less b/packages/app/src/components/views/Kanban/style.less deleted file mode 100644 index e4128225c..000000000 --- a/packages/app/src/components/views/Kanban/style.less +++ /dev/null @@ -1,60 +0,0 @@ -.react-kanban-board { - padding: 0; - // margin: -24px -36px; - background-color: #eff2f5; - .react-kanban-column { - background-color: #eff2f5; - margin: 0; - padding: 12px; - } -} - -.react-kanban-column-header { - font-weight: 500; -} - -.noco-card-adder-button:hover { - background: rgba(255, 255, 255, 0.4) !important; -} - -.noco-kanban-view { - .action-buttons { - // margin: -24px -24px 0 !important - margin: 0 !important; - background-color: #eff2f5; - padding-bottom: 40px; - .ant-btn { - border: 0; - } - .filter-action-button { - margin-left: 0; - left: 12px; - } - } - .action-buttons + .react-kanban-board { - margin-top: 0; - } - .ant-descriptions-item-label { - width: auto; - } - .ant-descriptions-item { - // padding-bottom: 4px; - } -} - - -.ant-card.view-type-kanban { - margin: 0 -12px; - background: none; - > .ant-card-body { - padding: 0; - } -} -@media only screen and (max-width: 800px) { - .ant-card.view-type-kanban { - margin: 0; - .action-buttons { - margin-top: 12px !important; - } - } -} \ No newline at end of file diff --git a/packages/app/src/components/views/Login.tsx b/packages/app/src/components/views/Login.tsx deleted file mode 100644 index ea50d5178..000000000 --- a/packages/app/src/components/views/Login.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import React from 'react'; -import { Tooltip, Card, Button, message } from 'antd'; -import { - SchemaForm, - SchemaMarkupField as Field, - createFormActions, - createAsyncFormActions, - Submit, - Reset, - FormButtonGroup, - registerFormFields, - FormValidator, - setValidationLanguage, -} from '@formily/antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import { Link, history, request, useModel, useLocation } from 'umi'; - -export function Login(props: any) { - const actions = createFormActions(); - const { - initialState = {}, - loading, - error, - refresh, - setInitialState, - } = useModel('@@initialState'); - const { redirect } = props.location.query; - - if (loading) { - return null; - } - - const { systemSettings = {} } = initialState as any; - - console.log({ systemSettings }); - - const { title } = systemSettings || {}; - - return ( -
-

{title}

-

登录

- - { - try { - const { data = {}, error } = await request('/users:login', { - method: 'post', - data: values, - }); - if (data.data && data.data.token) { - localStorage.setItem('NOCOBASE_TOKEN', data.data.token); - // @ts-ignore - setInitialState({ - ...initialState, - currentUser: data.data, - }); - await (window as any).routesReload(); - history.push(redirect || '/'); - } - } catch (error) { - if (typeof error.data === 'string') { - message.error(error.data); - } - } - }} - actions={actions} - schema={{ - type: 'object', - properties: { - email: { - type: 'string', - title: '', - required: true, - 'x-component-props': { - size: 'large', - placeholder: '邮箱', - }, - }, - password: { - type: 'password', - title: '', - required: true, - 'x-component-props': { - size: 'large', - style: { - width: '100%', - }, - placeholder: '密码', - }, - 'x-props': { - help: 忘记密码?, - }, - }, - ...(props.fields || {}), - }, - }} - > - - 登录 -
- 注册账户 -
-
-
-
- ); -} diff --git a/packages/app/src/components/views/LostPassword.tsx b/packages/app/src/components/views/LostPassword.tsx deleted file mode 100644 index eeb9f799c..000000000 --- a/packages/app/src/components/views/LostPassword.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React from 'react'; -import { Tooltip, Card, Button, message } from 'antd'; -import { - SchemaForm, - SchemaMarkupField as Field, - createFormActions, - createAsyncFormActions, - Submit, - Reset, - FormButtonGroup, - registerFormFields, - FormValidator, - setValidationLanguage, -} from '@formily/antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import { Link, history, request, useModel, useLocation } from 'umi'; - -export function LostPassword(props: any) { - const actions = createFormActions(); - const { - initialState = {}, - loading, - error, - refresh, - setInitialState, - } = useModel('@@initialState'); - const { redirect } = props.location.query; - - if (loading) { - return null; - } - - const { systemSettings = {} } = initialState as any; - - console.log({ systemSettings }); - - const { title } = systemSettings || {}; - - return ( -
-

{title}

-

忘记密码

- { - console.log(values); - const { data = {} } = await request('/users:lostpassword', { - method: 'post', - data: values, - }); - message.success(`重置链接已发送至邮箱 ${values.email},请注意查收!`); - }} - actions={actions} - schema={{ - type: 'object', - properties: { - email: { - type: 'string', - title: '', - required: true, - 'x-component-props': { - size: 'large', - placeholder: '邮箱', - }, - }, - }, - }} - > - - 获取新密码 -
- 使用已有账号登录 -
-
-
-
- ); -} diff --git a/packages/app/src/components/views/Register.tsx b/packages/app/src/components/views/Register.tsx deleted file mode 100644 index 3b79d9c99..000000000 --- a/packages/app/src/components/views/Register.tsx +++ /dev/null @@ -1,156 +0,0 @@ -import React from 'react'; -import { Tooltip, Card, Button, message } from 'antd'; -import { - SchemaForm, - SchemaMarkupField as Field, - createFormActions, - createAsyncFormActions, - Submit, - Reset, - FormButtonGroup, - registerFormFields, - FormEffectHooks, - FormValidator, - setValidationLanguage, -} from '@formily/antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import { Link, history, request, useModel } from 'umi'; - -const { onFieldValueChange$ } = FormEffectHooks; - -const useLinkageValidateEffects = () => { - const { setFieldState, getFieldState } = createFormActions(); - onFieldValueChange$('*(password,confirm)').subscribe(fieldState => { - const selfName = fieldState.name; - const selfValue = fieldState.value; - const otherName = selfName == 'password' ? 'confirm' : 'password'; - const otherValue = getFieldState(otherName, state => state.value); - setFieldState(otherName, state => { - if (selfValue && otherValue && selfValue !== otherValue) { - state.errors = ['两次密码输入不一致']; - } else { - state.errors = []; - } - }); - setFieldState(selfName, state => { - if (selfValue && otherValue && selfValue !== otherValue) { - state.errors = ['两次密码输入不一致']; - } else { - state.errors = []; - } - }); - }); -}; - -export function Register(props: any) { - const actions = createFormActions(); - const { - initialState = {}, - loading, - error, - refresh, - setInitialState, - } = useModel('@@initialState'); - - if (loading) { - return null; - } - - const { systemSettings = {} } = initialState as any; - - console.log({ systemSettings }); - - const { title } = systemSettings || {}; - - return ( -
-

{title}

-

注册

- { - useLinkageValidateEffects(); - }} - onSubmit={async values => { - console.log(values); - try { - const { data = {} } = await request('/users:register', { - method: 'post', - data: values, - }); - await actions.reset({ - validate: false, - forceClear: true, - }); - message.success('注册成功,将跳转登录页'); - setTimeout(() => { - history.push('/login'); - }, 1000); - } catch (error) { - if (typeof error.data === 'string') { - message.error(error.data); - } - } - }} - actions={actions} - schema={{ - type: 'object', - properties: { - email: { - type: 'string', - title: '', - required: true, - 'x-component-props': { - size: 'large', - placeholder: '邮箱', - }, - }, - // nickname: { - // type: 'string', - // title: '', - // 'x-component-props': { - // size: 'large', - // placeholder: '昵称', - // }, - // }, - password: { - type: 'password', - title: '', - required: true, - 'x-component-props': { - size: 'large', - style: { - width: '100%', - }, - placeholder: '密码', - }, - }, - confirm: { - type: 'password', - title: '', - required: true, - 'x-component-props': { - size: 'large', - style: { - width: '100%', - }, - placeholder: '确认密码', - }, - }, - ...(props.fields || {}), - }, - }} - > - - 注册 -
- 使用已有账号登录 -
-
-
-
- ); -} diff --git a/packages/app/src/components/views/ResetPassword.tsx b/packages/app/src/components/views/ResetPassword.tsx deleted file mode 100644 index 12247071f..000000000 --- a/packages/app/src/components/views/ResetPassword.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import React from 'react'; -import { Tooltip, Card, Button, message } from 'antd'; -import { - SchemaForm, - SchemaMarkupField as Field, - createFormActions, - createAsyncFormActions, - Submit, - Reset, - FormButtonGroup, - registerFormFields, - FormEffectHooks, - FormValidator, - setValidationLanguage, -} from '@formily/antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import { Redirect, history, request, useModel, useHistory } from 'umi'; -import api from '@/api-client'; -import { useRequest, Link } from 'umi'; - -const { onFieldValueChange$ } = FormEffectHooks; - -const useLinkageValidateEffects = () => { - const { setFieldState, getFieldState } = createFormActions(); - onFieldValueChange$('*(password,confirm)').subscribe(fieldState => { - const selfName = fieldState.name; - const selfValue = fieldState.value; - const otherName = selfName == 'password' ? 'confirm' : 'password'; - const otherValue = getFieldState(otherName, state => state.value); - setFieldState(otherName, state => { - if (selfValue && otherValue && selfValue !== otherValue) { - state.errors = ['两次密码输入不一致']; - } else { - state.errors = []; - } - }); - setFieldState(selfName, state => { - if (selfValue && otherValue && selfValue !== otherValue) { - state.errors = ['两次密码输入不一致']; - } else { - state.errors = []; - } - }); - }); -}; - -export function ResetPassword(props: any) { - const actions = createFormActions(); - const { - initialState = {}, - loading: stateLoading, - error, - refresh, - setInitialState, - } = useModel('@@initialState'); - - const history = useHistory(); - // @ts-ignore - const { token } = history.location.query; - console.log({ token }); - const { data = {}, loading } = useRequest(() => { - return api.resource('users').getUserByResetToken({ - token, - }); - }); - - if (stateLoading || loading) { - return null; - } - - if (!data.id) { - return ; - } - - const { systemSettings = {} } = initialState as any; - - console.log({ systemSettings }); - - const { title } = systemSettings || {}; - - return ( -
-

{title}

-

重置密码

- { - useLinkageValidateEffects(); - }} - initialValues={{ - email: data.email, - }} - onSubmit={async values => { - console.log(values); - const { data = {} } = await request('/users:resetpassword', { - method: 'post', - data: { - ...values, - reset_token: token, - }, - }); - await actions.reset({ - validate: false, - forceClear: true, - }); - message.success('密码重置成功,将跳转至登录页'); - setTimeout(() => { - history.push('/login'); - }, 1000); - }} - actions={actions} - schema={{ - type: 'object', - properties: { - email: { - type: 'string', - title: '', - required: true, - 'x-component-props': { - size: 'large', - placeholder: '邮箱', - disabled: true, - }, - }, - password: { - type: 'password', - title: '', - required: true, - 'x-component-props': { - size: 'large', - style: { - width: '100%', - }, - placeholder: '密码', - }, - }, - confirm: { - type: 'password', - title: '', - required: true, - 'x-component-props': { - size: 'large', - style: { - width: '100%', - }, - placeholder: '确认密码', - }, - }, - }, - }} - > - - 重置密码 -
- 使用已有账号登录 -
-
-
-
- ); -} diff --git a/packages/app/src/components/views/SubTable.tsx b/packages/app/src/components/views/SubTable.tsx deleted file mode 100644 index 70d08fe18..000000000 --- a/packages/app/src/components/views/SubTable.tsx +++ /dev/null @@ -1,380 +0,0 @@ -import React, { useState, useEffect, useRef, createRef } from 'react'; -import './style.less'; -import { Helmet } from 'umi'; -import { Spin } from '@/components/spin'; -import { useRequest, useLocation } from 'umi'; -import api from '@/api-client'; -import { Actions } from '@/components/actions'; -import { - Modal, - Table as AntdTable, - Card, - Pagination, - Button, - Tabs, - Descriptions, - Tooltip, -} from 'antd'; -import { LoadingOutlined } from '@ant-design/icons'; -import { fields2columns } from '@/components/views/fields2columns'; -import ReactDragListView from 'react-drag-listview'; -import arrayMove from 'array-move'; -import get from 'lodash/get'; -import cloneDeep from 'lodash/cloneDeep'; -import Drawer from '@/components/drawer'; -import { View } from '.'; - -export const icon = ; - -export function Details(props) { - const { - onValueChange, - onReset, - __parent, - noRequest, - associatedKey, - resourceName, - onFinish, - onDataChange, - data, - items = [], - resolve, - } = props; - if (!items || items.length === 0) { - return null; - } - const [currentTabIndex, setCurrentTabIndex] = useState('0'); - return ( -
- {items.length > 1 && ( -
- { - setCurrentTabIndex(activeKey); - }} - > - {items.map((page, index) => ( - - ))} - -
- )} - {(get(items, [currentTabIndex, 'views']) || []).map(view => { - let viewName: string; - if (typeof view === 'string') { - viewName = `${resourceName}.${view}`; - } - if (typeof view === 'object') { - viewName = `${resourceName}.${view.name}`; - } - return ( - - ); - })} -
- ); -} - -export function generateIndex(): string { - return `${Math.random() - .toString(36) - .replace('0.', '') - .slice(-4) - .padStart(4, '0')}`; -} - -export function SubTable(props: any) { - const { - __parent, - __index, - schema = {}, - associatedKey, - onChange, - size = 'middle', - } = props; - - console.log('subtable.associatedKey', associatedKey) - - const { - fields = [], - actions: defaultActions = [], - details: defaultDetails = [], - paginated = true, - defaultPerPage = 10, - // rowKey = 'id', - labelField = 'id', - sort, - resourceName, - associationField = {}, - appends = [], - expandable, - filter: schemaFilter = {}, - } = schema; - - let actions = defaultActions; - let details = defaultDetails; - - if (!onChange) { - actions = []; - details = []; - } - - const cloneFields = cloneDeep(fields) as any[]; - - let draggable = !!schema.draggable; - - let sortField: string; - - for (const field of cloneFields) { - if (field.type === 'sort') { - sortField = field.name; - } - } - - if (draggable && !sortField) { - (sortField = 'sort'), - cloneFields.unshift({ - dataIndex: ['sort'], - title: '排序', - name: 'sort', - interface: 'sort', - type: 'sort', - required: true, - developerMode: false, - component: { - type: 'sort', - showInTable: true, - width: 60, - className: 'drag-visible', - }, - }); - } - - if (!sortField) { - sortField = 'sort'; - } - - const { type } = associationField; - const { data = [], loading, mutate, refresh, run, params } = useRequest( - (params = {}, ...args) => { - return !(associatedKey||__index) || type === 'virtual' || type === 'json' - ? Promise.resolve({ - data: (props.data || []).map(item => { - if (!item[rowKey]) { - item[rowKey] = generateIndex(); - } - return item; - }), - }) - : api - .resource(resourceName) - .list({ - associatedKey: __index||associatedKey, - perPage: -1, - 'fields[appends]': appends, - }) - .then(({ data = [] }) => { - if (!Array.isArray(data)) { - return { - data: [], - }; - } - return { - data: data.map(item => { - if (!item[rowKey]) { - item[rowKey] = generateIndex(); - } - return item; - }), - }; - }); - }, - { - paginated: false, - }, - ); - - const dataSource = data as any; - - const rowKey = '__index'; - - const dragProps = { - async onDragEnd(fromIndex, toIndex) { - let data = arrayMove(dataSource, fromIndex, toIndex); - data = data.map((v: any, i) => { - return { ...v, [sortField]: i }; - }); - mutate(data); - onChange && (await onChange(data)); - }, - handleSelector: '.drag-handle', - ignoreSelector: 'tr.ant-table-expanded-row', - nodeSelector: 'tr.ant-table-row', - }; - - const tableProps: any = {}; - - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - - if (actions.length) { - tableProps.rowSelection = { - type: 'checkbox', - selectedRowKeys, - onChange: ( - selectedRowKeys: React.ReactText[], - selectedRows: React.ReactText[], - ) => { - setSelectedRowKeys(selectedRowKeys); - }, - }; - } - - return ( -
- { - return { ...v, [sortField]: i }; - }); - mutate(data); - onChange && (await onChange(data)); - }, - async add(items = []) { - let data = [...dataSource]; - data.push(...items); - data = data.map((v: any, i) => { - if (!v[rowKey]) { - v[rowKey] = generateIndex(); - } - return { ...v, [sortField]: i }; - }); - mutate(data); - onChange && (await onChange(data)); - }, - async destroy() { - let data = dataSource.filter( - item => !selectedRowKeys.includes(item[rowKey]), - ); - data = data.map((v: any, i) => { - return { ...v, [sortField]: i }; - }); - mutate(data); - onChange && (await onChange(data)); - }, - }} - actions={actions} - style={{ marginBottom: 14, marginTop: -31 }} - /> - - {}} - components={{ - body: { - row: ({ className, ...others }) => { - if (!details.length) { - return
; - } - return ( - - ); - }, - }, - }} - expandable={expandable} - onRow={(data, index) => ({ - onClick: e => { - const className = (e.target as HTMLElement).className; - if ( - typeof className === 'string' && - (className.includes('ant-table-selection-column') || - className.includes('ant-checkbox') || - className.includes('ant-radio')) - ) { - return; - } - if (!details.length) { - return; - } - Drawer.open({ - title: details.length > 1 ? undefined : data[labelField], - bodyStyle: { - // padding: 0, - }, - content: ({ resolve, closeWithConfirm }) => ( -
-
{ - let data = [...dataSource]; - console.log({ values }); - data[index] = values; - data = data.map((v: any, i) => { - return { ...v, [sortField]: i }; - }); - mutate(data); - onChange && (await onChange(data)); - console.log({ values, data }); - resolve(); - }} - onReset={resolve} - onDataChange={() => {}} - onValueChange={() => { - closeWithConfirm && closeWithConfirm(true); - }} - noRequest={true} - data={data} - resolve={resolve} - items={details} - /> -
- ), - }); - }, - })} - {...tableProps} - /> - - - ); -} diff --git a/packages/app/src/components/views/Table.tsx b/packages/app/src/components/views/Table.tsx deleted file mode 100644 index b18223386..000000000 --- a/packages/app/src/components/views/Table.tsx +++ /dev/null @@ -1,637 +0,0 @@ -import React, { useState, useEffect, useRef, createRef } from 'react'; -import './style.less'; -import { Helmet } from 'umi'; -import { Spin } from '@/components/spin'; -import { useRequest, useHistory } from 'umi'; -import api from '@/api-client'; -import { Actions } from '@/components/actions'; -import { - Modal, - PageHeader, - Table as AntdTable, - Card, - Pagination, - Button, - Tabs, - Descriptions, - Tooltip, -} from 'antd'; -import { LoadingOutlined } from '@ant-design/icons'; -import { fields2columns } from '@/components/views/fields2columns'; -import ReactDragListView from 'react-drag-listview'; -import get from 'lodash/get'; -import find from 'lodash/find'; -import Drawer from '@/components/drawer'; -import { Form } from './Form'; -import { View } from '.'; - -export const icon = ; - -export function Details(props) { - const { - __parent, - associatedKey, - resourceName, - onFinish, - onDraft, - onReset, - onDataChange, - data, - items = [], - resolve, - onValueChange, - } = props; - if (!items || items.length === 0) { - return null; - } - const [currentTabIndex, setCurrentTabIndex] = useState('0'); - return ( -
- {items.length > 1 && ( -
- { - setCurrentTabIndex(activeKey); - }} - > - {items.map((page, index) => ( - - ))} - -
- )} - {(get(items, [currentTabIndex, 'views']) || []).map(view => { - let viewName: string; - if (typeof view === 'string') { - viewName = `${resourceName}.${view}`; - } - if (typeof view === 'object') { - viewName = `${resourceName}.${view.name}`; - } - return ( - - ); - })} -
- ); -} - -export function DetailsPage(props) { - const { - currentRowId, - title, - __parent, - associatedKey, - resourceName, - onFinish, - onReset, - onDataChange, - data, - items = [], - resolve, - } = props; - if (!items || items.length === 0) { - return null; - } - const history = useHistory(); - const paths = history.location.pathname.split('/'); - const index = parseInt(paths[4]); - const [currentTabIndex, setCurrentTabIndex] = useState( - items.length > index ? paths[4] : '0', - ); - return ( -
- { - history.push(`/admin/${paths[2]}`); - }} - footer={ - { - setCurrentTabIndex(activeKey); - history.push(`/admin/${paths[2]}/${currentRowId}/${activeKey}`); - }} - > - {items.map((page, index) => ( - - ))} - - } - /> -
- - {(get(items, [currentTabIndex, 'views']) || []).map(view => { - let viewName: string; - if (typeof view === 'string') { - viewName = `${resourceName}.${view}`; - } - if (typeof view === 'object') { - viewName = `${resourceName}.${view.name}`; - } - return ( - - ); - })} - -
-
- ); -} - -export function Table(props: any) { - const { - onSelected, - multiple = true, - isFieldComponent, - schema = {}, - data: record = {}, - defaultFilter, - defaultSelectedRowKeys, - noRequest = false, - __parent, - currentRowId, - } = props; - - const content = document.getElementById('content'); - - const { - fields = [], - actions = [], - details = [], - paginated = true, - defaultPerPage = 10, - rowKey = 'id', - labelField = 'id', - sort, - resourceName, - associationField = {}, - appends = [], - expandable, - detailsOpenMode = 'drawer', - filter: schemaFilter = {}, - } = schema; - - const history = useHistory(); - - const associatedKey = - props.associatedKey || record[associationField.sourceKey || 'id']; - console.log({ associatedKey, record, associationField, __parent }); - - async function reloadMenu() { - if (resourceName !== 'menus') { - return; - } - (window as any).reloadMenu && (await (window as any).reloadMenu()); - } - - const { - data, - loading, - pagination, - mutate, - refresh, - run, - params, - } = useRequest( - (params = {}, ...args) => { - const { current, pageSize, sorter, filter, ...restParams } = params as any; - console.log('paramsparamsparamsparamsparams', params, args); - return api - .resource(resourceName) - .list({ - associatedKey, - page: paginated ? current : 1, - perPage: paginated ? pageSize : -1, - sorter, - sort, - 'fields[appends]': appends, - // filter, - // ...actionDefaultParams, - filter: { - and: [ - defaultFilter, - schemaFilter, - filter, - // __parent ? { - // collection_name: __parent, - // } : null, - ].filter(obj => obj && Object.keys(obj).length), - }, - // ...args2, - }) - .then(({ data = [], meta = {} }) => { - return { - data: { - list: data, - total: meta.count || data.length, - }, - }; - }); - }, - { - paginated, - defaultPageSize: defaultPerPage, - }, - ); - - const exportRequest = useRequest(({ sorter, filter } = {}) => { - return api - .resource(resourceName) - .export({ - associatedKey, - perPage: -1, - sorter, - sort, - 'fields[appends]': appends, - filter: { - and: [ - defaultFilter, - schemaFilter, - filter, - ].filter(obj => obj && Object.keys(obj).length), - }, - }, { - parseResponse: false, - responseType: 'blob' - }) - .then(async response => { - // decodeURI() for encoded filename in server side - const filename = decodeURI(response.headers.get('Content-Disposition').replace('attachment; filename=', '')); - // ReadableStream - let res = new Response(response.body); - let blob = await res.blob(); - let url = URL.createObjectURL(blob); - let a = document.createElement('a'); - a.style.display = 'none'; - a.href = url; - a.download = filename; - document.body.appendChild(a); - a.click(); - // cleanup - URL.revokeObjectURL(url); - document.body.removeChild(a); - a = null; - blob = null; - url = null; - res = null; - }); - }, { - manual: true, - paginated: false - }); - - const currentRow = find( - data && data.list, - item => item[rowKey] == currentRowId, - ); - console.log({ currentRow }); - function getExpandedRowKeys(items: Array) { - if (!Array.isArray(items)) { - return []; - } - console.log({ items }); - let rowKeys = []; - items.forEach(item => { - if (item.children && item.children.length) { - rowKeys.push(item[rowKey]); - rowKeys = rowKeys.concat(getExpandedRowKeys(item.children)); - } - }); - return rowKeys; - } - - const [expandedRowKeys, setExpandedRowKeys] = useState(() => { - if (expandable) { - return getExpandedRowKeys(data?.list); - } - return []; - }); - - useEffect(() => { - setExpandedRowKeys(getExpandedRowKeys(data?.list)); - }, [data]); - - if (expandable) { - // expandable.expandIconColumnIndex = 4; - expandable.onExpand = (expanded, record) => { - if (!expanded) { - const index = expandedRowKeys.indexOf(record[rowKey]); - if (index >= 0) { - expandedRowKeys.splice(index, 1); - } - } else { - expandedRowKeys.push(record[rowKey]); - } - setExpandedRowKeys(expandedRowKeys); - }; - expandable.expandedRowKeys = expandedRowKeys; - console.log({ expandable, data }); - } - - // const { data, loading, pagination, mutate, refresh, run, params } = useRequest((params = {}, ...args) => { - // const { current, pageSize, sorter, filter, ...restParams } = params; - // return api.resource(resourceName).list({ - // associatedKey, - // sort, - // }).then(({data = [], meta = {}}) => { - // return { - // data: { - // list: data, - // total: meta.count||data.length, - // }, - // }; - // }); - // }, { - // paginated, - // defaultPageSize: defaultPerPage, - // }); - - const [selectedRowKeys, setSelectedRowKeys] = useState( - defaultSelectedRowKeys || [], - ); - const onChange = ( - selectedRowKeys: React.ReactText[], - selectedRows: React.ReactText[], - ) => { - setSelectedRowKeys(selectedRowKeys); - onSelected && onSelected(selectedRows); - }; - // useEffect(() => { - // setSelectedRowKeys(srk); - // }, [srk]); - // console.log(srk); - const tableProps: any = {}; - - if (actions.length || defaultSelectedRowKeys) { - tableProps.rowSelection = { - type: multiple ? 'checkbox' : 'radio', - selectedRowKeys, - onChange, - }; - } - - const ref = createRef(); - - const dragProps = { - async onDragEnd(fromIndex, toIndex) { - const list = data?.list || (data as any); - const nodes = ref.current.querySelectorAll('.ant-table-row'); - const resourceKey = nodes[fromIndex].getAttribute('data-row-key'); - const targetIndex = nodes[toIndex].getAttribute('data-row-key'); - - // const newList = arrayMove(list, fromIndex, toIndex); - // const item = list.splice(fromIndex, 1)[0]; - // list.splice(toIndex, 0, item); - // mutate({ - // ...data, - // list: newList, - // }); - await api.resource(resourceName).sort({ - associatedKey, - resourceKey, - values: { - field: 'sort', - target: { - [rowKey]: targetIndex, - }, - }, - }); - await refresh(); - await reloadMenu(); - - // console.log(nodes[fromIndex].getAttribute('data-row-key'), nodes[toIndex]) - console.log({ - // ref: ref.current.querySelectorAll('.ant-table-row'), - // fromIndex, toIndex, newList, - values: { - field: 'sort', - target: { - [rowKey]: targetIndex, - }, - }, - }); - }, - handleSelector: '.drag-handle', - ignoreSelector: 'tr.ant-table-expanded-row', - nodeSelector: 'tr.ant-table-row', - }; - - return ( -
-
- - - { - if (!detailsOpenMode || !details.length) { - return
; - } - return ( - - ); - }, - }, - }} - dataSource={data?.list || (data as any)} - size={'middle'} - columns={fields2columns(fields, { associatedKey, refresh })} - pagination={false} - onChange={(pagination, filters, sorter, extra) => { - console.log({sorter}); - run({ ...params[0], sorter }); - }} - expandable={expandable} - onRow={data => ({ - onClick: e => { - const className = (e.target as HTMLElement).className; - console.log({ className }); - if ( - typeof className === 'string' && - (className.includes('ant-table-selection-column') || - className.includes('ant-checkbox') || - className.includes('ant-radio')) - ) { - return; - } - if (!detailsOpenMode || !details.length) { - return; - } - if (!isFieldComponent && detailsOpenMode === 'window') { - const paths = history.location.pathname.split('/'); - history.push(`/admin/${paths[2]}/${data[rowKey]}/0`); - } else { - Drawer.open({ - headerStyle: - details.length > 1 - ? { - paddingBottom: 0, - borderBottom: 0, - // paddingTop: 16, - // marginBottom: -4, - } - : {}, - // title: details.length > 1 ? undefined : data[labelField], - title: data[labelField], - bodyStyle: { - // padding: 0, - }, - content: ({ resolve, closeWithConfirm }) => ( -
-
{ - await refresh(); - resolve(); - await reloadMenu(); - }} - onValueChange={() => { - closeWithConfirm && closeWithConfirm(true); - }} - onDraft={async () => { - await refresh(); - resolve(); - await reloadMenu(); - }} - onReset={resolve} - onDataChange={async () => { - await refresh(); - await reloadMenu(); - }} - data={data} - resolve={resolve} - items={details} - /> -
- ), - }); - } - }, - })} - {...tableProps} - /> - - {paginated && ( -
- `共 ${total} 条记录`} - showQuickJumper - showSizeChanger - size={'small'} - /> -
- )} - - {currentRow && ( -
- { - await refresh(); - await reloadMenu(); - }} - onReset={() => {}} - onDataChange={async () => { - await refresh(); - await reloadMenu(); - }} - currentRowId={currentRowId} - data={currentRow} - items={details} - /> -
- )} - - ); -} diff --git a/packages/app/src/components/views/Wysiwyg.tsx b/packages/app/src/components/views/Wysiwyg.tsx deleted file mode 100644 index 8c3e2c387..000000000 --- a/packages/app/src/components/views/Wysiwyg.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import './style.less'; -import { markdown } from '@/components/views/Field'; - -export function Wysiwyg(props) { - const { data: record = {}, schema = {}, onDataChange } = props; - - const { html = '' } = schema; - - return
; -} diff --git a/packages/app/src/components/views/fields2columns.tsx b/packages/app/src/components/views/fields2columns.tsx deleted file mode 100644 index 775943d07..000000000 --- a/packages/app/src/components/views/fields2columns.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; - -import { MenuOutlined } from '@ant-design/icons'; -import Field from '@/components/views/Field'; -import cloneDeep from 'lodash/cloneDeep'; -import { Checkbox, message } from 'antd'; -import api from '@/api-client'; - -export const DragHandle = () => ( - -); - -export function fields2columns(fields = [], ctx: any = {}) { - const columns: any[] = fields.map(item => { - const field = cloneDeep(item); - if (!field.dataIndex) { - field.dataIndex = field.name.split('.'); - } - if (['datetime', 'number'].includes(field.interface)) { - field.sorter = true; - } - field.render = (value, record, index) => - field.interface === 'sort' ? ( - - ) : ( - - ); - field.className = `${field.className || ''} noco-field-${field.interface}`; - if (field.editable && field.interface === 'boolean') { - field.title = ( - - { - try { - await api.resource(field.resource).update({ - associatedKey: ctx.associatedKey, - // resourceKey: data.id, - // tableName: data.tableName||'pages', - values: { - accessible: e.target.checked, - }, - }); - message.success('保存成功'); - if (ctx.refresh) { - ctx.refresh(); - } - } catch (error) { - message.error('保存失败'); - } - }} - />{' '} - {field.title} - - ); - } - return { - ...field, - ...(field.component || {}), - }; - }); - return columns; -} diff --git a/packages/app/src/components/views/index.tsx b/packages/app/src/components/views/index.tsx deleted file mode 100644 index 56d7594b2..000000000 --- a/packages/app/src/components/views/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import './style.less'; -import { Helmet } from 'umi'; -import { Spin } from '@/components/spin'; -import { useRequest, useLocation } from 'umi'; -import api from '@/api-client'; -import { Actions } from '@/components/actions'; -import { - Table as AntdTable, - Card, - Pagination, - Button, - Tabs, - Tooltip, -} from 'antd'; -import { LoadingOutlined } from '@ant-design/icons'; -import { Form } from './Form'; -import { Table } from './Table'; -import { Association } from './Association'; -import { Descriptions } from './Descriptions'; -import { FilterForm } from './FilterForm'; -import { SubTable } from './SubTable'; -import { Wysiwyg } from './Wysiwyg'; -import { Calendar } from './Calendar'; -import { Kanban } from './Kanban'; -import { setValidationLanguage } from '@formily/antd'; -import { setup } from '@/components/fields'; - -setup(); -setValidationLanguage('zh-CN'); - -const VIEWS = new Map(); - -export function registerView(type, view) { - VIEWS.set(type, view); -} - -export function getView(type) { - return VIEWS.get(type); -} - -export const icon = ; - -export function View(props: any) { - const { wrapper, schema, viewName, children, ...restProps } = props; - - const { data = {}, loading } = useRequest( - () => { - return schema - ? Promise.resolve({ data: schema }) - : api.resource('views_v2').getInfo({ - resourceKey: viewName, - }); - }, - { - refreshDeps: [viewName, schema], - }, - ); - - if (loading) { - return ; - } - - const type = props.type || data.type; - - const Component = getView(type); - - if (wrapper === 'card') { - return ( - - - - ) - } - - return ; -} - -registerView('table', Table); -registerView('subTable', SubTable); -registerView('form', Form); -registerView('filterForm', FilterForm); -registerView('descriptions', Descriptions); -registerView('association', Association); -registerView('wysiwyg', Wysiwyg); -registerView('markdown', Wysiwyg); -registerView('calendar', Calendar); -registerView('kanban', Kanban); - -export default View; diff --git a/packages/app/src/components/views/scopes.tsx b/packages/app/src/components/views/scopes.tsx deleted file mode 100644 index 1f8711b1d..000000000 --- a/packages/app/src/components/views/scopes.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import { Tooltip } from 'antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import { markdown } from './Field'; - -export default { - text(...args: any[]) { - return React.createElement('span', {}, ...args); - }, - html(html: string) { - const text = decodeURIComponent(html); - return
; - }, - markdown(text: string) { - return ; - }, - tooltip(title: string, offset = 3) { - return ( - }> - - - ); - }, -}; diff --git a/packages/app/src/components/views/style.less b/packages/app/src/components/views/style.less deleted file mode 100644 index 6cb38b546..000000000 --- a/packages/app/src/components/views/style.less +++ /dev/null @@ -1,162 +0,0 @@ -.ant-drawer-body { - padding-bottom: 50px; - .form-button-group { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - padding: 10px 16px; - border-top: 1px solid #f0f0f0; - background-color: #fff; - } -} -.ant-drawer-footer { - text-align: right; -} -.ant-descriptions-view - .ant-descriptions-item-container - .ant-descriptions-item-label { - align-items: center; -} -.page-tabs { - .ant-tabs { - margin: -24px -24px 8px; - position: relative; - // position: relative; - // // border-bottom: 1px solid #f0f0f0; - // padding: 0 24px; - // &::after { - // position: absolute; - // right: -24px; - // left: -24px; - // border-bottom: 1px solid #f0f0f0; - // content: ''; - // bottom: 16px; - // z-index: 11; - // } - .ant-tabs-nav { - &::before { - right: -24px; - left: -24px; - } - .ant-tabs-tab { - margin: 0 0 0 24px; - } - // margin-bottom: -1px; - } - } -} - -.markdown-content { - *:last-child { - margin-bottom: 0; - } -} - -.details-page { - background: #f0f2f5; - position: fixed; - top: 48px; - left: 200px; - width: calc(100% - 200px); - height: calc(100% - 48px); - overflow: auto; - transition: all 0.2s; -} - -body.collapsed { - .details-page { - left: 0; - width: 100%; - } -} - -@media only screen and (max-width: 800px) { - .details-page { - left: 0; - width: 100%; - } -} - -.users-form { - max-width: 368px; - margin: 0 auto; - padding-top: 100px; - padding: 100px 12px 12px; -} - -.ant-form-item-with-help { - margin-bottom: 24px; -} - -.users-form { - .button-group { - justify-content: flex-start; - .ant-row { - width: 100%; - } - .ant-col.inline { - width: 100%; - } - } -} - -.ant-radio-wrapper { - p { - display: inline; - } -} -.ant-table-cell:not(.ant-table-selection-column) { - min-width: 100px; - white-space: nowrap; -} -.ant-table-wrapper { - overflow: auto; -} -.table-pagination { - margin-top: 24px; - ul { - float: right; - } -} - -.ant-descriptions-item-label { - font-weight: 500; - text-align: right; - width: 200px; -} - -.ant-form-item-label { - font-weight: 500; -} - -.row-clickable { - cursor: pointer; -} - -.ant-table-tbody > tr.row-clickable:hover > td { - background: #e6f7ff; - border-color: rgba(0, 0, 0, 0.03); -} - -.ant-descriptions-header { - margin-top: 20px; - .ant-descriptions-title { - font-weight: 500; - } -} - -.row-dragging { - background: #fafafa; - border: 1px solid #ccc; - z-index: 99999; -} - -.row-dragging td { - padding: 16px; - visibility: hidden; -} - -.row-dragging .drag-visible { - visibility: visible; -} diff --git a/packages/app/src/css_browser_selector.js b/packages/app/src/css_browser_selector.js deleted file mode 100644 index bf0a0f143..000000000 --- a/packages/app/src/css_browser_selector.js +++ /dev/null @@ -1,163 +0,0 @@ -/* -CSS Browser Selector 0.6.3 -Originally written by Rafael Lima (http://rafael.adm.br) -http://rafael.adm.br/css_browser_selector -License: http://creativecommons.org/licenses/by/2.5/ -Co-maintained by: -https://github.com/verbatim/css_browser_selector -*/ - -showLog=true; -function log(m) {if ( window.console && showLog ) {console.log(m); } } - -function css_browser_selector(u) { - var uaInfo = {}, - screens = [320, 480, 640, 768, 1024, 1152, 1280, 1440, 1680, 1920, 2560], - allScreens = screens.length, - ua=u.toLowerCase(), - is=function(t) { return RegExp(t,"i").test(ua); }, - version = function(p,n) - { - n=n.replace(".","_"); var i = n.indexOf('_'), ver=""; - while (i>0) {ver += " "+ p+n.substring(0,i);i = n.indexOf('_', i+1);} - ver += " "+p+n; return ver; - }, - g='gecko', - w='webkit', - c='chrome', - f='firefox', - s='safari', - o='opera', - m='mobile', - a='android', - bb='blackberry', - lang='lang_', - dv='device_', - html=document.documentElement, - b= [ - - // browser - ((!(/opera|webtv/i.test(ua))&&/msie\s(\d+)/.test(ua)||(/trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.test(ua))))?('ie ie'+(/trident\/4\.0/.test(ua) ? '8' : RegExp.$1 == '11.0'?'11':RegExp.$1)) - :is('firefox/')?g+ " " + f+(/firefox\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+f+RegExp.$2 + ' '+f+RegExp.$2+"_"+RegExp.$4:'') - :is('gecko/')?g - :is('opera')?o+(/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+o+RegExp.$2 + ' '+o+RegExp.$2+"_"+RegExp.$4 : (/opera(\s|\/)(\d+)\.(\d+)/.test(ua)?' '+o+RegExp.$2+" "+o+RegExp.$2+"_"+RegExp.$3:'')) - :is('konqueror')?'konqueror' - - :is('blackberry') ? - ( bb + - ( /Version\/(\d+)(\.(\d+)+)/i.test(ua) - ? " " + bb+ RegExp.$1 + " "+bb+ RegExp.$1+RegExp.$2.replace('.','_') - : (/Blackberry ?(([0-9]+)([a-z]?))[\/|;]/gi.test(ua) - ? ' ' +bb+RegExp.$2 + (RegExp.$3?' ' +bb+RegExp.$2+RegExp.$3:'') - : '') - ) - ) // blackberry - - :is('android') ? - ( a + - ( /Version\/(\d+)(\.(\d+))+/i.test(ua) - ? " " + a+ RegExp.$1 + " "+a+ RegExp.$1+RegExp.$2.replace('.','_') - : '') - + (/Android (.+); (.+) Build/i.test(ua) - ? ' '+dv+( (RegExp.$2).replace(/ /g,"_") ).replace(/-/g,"_") - :'' ) - ) //android - - :is('chrome')?w+ ' '+c+(/chrome\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)?' '+c+RegExp.$2 +((RegExp.$4>0) ? ' '+c+RegExp.$2+"_"+RegExp.$4:''):'') - - :is('iron')?w+' iron' - - :is('applewebkit/') ? - ( w+ ' '+ s + - ( /version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua) - ? ' '+ s +RegExp.$2 + " "+s+ RegExp.$2+RegExp.$3.replace('.','_') - : ( / Safari\/(\d+)/i.test(ua) - ? - ( (RegExp.$1=="419" || RegExp.$1=="417" || RegExp.$1=="416" || RegExp.$1=="412" ) ? ' '+ s + '2_0' - : RegExp.$1=="312" ? ' '+ s + '1_3' - : RegExp.$1=="125" ? ' '+ s + '1_2' - : RegExp.$1=="85" ? ' '+ s + '1_0' - : '' ) - :'') - ) - ) //applewebkit - - :is('mozilla/')?g - :'' - - // mobile - ,is("android|mobi|mobile|j2me|iphone|ipod|ipad|blackberry|playbook|kindle|silk")?m:'' - - // os/platform - ,is('j2me')?'j2me' - :is('ipad|ipod|iphone')? - ( - ( - /CPU( iPhone)? OS (\d+[_|\.]\d+([_|\.]\d+)*)/i.test(ua) ? - 'ios' + version('ios',RegExp.$2) : '' - ) + ' ' + ( /(ip(ad|od|hone))/gi.test(ua) ? RegExp.$1 : "" ) - ) //'iphone' - //:is('ipod')?'ipod' - //:is('ipad')?'ipad' - :is('playbook')?'playbook' - :is('kindle|silk')?'kindle' - :is('playbook')?'playbook' - :is('mac')?'mac'+ (/mac os x ((\d+)[.|_](\d+))/.test(ua) ? ( ' mac' + (RegExp.$2) + ' mac' + (RegExp.$1).replace('.',"_") ) : '' ) - :is('win')?'win'+ - (is('windows nt 6.2')?' win8' - :is('windows nt 6.1')?' win7' - :is('windows nt 6.0')?' vista' - :is('windows nt 5.2') || is('windows nt 5.1') ? ' win_xp' - :is('windows nt 5.0')?' win_2k' - :is('windows nt 4.0') || is('WinNT4.0') ?' win_nt' - : '' - ) - :is('freebsd')?'freebsd' - :(is('x11|linux'))?'linux' - :'' - - // user agent language - ,(/[; |\[](([a-z]{2})(\-[a-z]{2})?)[)|;|\]]/i.test(ua))?(lang+RegExp.$2).replace("-","_")+(RegExp.$3!=''?(' '+lang+RegExp.$1).replace("-","_"):''):'' - - // beta: test if running iPad app - ,( is('ipad|iphone|ipod') && !is('safari') ) ? 'ipad_app' : '' - - - ]; // b - - console.debug(ua); - - function screenSize() { - var w = window.outerWidth || html.clientWidth; - var h = window.outerHeight || html.clientHeight; - uaInfo.orientation = ((w=0;i--) { if (w >= screens[i] ) { uaInfo.maxw = screens[i]; break; }} - widthClasses=""; - for (var info in uaInfo) { widthClasses+=" "+info+"_"+ uaInfo[info] }; - html.className = ( html.className +widthClasses ); - return widthClasses; - } // screenSize - - window.onresize = screenSize; - screenSize(); - - function retina(){ - var r = window.devicePixelRatio > 1; - if (r) { - html.className+=' retina'; - } - else { - html.className+=' non-retina'; - } - } - retina(); - - var cssbs = (b.join(' ')) + " js "; - html.className = ( cssbs + html.className.replace(/\b(no[-|_]?)?js\b/g,"") ).replace(/^ /, "").replace(/ +/g," "); - - return cssbs; -} - -css_browser_selector(navigator.userAgent); \ No newline at end of file diff --git a/packages/app/src/global.less b/packages/app/src/global.less deleted file mode 100644 index 785f6217b..000000000 --- a/packages/app/src/global.less +++ /dev/null @@ -1,99 +0,0 @@ -.win { - /* width */ - ::-webkit-scrollbar { - width: 8px; - height: 8px; - } - - /* Track */ - ::-webkit-scrollbar-track { - background: #f1f1f1; - } - - /* Handle */ - ::-webkit-scrollbar-thumb { - background: #c0c0c0; - border-radius: 4px; - } - - /* Handle on hover */ - ::-webkit-scrollbar-thumb:hover { - background: #a8a8a8; - } - - .rc-virtual-list-scrollbar-thumb { - background: #c0c0c0 !important; - } -} - -.ant-page-header-footer { - margin-top: 5px; -} - -.button-group { - display: flex; - justify-content: flex-end; - width: 100%; -} - -.spinning--absolute { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - max-height: inherit !important; -} - -.ant-drawer.nb-drawer { - .ant-drawer-content-wrapper { - width: 75%; - max-width: 1000px; - } -} - -@media only screen and (max-width: 800px) { - .ant-drawer.nb-drawer .ant-drawer-content-wrapper { - width: 100% !important; - } - .ant-drawer.noco-drawer { - .ant-drawer-content-wrapper { - width: 100% !important; - } - } -} - -.data-source-table { - .ant-table-thead .ant-table-cell { - padding: 11px; - } - .ant-table-tbody .ant-table-cell { - padding: 0; - } - .ant-form-item { - margin-bottom: 0; - .ant-btn { - border: 0; - box-shadow: none; - background: none; - margin-right: 0; - } - .ant-form-item-explain.ant-form-item-explain-error { - position: absolute; - pointer-events: none; - padding: 5px 11px; - } - } - + .array-table-addition { - border: 1px dashed #d9d9d9; - text-align: center; - border-radius: 2px !important; - .ant-btn { - display: block; - width: 100%; - } - } -} diff --git a/packages/app/src/pages/document.ejs b/packages/app/src/pages/document.ejs deleted file mode 100644 index f2ba26085..000000000 --- a/packages/app/src/pages/document.ejs +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - loading... - - - -
- - diff --git a/packages/create-nocobase-app/templates/AppGenerator/src/pages/index.less b/packages/app/src/pages/index.less old mode 100755 new mode 100644 similarity index 76% rename from packages/create-nocobase-app/templates/AppGenerator/src/pages/index.less rename to packages/app/src/pages/index.less index fd9812c34..586302bfc --- a/packages/create-nocobase-app/templates/AppGenerator/src/pages/index.less +++ b/packages/app/src/pages/index.less @@ -1,7 +1,3 @@ - -.normal { -} - .title { background: rgb(121, 242, 157); } diff --git a/packages/app/src/pages/index.tsx b/packages/app/src/pages/index.tsx index 2c812531a..71da229f0 100644 --- a/packages/app/src/pages/index.tsx +++ b/packages/app/src/pages/index.tsx @@ -1,12 +1,21 @@ -import PageLoader from '@/components/pages'; +import React, { useEffect } from 'react'; +import { Spin } from 'antd'; +import { + RouteSwitch, + useGlobalAction, + loadBlocks, + loadTemplates, + templates, +} from '@nocobase/client'; -// TODO:这部分现在还是写在代码里的,待改进 -export const templates = { - AdminLoader: require('@/components/pages/AdminLoader').default, - login: require('@/pages/login').default, - register: require('@/pages/register').default, - lostpassword: require('@/pages/lostpassword').default, - resetpassword: require('@/pages/resetpassword').default, -}; +loadBlocks(); +loadTemplates(); -export default PageLoader; +export default function IndexPage() { + const { data, loading } = useGlobalAction('routes:getAccessible'); + console.log({ data }); + if (loading) { + return ; + } + return ; +} diff --git a/packages/app/src/pages/login.tsx b/packages/app/src/pages/login.tsx deleted file mode 100644 index acf64f19b..000000000 --- a/packages/app/src/pages/login.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { Helmet, useModel, Link } from 'umi'; -import get from 'lodash/get'; -import { Login } from '@/components/views/Login'; - -export default (props: any) => { - const { initialState = {}, refresh, setInitialState } = useModel( - '@@initialState', - ); - const siteTitle = get(initialState, 'systemSettings.title'); - return ( -
- - {siteTitle ? `登录 - ${siteTitle}` : '登录'} - - -
- ); -}; diff --git a/packages/app/src/pages/lostpassword.tsx b/packages/app/src/pages/lostpassword.tsx deleted file mode 100644 index 309b8e752..000000000 --- a/packages/app/src/pages/lostpassword.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { Helmet, useModel } from 'umi'; -import get from 'lodash/get'; -import { LostPassword } from '@/components/views/LostPassword'; - -export default (props: any) => { - const { initialState = {}, refresh, setInitialState } = useModel( - '@@initialState', - ); - const siteTitle = get(initialState, 'systemSettings.title'); - return ( -
- - {siteTitle ? `忘记密码 - ${siteTitle}` : '忘记密码'} - - -
- ); -}; diff --git a/packages/app/src/pages/register.tsx b/packages/app/src/pages/register.tsx deleted file mode 100644 index 18e533bd4..000000000 --- a/packages/app/src/pages/register.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { Helmet, useModel } from 'umi'; -import get from 'lodash/get'; -import { Register } from '@/components/views/Register'; - -export default (props: any) => { - const { initialState = {}, refresh, setInitialState } = useModel( - '@@initialState', - ); - const siteTitle = get(initialState, 'systemSettings.title'); - return ( -
- - {siteTitle ? `注册 - ${siteTitle}` : '注册'} - - -
- ); -}; diff --git a/packages/app/src/pages/resetpassword.tsx b/packages/app/src/pages/resetpassword.tsx deleted file mode 100644 index f386b0685..000000000 --- a/packages/app/src/pages/resetpassword.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { Helmet, useModel } from 'umi'; -import get from 'lodash/get'; -import { ResetPassword } from '@/components/views/ResetPassword'; - -export default (props: any) => { - const { initialState = {}, refresh, setInitialState } = useModel( - '@@initialState', - ); - const siteTitle = get(initialState, 'systemSettings.title'); - return ( -
- - {siteTitle ? `重置密码 - ${siteTitle}` : '重置密码'} - - -
- ); -}; diff --git a/packages/app/src/pages/style.less b/packages/app/src/pages/style.less deleted file mode 100644 index 7892adf7f..000000000 --- a/packages/app/src/pages/style.less +++ /dev/null @@ -1,9 +0,0 @@ -.nb-sider { - position: relative; - left: 0; - z-index: 100; - box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05); - .ant-menu-light { - border-right-color: transparent !important; - } -} diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json old mode 100755 new mode 100644 index 8c24faf7e..bc5250b03 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -1,21 +1,18 @@ { "compilerOptions": { - "lib": [ "es5", "es6" ], - "module": "commonjs", - "target": "es6", + "target": "esnext", + "module": "esnext", "moduleResolution": "node", "importHelpers": true, - "jsx": "react", + "jsx": "react-jsx", "esModuleInterop": true, "sourceMap": true, "baseUrl": "./", - "allowJs": true, - "strict": false, + "strict": true, "paths": { "@/*": ["src/*"], "@@/*": ["src/.umi/*"] }, - "noImplicitAny": false, "allowSyntheticDefaultImports": true }, "include": [ @@ -24,5 +21,16 @@ "config/**/*", ".umirc.ts", "typings.d.ts" + ], + "exclude": [ + "node_modules", + "lib", + "es", + "dist", + "typings", + "**/__test__", + "test", + "docs", + "tests" ] } diff --git a/packages/app/typings.d.ts b/packages/app/typings.d.ts old mode 100755 new mode 100644 index 5df84ee02..06c8a5b8c --- a/packages/app/typings.d.ts +++ b/packages/app/typings.d.ts @@ -1,8 +1,10 @@ declare module '*.css'; declare module '*.less'; -declare module "*.png"; +declare module '*.png'; declare module '*.svg' { - export function ReactComponent(props: React.SVGProps): React.ReactElement - const url: string - export default url + export function ReactComponent( + props: React.SVGProps, + ): React.ReactElement; + const url: string; + export default url; } diff --git a/packages/app/umi.js b/packages/app/umi.js deleted file mode 100644 index 8a37a191b..000000000 --- a/packages/app/umi.js +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env node - -try { - require.resolve('umi'); - - require('v8-compile-cache'); - - const resolveCwd = require('@umijs/deps/compiled/resolve-cwd'); - - const { name, bin } = require('umi/package.json'); - const localCLI = resolveCwd.silent(`${name}/${bin['umi']}`); - if (!process.env.USE_GLOBAL_UMI && localCLI && localCLI !== __filename) { - const debug = require('@umijs/utils').createDebug('umi:cli'); - debug('Using local install of umi'); - require(localCLI); - } else { - require('umi/lib/cli'); - } - -} catch (error) { - console.log('done') -} diff --git a/packages/client/package.json b/packages/client/package.json index 6e44652a2..98e605d66 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,7 +1,31 @@ { - "name": "@nocobase/client", - "version": "0.4.0-alpha.7", - "main": "lib/index.js", - "license": "MIT", - "gitHead": "f0b335ac30f29f25c95d7d137655fa64d8d67f1e" + "name": "@nocobase/client", + "version": "0.4.0-alpha.7", + "main": "lib/index.js", + "typings": "lib/index.d.ts", + "license": "MIT", + "scripts": { + "build": "rimraf -rf lib esm dist && npm run build:cjs", + "build:cjs": "tsc --declaration" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 || >=17.0.0", + "@types/react-dom": ">=16.8.0 || >=17.0.0", + "antd": "^4.0.0", + "react": ">=16.8.0 || >=17.0.0", + "react-dom": ">=16.8.0 || >=17.0.0", + "react-router-dom": ">=5.2.0" + }, + "gitHead": "f0b335ac30f29f25c95d7d137655fa64d8d67f1e", + "dependencies": { + "@formily/antd": "^2.0.0-beta.54", + "@formily/core": "^2.0.0-beta.54", + "@formily/react": "^2.0.0-beta.54", + "ahooks": "^2.10.2", + "axios": "^0.21.1", + "lodash": "^4.17.21", + "react-helmet": "^6.1.0", + "react-hooks-global-state": "^1.0.1", + "umi-request": "^1.3.5" + } } diff --git a/packages/client/src/api.md b/packages/client/src/api.md new file mode 100644 index 000000000..2aa71b8c2 --- /dev/null +++ b/packages/client/src/api.md @@ -0,0 +1,27 @@ +--- +title: API - 接口 +nav: + title: 组件 + path: /client +order: 99 +group: + order: 3 + title: 其他 + path: /client/others +--- + +# API - 接口 + +## setGlobalState + +## setGlobalActionState + +## useGlobalState + +## useGlobalAction + +## refreshGlobalAction + +## useAction + +## doAction diff --git a/packages/client/src/blocks/block/index.md b/packages/client/src/blocks/block/index.md new file mode 100644 index 000000000..151e0e057 --- /dev/null +++ b/packages/client/src/blocks/block/index.md @@ -0,0 +1,34 @@ +--- +title: Block - 区块 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Block - 区块 + +```tsx +import React from 'react'; +import BlockEditor from './'; + +const items = [ + { + type: 'page', + name: 'block1', + }, + { + type: 'page', + name: 'block2', + } +] + +export default () => { + return ( + + ) +} +``` diff --git a/packages/client/src/blocks/block/index.tsx b/packages/client/src/blocks/block/index.tsx new file mode 100644 index 000000000..d281e1b5f --- /dev/null +++ b/packages/client/src/blocks/block/index.tsx @@ -0,0 +1,94 @@ +import React from 'react'; +import { Dropdown, Menu, Card, Button, Popover } from 'antd'; +import { useDynamicList } from 'ahooks'; +import { MenuOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons'; +import './style.less'; +import { FormDialog, FormLayout } from '@formily/antd'; +import { SchemaField } from '../../fields'; + +export function AddNewAction(props) { + const { insert, children } = props; + const menu = ( + + { + FormDialog(`新建区块`, () => { + return ( + + + + + + ); + }) + .open({}) + .then(insert); + }} + > + 新建区块 + + + ); + return {children || }; +} + +export function SettingAction(props) { + const { remove } = props; + const menu = ( + + remove()} key="delete"> + 删除区块 + + + ); + return ( + + + + ); +} + +export function BlockItem(props) { + const { remove, insert, replace } = props; + return ( +
+
+ + +
+
+ + 这是内容区 + +
+
+ ); +} + +export default (props) => { + const { list, push, remove, replace, insert } = useDynamicList(props.items); + return ( +
+ {list.map((item, index) => ( + insert(index + 1, data)} + replace={(data) => replace(index, data)} + remove={() => remove(index)} + key={index} + schema={item} + /> + ))} +
+ push(data)}> + + +
+ ); +}; diff --git a/packages/client/src/blocks/block/style.less b/packages/client/src/blocks/block/style.less new file mode 100644 index 000000000..7ab49e1d6 --- /dev/null +++ b/packages/client/src/blocks/block/style.less @@ -0,0 +1,20 @@ +.block-list { + background: #f0f2f5; + padding: 0 24px 24px; +} +.block-item { + position: relative; + padding-top: 24px; + .block-item-actions { + display: none; + position: absolute; + top: 0; + right: 0; + z-index: 1; + } + &:hover { + .block-item-actions { + display: inline-block; + } + } +} \ No newline at end of file diff --git a/packages/client/src/blocks/calendar/index.md b/packages/client/src/blocks/calendar/index.md new file mode 100644 index 000000000..29935be6c --- /dev/null +++ b/packages/client/src/blocks/calendar/index.md @@ -0,0 +1,12 @@ +--- +title: Calendar - 日历 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Calendar - 日历 diff --git a/packages/app/src/components/fields/form-layout/style.ts b/packages/client/src/blocks/calendar/index.tsx similarity index 100% rename from packages/app/src/components/fields/form-layout/style.ts rename to packages/client/src/blocks/calendar/index.tsx diff --git a/packages/client/src/blocks/chart/index.md b/packages/client/src/blocks/chart/index.md new file mode 100644 index 000000000..e1bd37d1c --- /dev/null +++ b/packages/client/src/blocks/chart/index.md @@ -0,0 +1,13 @@ +--- +title: Chart - 图表 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Chart - 图表 + diff --git a/packages/app/src/components/fields/form-mega-layout/style.ts b/packages/client/src/blocks/chart/index.tsx similarity index 100% rename from packages/app/src/components/fields/form-mega-layout/style.ts rename to packages/client/src/blocks/chart/index.tsx diff --git a/packages/client/src/blocks/descriptions/index.tsx b/packages/client/src/blocks/descriptions/index.tsx new file mode 100644 index 000000000..64e1ab622 --- /dev/null +++ b/packages/client/src/blocks/descriptions/index.tsx @@ -0,0 +1,8 @@ +import React from 'react'; +import { FormBlock } from '../form'; + +export function DescriptionsBlock(props: any) { + return +}; + +export default DescriptionsBlock; diff --git a/packages/client/src/blocks/form/Resource.ts b/packages/client/src/blocks/form/Resource.ts new file mode 100644 index 000000000..6eba0b617 --- /dev/null +++ b/packages/client/src/blocks/form/Resource.ts @@ -0,0 +1,62 @@ +import request from 'umi-request'; + +export interface ResourceOptions { + resourceName: string; + associatedKey?: any; + associatedName?: string; + resourceKey?: any; +} + +export interface GetOptions { + resourceKey?: any; + appends?: string[]; +} + +export interface SaveOptions { + resourceKey?: any; +} + +export class Resource { + + protected options: ResourceOptions; + + constructor(options: string | ResourceOptions) { + if (typeof options === 'string') { + this.options = { resourceName: options } + } else { + this.options = options; + } + } + + get(options: GetOptions = {}) { + const resourceKey = options.resourceKey || this.options.resourceKey; + const { resourceName } = this.options; + if (!resourceKey) { + return Promise.resolve({ data: {} }); + } + return request(`/api/${resourceName}:get/${resourceKey}`); + } + + save(values: any, options: SaveOptions = {}) { + const resourceKey = options.resourceKey || this.options.resourceKey; + const { resourceName } = this.options; + const url = `/api/${resourceName}:${resourceKey ? `update/${resourceKey}` : 'create'}`; + return request(url, { + method: 'post', + data: values, + }); + } + + static make(options: string | Resource | ResourceOptions) { + if (typeof options === 'string') { + return new Resource({ resourceName: options }); + } + if (options instanceof Resource) { + return options; + } + if (typeof options === 'object' && options.resourceName) { + return new Resource(options); + } + throw 'resource 参数错误'; + } +} diff --git a/packages/client/src/blocks/form/SchemaField.tsx b/packages/client/src/blocks/form/SchemaField.tsx new file mode 100644 index 000000000..39adde2fc --- /dev/null +++ b/packages/client/src/blocks/form/SchemaField.tsx @@ -0,0 +1,12 @@ +import { Input, FormItem } from '@formily/antd'; +import { createSchemaField } from '@formily/react'; + +export const SchemaField = createSchemaField({ + components: { + Input, + FormItem, + }, + scope: {}, +}); + +export default SchemaField; diff --git a/packages/client/src/blocks/form/demos/demo1.tsx b/packages/client/src/blocks/form/demos/demo1.tsx new file mode 100644 index 000000000..1b3ace2de --- /dev/null +++ b/packages/client/src/blocks/form/demos/demo1.tsx @@ -0,0 +1,33 @@ +/** + * title: 基本使用 + */ +import React from 'react'; +import { FormBlock } from '@nocobase/client'; + +export default () => { + return ( + + ); +}; diff --git a/packages/client/src/blocks/form/demos/demo2.tsx b/packages/client/src/blocks/form/demos/demo2.tsx new file mode 100644 index 000000000..3c01fa3ba --- /dev/null +++ b/packages/client/src/blocks/form/demos/demo2.tsx @@ -0,0 +1,37 @@ +/** + * title: 更新数据表单 + * desc: 设置 `resource` 的 `resourceKey` 参数 + */ +import React from 'react'; +import { FormBlock } from '@nocobase/client'; + +export default () => { + return ( + + ); +}; diff --git a/packages/client/src/blocks/form/demos/demo3.tsx b/packages/client/src/blocks/form/demos/demo3.tsx new file mode 100644 index 000000000..388870c77 --- /dev/null +++ b/packages/client/src/blocks/form/demos/demo3.tsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { FormBlock, Drawer } from '@nocobase/client'; + +export default () => { + const items = [ + { id: 1, username: '文本一' }, + { id: 2, username: '文本二' }, + ]; + return ( + + ); +}; diff --git a/packages/client/src/blocks/form/demos/demo4.tsx b/packages/client/src/blocks/form/demos/demo4.tsx new file mode 100644 index 000000000..2f6bd1c31 --- /dev/null +++ b/packages/client/src/blocks/form/demos/demo4.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { Drawer, FormBlock } from '@nocobase/client'; + +export default () => { + const items = [ + { id: 1, username: '文本一' }, + { id: 2, username: '文本二' }, + ]; + return ( + + ); +}; diff --git a/packages/client/src/blocks/form/index.md b/packages/client/src/blocks/form/index.md new file mode 100644 index 000000000..a13aafc5f --- /dev/null +++ b/packages/client/src/blocks/form/index.md @@ -0,0 +1,94 @@ +--- +title: Form - 表单 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Form - 表单 + +## 示例 + +### 基本使用 + + + +### 更新数据表单 + + + +### 抽屉表单 + + + +### 阅读模式 + + + +## Props API + +可能包括四部分: + +- IFormLayoutProps:表单布局相关参数 +- IFormProps:用于初始化 form 实例 +- ISchemaField:表单字段配置 +- ResourceOptions:用于资源定位 + +暂时只提供了一些核心的参数 + +### resource ResourceOptions + +这部分参数还有待改进 + +```ts +export interface ResourceOptions { + resourceName: string; + associatedKey?: string; + associatedName?: string; + resourceKey?: string; +} +``` + +### fields ISchemaField + +字段配置 + +```ts +{ + interface: 'string', + type: 'string', + title: `单行文本`, + name: 'username', + required: true, + component: { + type: 'string', + default: 'aa', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-component-props': {}, + }, +} +``` + +### readPretty + +详情展示 + +### initialValues IFormProps + +初始值 + +### effects IFormProps + +支持以下 Effect Hooks + +- [Form Effect Hooks](https://core.formilyjs.org/api/entry/form-effect-hooks) +- [Field Effect Hooks](https://core.formilyjs.org/api/entry/field-effect-hooks) + +### onSuccess + +数据提交成功的回调函数 diff --git a/packages/client/src/blocks/form/index.tsx b/packages/client/src/blocks/form/index.tsx new file mode 100644 index 000000000..e68803746 --- /dev/null +++ b/packages/client/src/blocks/form/index.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useMemo } from 'react'; +import { Form as Formily, FormButtonGroup, Submit, Reset } from '@formily/antd'; +import { createForm } from '@formily/core'; +import { SchemaField, fields2properties, parseEffects } from '../../'; +import { Resource, ResourceOptions } from '../../resource'; + +export interface FormBlockProps { + effects?: any; + fields?: any; + initialValues?: any; + onSuccess?: any; + resource: string | Resource | ResourceOptions; + readPretty?: boolean; + [key: string]: any; +} + +export const FormBlock = (props: FormBlockProps) => { + const { initialValues, fields = [], effects, onSuccess, readPretty } = props; + const form = useMemo( + () => + createForm({ + readPretty, + initialValues, + effects: (form) => parseEffects(effects, form), + }), + [], + ); + const resource = Resource.make(props.resource); + useEffect(() => { + if (!initialValues) { + resource.get().then(({ data }) => { + form.setInitialValues(data); + }); + } + }, [initialValues]); + return ( + { + console.log(form.values, values); + try { + const { data } = await resource.save(values); + if (onSuccess) { + return onSuccess(data); + } + return data; + } catch (error) {} + }} + > + + {!readPretty && ( + + 提交 + 取消 + + )} + + ); +}; + +export default FormBlock; diff --git a/packages/client/src/blocks/grid/demo.less b/packages/client/src/blocks/grid/demo.less new file mode 100644 index 000000000..604a1c107 --- /dev/null +++ b/packages/client/src/blocks/grid/demo.less @@ -0,0 +1,15 @@ +#components-grid-demo [class~='ant-row'] { + .ant-col { + // background: rgba(128, 128, 128, 0.08); + > div { + padding: 16px; + border-radius: 0; + color: #fff; + margin-bottom: 8px; + margin-top: 8px; + min-height: 30px; + text-align: center; + background: rgba(0,146,255,.75); + } + } +} \ No newline at end of file diff --git a/packages/client/src/blocks/grid/index.md b/packages/client/src/blocks/grid/index.md new file mode 100644 index 000000000..78d70549a --- /dev/null +++ b/packages/client/src/blocks/grid/index.md @@ -0,0 +1,76 @@ +--- +title: Grid - 栅格 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Grid - 栅格 + +## 示例 + +```tsx +import React from 'react'; +import { BlockContext, GridBlock } from '@nocobase/client'; +import './demo.less'; + +function Hello({ name }) { + return
Hello {name}
; +} + +const blocks = [ + { + name: 'gb1', + 'x-component': 'Hello', + 'x-row': 0, + 'x-column': 0, + 'x-sort': 1, + }, + { + name: 'gb2', + 'x-component': 'Hello', + 'x-row': 0, + 'x-column': 0, + 'x-sort': 2, + }, + { + name: 'gb3', + 'x-component': 'Hello', + 'x-row': 0, + 'x-column': 1, + 'x-sort': 0, + }, + { + name: 'gb4', + 'x-component': 'Hello', + 'x-row': 1, + 'x-column': 0, + 'x-sort': 0, + }, + { + name: 'gb5', + 'x-component': 'Hello', + 'x-row': 2, + 'x-column': 0, + 'x-sort': 0, + }, +]; + +export default () => { + return ( + +
+ +
+
+ ) +} +``` diff --git a/packages/client/src/blocks/grid/index.tsx b/packages/client/src/blocks/grid/index.tsx new file mode 100644 index 000000000..a07cd70ae --- /dev/null +++ b/packages/client/src/blocks/grid/index.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { Row, Col } from 'antd'; +import { useBlock } from '../'; +import set from 'lodash/set'; + +export function BlockItem(props: any) { + const { Component } = useBlock(props); + if (!Component) { + return null; + } + console.log('BlockItem') + return +} + +export interface GridBlockProps { + blocks: any[]; +} + +export function GridBlock(props: GridBlockProps) { + const { blocks = [] } = props; + const obj = { + rows: [], + }; + blocks.forEach(block => { + const path = ['rows', block['x-row'], block['x-column'], block['x-sort']]; + console.log(path); + set(obj, path, block); + }); + console.log({obj}) + return ( +
+ {obj.rows.map((cols, rowIndex) => { + return ( + + {cols.map((items, colIndex) => { + return ( +
+ {items.map((item, key) => ) } + + ) + })} + + ); + })} + + ); +} + +export default GridBlock; diff --git a/packages/client/src/blocks/index.md2 b/packages/client/src/blocks/index.md2 new file mode 100644 index 000000000..55ba72a0f --- /dev/null +++ b/packages/client/src/blocks/index.md2 @@ -0,0 +1,90 @@ +--- +title: Block +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# 区块 + +## 示例 + +```tsx +import React from 'react'; +import { createBlock, GridBlock } from '@nocobase/client'; + +function Hello({ name }) { + return
Hello {name}
; +} + +const Block = createBlock({ + components: { + Hello, + GridBlock, + }, +}); + +const blocks = [ + { + name: 'gb1', + 'x-component': 'Hello', + 'x-row': 0, + 'x-column': 0, + 'x-sort': 1, + }, + { + name: 'gb2', + 'x-component': 'Hello', + 'x-row': 0, + 'x-column': 0, + 'x-sort': 2, + }, + { + name: 'gb3', + 'x-component': 'Hello', + 'x-row': 0, + 'x-column': 1, + 'x-sort': 0, + }, + { + name: 'gb4', + 'x-component': 'Hello', + 'x-row': 1, + 'x-column': 0, + 'x-sort': 0, + }, + { + name: 'gb5', + 'x-component': 'Hello', + 'x-row': 2, + 'x-column': 0, + 'x-sort': 0, + }, +]; + +export default () => { + return ( +
+ + + +
+ ); +}; +``` + +## API + +### createBlock + +- components 区块组件 + +创建区块 + +### Block + +- x-component diff --git a/packages/client/src/blocks/index.tsx b/packages/client/src/blocks/index.tsx new file mode 100644 index 000000000..ca3d11763 --- /dev/null +++ b/packages/client/src/blocks/index.tsx @@ -0,0 +1,47 @@ +import React, { createContext, useContext } from 'react'; + +export * from './form'; +export * from './descriptions'; +export * from './table'; +export * from './grid'; + +export const BlockContext = createContext({}); + +export interface BlockProps { + name: string; + blocks?: any; + 'x-component'?: any; + [key: string]: any; +} + +export interface CreateBlockOptions { + components?: any; +} + +export function createBlock(options: CreateBlockOptions) { + const { components } = options; + function Block(props: BlockProps) { + const { ['x-component']: component } = props; + const Component = component ? components[component] : null; + if (!Component) { + return null; + } + return ( + + + + ) + } + return Block; +} + +export function useBlock(props: any) { + const components = useContext(BlockContext); + const { 'x-component': component } = props; + + const Component = component ? components[component] : null; + + return { + Component, + } +} diff --git a/packages/client/src/blocks/kanban/index.md b/packages/client/src/blocks/kanban/index.md new file mode 100644 index 000000000..dce2a6756 --- /dev/null +++ b/packages/client/src/blocks/kanban/index.md @@ -0,0 +1,13 @@ +--- +title: Kanban - 看板 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Kanban - 看板 + diff --git a/packages/app/src/components/fields/form-slot/style.ts b/packages/client/src/blocks/kanban/index.tsx similarity index 100% rename from packages/app/src/components/fields/form-slot/style.ts rename to packages/client/src/blocks/kanban/index.tsx diff --git a/packages/client/src/blocks/table/demos/demo1.tsx b/packages/client/src/blocks/table/demos/demo1.tsx new file mode 100644 index 000000000..b72b856e0 --- /dev/null +++ b/packages/client/src/blocks/table/demos/demo1.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { TableBlock } from '@nocobase/client'; + +export default () => { + return ( +
+ +
+ ); +}; diff --git a/packages/client/src/blocks/table/index.md b/packages/client/src/blocks/table/index.md new file mode 100644 index 000000000..c0d9a03a2 --- /dev/null +++ b/packages/client/src/blocks/table/index.md @@ -0,0 +1,16 @@ +--- +title: Table - 表格 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Blocks + path: /client/blocks +--- + +# Table - 表格 + +## 示例 + + diff --git a/packages/client/src/blocks/table/index.tsx b/packages/client/src/blocks/table/index.tsx new file mode 100644 index 000000000..5afd4e5fb --- /dev/null +++ b/packages/client/src/blocks/table/index.tsx @@ -0,0 +1,100 @@ +import React from 'react'; +import { Table, Tabs, Card, Button } from 'antd'; +import { Drawer } from '../../components/Drawer'; +import { Resource, ResourceOptions } from '../../resource'; +import { useRequest } from 'ahooks'; +import { Field } from '../../'; + +export function fields2columns(fields: any[]) { + if (!Array.isArray(fields)) { + return []; + } + return fields.map((field) => { + field.dataIndex = field.name.split('.'); + field.render = (value, data, index) => { + return ( + + ); + }; + return field; + }); +} + +export interface DetailOptions { + name: string; + title: string; + blocks?: any; +} + +export interface TableBlockProps { + fields?: any; + details?: Array; + initialValues?: any; + resource: string | Resource | ResourceOptions; + [key: string]: any; +} + +export function TableBlock(props: TableBlockProps) { + const { fields = [], details = [], initialValues } = props; + const columns = fields2columns(fields); + const resource = Resource.make(props.resource); + const { data, loading } = useRequest(() => { + if (initialValues) { + return Promise.resolve({ + list: initialValues, + }); + } + return resource.list(); + }); + console.log({ columns, data }); + return ( +
{ + return { + onClick(e) { + Drawer.open({ + bodyStyle: { + padding: 0, + }, + content: ({ resolve }) => { + const tabList = details.map((detail) => { + return { + key: detail.name, + tab: detail.title, + }; + }); + return ( +
+ + aaa + +
+ ); + }, + }); + }, + }; + }} + /> + ); +} + +export default TableBlock; diff --git a/packages/client/src/components/ActionBar/index.md b/packages/client/src/components/ActionBar/index.md new file mode 100644 index 000000000..4cbd511ff --- /dev/null +++ b/packages/client/src/components/ActionBar/index.md @@ -0,0 +1,12 @@ +--- +title: ActionBar - 操作栏 +nav: + title: 组件 + path: /client +group: + order: 3 + title: 其他 + path: /client/others +--- + +# ActionBar - 操作栏 diff --git a/packages/client/src/components/Drawer/index.md b/packages/client/src/components/Drawer/index.md new file mode 100644 index 000000000..bf98238b1 --- /dev/null +++ b/packages/client/src/components/Drawer/index.md @@ -0,0 +1,71 @@ +--- +title: Drawer - 抽屉 +nav: + title: 组件 + path: /client +group: + order: 3 + title: 其他 + path: /client/others +--- + +# Drawer - 抽屉 + +与 Ant Design + +### 基础抽屉 + +```tsx +import React from 'react'; +import { Button } from 'antd'; +import Drawer from './index.tsx'; + +export default () => ( + +); +``` + +### 多层抽屉 + +```tsx +import React from 'react'; +import { Button } from 'antd'; +import Drawer from './index.tsx'; + +export default () => ( + + + ) + }, + }); + }}>Open drawer +); +``` diff --git a/packages/app/src/components/drawer/index.tsx b/packages/client/src/components/Drawer/index.tsx similarity index 75% rename from packages/app/src/components/drawer/index.tsx rename to packages/client/src/components/Drawer/index.tsx index 31d21314f..8e1e13cb0 100644 --- a/packages/app/src/components/drawer/index.tsx +++ b/packages/client/src/components/Drawer/index.tsx @@ -1,11 +1,14 @@ import React, { Fragment, useLayoutEffect, useRef, useState } from 'react'; import ReactDOM, { createPortal } from 'react-dom'; -import { isNum, isStr, isBool, isFn } from '@formily/shared'; -import { Modal, Drawer } from 'antd'; +import { Modal, Drawer as AntdDrawer } from 'antd'; import { DrawerProps } from 'antd/lib/drawer'; import { useContext } from 'react'; import { ConfigProvider } from 'antd'; import zhCN from 'antd/lib/locale/zh_CN'; +import isNum from 'lodash/isNumber'; +import isBool from 'lodash/isBoolean'; +import isStr from 'lodash/isString'; +import './style.less'; export const usePrefixCls = ( tag?: string, @@ -48,15 +51,15 @@ const createElement = (content, props?: any) => { return React.createElement(content, props); }; -export interface IFormDrawer { +export interface IDrawer { open(props?: any): void; close(): void; } -export function FormDrawer(title: DrawerProps, content: any): IFormDrawer; -export function FormDrawer(title: DrawerTitle, content: any): IFormDrawer; -export function FormDrawer(title: any, content: any): IFormDrawer { - document.querySelectorAll('.env-root').forEach(el => { +export function Drawer(title: DrawerProps, content: any): IDrawer; +export function Drawer(title: DrawerTitle, content: any): IDrawer; +export function Drawer(title: any, content: any): IDrawer { + document.querySelectorAll('.env-root').forEach((el) => { el.className = 'env-root env-root-push'; }); const env = { @@ -65,12 +68,12 @@ export function FormDrawer(title: any, content: any): IFormDrawer { }; env.root.className = 'env-root'; const props = getDrawerProps(title); - const drawer = { + const drawerProps = { width: '75%', ...props, onClose: (e: any) => { props?.onClose?.(e); - formDrawer.close(); + drawer.close(); }, afterVisibleChange: (visible: boolean) => { props?.afterVisibleChange?.(visible); @@ -81,40 +84,40 @@ export function FormDrawer(title: any, content: any): IFormDrawer { }, }; - const formDrawer = { + const drawer = { open: (props: any) => { render( false, () => { - formDrawer.closeWithConfirm = false; - formDrawer.close(); + drawer.closeWithConfirm = false; + drawer.close(); }, () => { - formDrawer.close(); + drawer.close(); }, ); setTimeout(() => { render( true, () => { - formDrawer.closeWithConfirm = false; - formDrawer.close(); + drawer.closeWithConfirm = false; + drawer.close(); }, () => { - formDrawer.close(); + drawer.close(); }, ); }); }, close: () => { if (!env.root) return; - if (formDrawer.closeWithConfirm) { + if (drawer.closeWithConfirm) { Modal.confirm({ title: '表单内容发生变化,确定不保存吗?', okText: '确定', cancelText: '取消', onOk() { - formDrawer.closeWithConfirm = false; + drawer.closeWithConfirm = false; const els = document.querySelectorAll('.env-root-push'); if (els.length) { const last = els[els.length - 1]; @@ -135,30 +138,30 @@ export function FormDrawer(title: any, content: any): IFormDrawer { closeWithConfirm: false, }; - const closeWithConfirm = bool => { - formDrawer.closeWithConfirm = bool; + const closeWithConfirm = (bool) => { + drawer.closeWithConfirm = bool; }; const render = (visible = true, resolve?: () => any, reject?: () => any) => { ReactDOM.render( - + {createElement(content, { resolve, reject, closeWithConfirm, })} - + , env.root, ); }; document.body.appendChild(env.root); - return formDrawer; + return drawer; } -const DrawerFooter: React.FC = props => { +const DrawerFooter: React.FC = (props) => { const ref = useRef(); const [footer, setFooter] = useState(); const footerRef = useRef(); @@ -187,11 +190,16 @@ const DrawerFooter: React.FC = props => { ); }; -FormDrawer.open = props => { +interface ContentPorps { + resolve?: () => any; + closeWithConfirm?: (bool: boolean) => any; +} + +Drawer.open = (props: DrawerProps & { content: (contentPorps?: ContentPorps) => any }) => { const { content, visible, ...rest } = props; - return FormDrawer(rest, content).open({ visible }); + return Drawer(rest, content).open({ visible }); }; -FormDrawer.Footer = DrawerFooter; +Drawer.Footer = DrawerFooter; -export default FormDrawer; +export default Drawer; diff --git a/packages/client/src/components/Drawer/style.less b/packages/client/src/components/Drawer/style.less new file mode 100644 index 000000000..5c3c9f867 --- /dev/null +++ b/packages/client/src/components/Drawer/style.less @@ -0,0 +1,18 @@ +.env-root-push + style + div > div { + transform: translateX(-10%); +} +.env-root-push + div > div { + transform: translateX(-10%); +} +.ant-drawer.nb-drawer .ant-drawer-content-wrapper { + width: 75%; + max-width: 1000px; +} +@media only screen and (max-width: 800px) { + .ant-drawer.nb-drawer .ant-drawer-content-wrapper { + width: 100% !important; + } + .ant-drawer.noco-drawer .ant-drawer-content-wrapper { + width: 100% !important; + } +} diff --git a/packages/app/src/components/icons/index.tsx b/packages/client/src/components/Icon/index.tsx similarity index 77% rename from packages/app/src/components/icons/index.tsx rename to packages/client/src/components/Icon/index.tsx index 7c98853e8..cad319833 100644 --- a/packages/app/src/components/icons/index.tsx +++ b/packages/client/src/components/Icon/index.tsx @@ -12,6 +12,8 @@ import { NotificationOutlined, } from '@ant-design/icons'; +import * as antIcons from '@ant-design/icons'; + export const IconFont = createFromIconfontCN({ scriptUrl: ['//at.alicdn.com/t/font_2261954_u9jzwc44ug.js'], }); @@ -35,16 +37,22 @@ export function registerIcons(components) { }); } +Object.keys(antIcons).forEach(name => { + if (name.endsWith('Outlined')) { + registerIcon(name, antIcons[name]); + } +}); + registerIcons({ - HistoryOutlined, - MenuOutlined, - TableOutlined, - SettingOutlined, - TeamOutlined, - UserOutlined, - DatabaseOutlined, - DashboardOutlined, - NotificationOutlined, + // HistoryOutlined, + // MenuOutlined, + // TableOutlined, + // SettingOutlined, + // TeamOutlined, + // UserOutlined, + // DatabaseOutlined, + // DashboardOutlined, + // NotificationOutlined, }); interface IconProps { diff --git a/packages/client/src/components/MenuEditor/index.md b/packages/client/src/components/MenuEditor/index.md new file mode 100644 index 000000000..7d7d6d432 --- /dev/null +++ b/packages/client/src/components/MenuEditor/index.md @@ -0,0 +1,153 @@ +--- +title: MenuEditor - 菜单编辑器 +nav: + title: 组件 + path: /client +group: + order: 3 + title: 其他 + path: /client/others +--- + +# MenuEditor - 菜单编辑器 + +## 代码演示 + +### 竖向菜单 + +```tsx +import React from 'react'; +import MenuEditor from './'; + +const items = [ + { + icon: 'AimOutlined', + name: 'name1', + title: '菜单组1', + children: [ + { + icon: 'CiOutlined', + name: 'name3', + title: '子菜单1', + }, + { + icon: 'CiOutlined', + name: 'name4', + title: '子菜单2', + }, + { + icon: 'CiOutlined', + name: 'name5', + title: '子菜单组1', + children: [ + { + icon: 'CiOutlined', + name: 'name6', + title: '子菜单6', + }, + { + icon: 'CiOutlined', + name: 'name7', + title: '子菜单7', + }, + { + icon: 'CiOutlined', + name: 'name8', + title: '子菜单8', + }, + ], + }, + ], + }, + { + icon: 'CiOutlined', + name: 'name2', + title: '菜单1', + }, +]; + +export default () => { + return ( + + ) +} +``` + +### 混合菜单 + +```tsx +import React from 'react'; +import MenuEditor from './'; + +const items = [ + { + name: 'name1', + title: '菜单组1', + children: [ + { + name: 'name3', + title: '子菜单1', + }, + { + name: 'name4', + title: '子菜单2', + }, + { + name: 'name5', + title: '子菜单组1', + children: [ + { + name: 'name6', + title: '子菜单6', + }, + { + name: 'name7', + title: '子菜单7', + }, + { + name: 'name8', + title: '子菜单8', + }, + ], + }, + ], + }, + { + name: 'name9', + title: '菜单组2', + children: [ + { + name: 'name10', + title: '子菜单10', + }, + { + name: 'name11', + title: '子菜单11', + }, + { + name: 'name12', + title: '子菜单12', + }, + { + name: 'name13', + title: '子菜单13', + }, + ], + }, + { + name: 'name2', + title: '菜单1', + }, +]; + +export default () => { + const [key, setKey] = React.useState('name1'); + return ( + { + setKey(info.key); + }} defaultValue={key} items={items} mode={'mix'}> +
这是正文 {key}
+
+ ) +} +``` diff --git a/packages/client/src/components/MenuEditor/index.tsx b/packages/client/src/components/MenuEditor/index.tsx new file mode 100644 index 000000000..563c09977 --- /dev/null +++ b/packages/client/src/components/MenuEditor/index.tsx @@ -0,0 +1,368 @@ +import React, { useEffect, useState } from 'react'; +import { Layout, Menu, Button, Dropdown } from 'antd'; +import { + AppstoreOutlined, + MenuOutlined, + SettingOutlined, + PlusOutlined, + DashboardOutlined, + LinkOutlined, + GroupOutlined, + EditOutlined, + ArrowRightOutlined, + DeleteOutlined, +} from '@ant-design/icons'; +import './style.less'; +import Icon from '../Icon'; +import { FormDialog, FormLayout } from '@formily/antd'; +import { SchemaField } from '../../fields'; +import { useDynamicList } from 'ahooks'; + +const { SubMenu } = Menu; + +export function generateName(): string { + return `${Math.random() + .toString(36) + .replace('0.', '') + .slice(-4) + .padStart(4, '0')}`; +} + +export function AddNewAction(props) { + const { data } = props; + const insert = (values: MenuItemOptions) => { + props.insert && props.insert({ ...values, name: generateName() }); + }; + const prefix = data ? `在${data.title}后面` : ''; + const menu = ( + + { + FormDialog(`${prefix}新建菜单`, () => { + return ( + + + + + + + ); + }) + .open({}) + .then(insert); + }} + > + 新建菜单 + + { + FormDialog(`${prefix}新建分组`, () => { + return ( + + + + + + + ); + }) + .open({}) + .then((data) => + insert({ ...data, name: generateName(), children: [] }), + ); + }} + > + 新建分组 + + { + FormDialog(`${prefix}添加链接`, () => { + return ( + + + + + + + ); + }) + .open({}) + .then(insert); + }} + > + 添加链接 + + + ); + + return ( + {props.children || } + ); +} + +export function SettingAction(props) { + const { initialValues, replace, remove } = props; + const menu = ( + + { + console.log({ initialValues }); + FormDialog('编辑菜单', () => { + return ( + + + + + + {/* + 扩展文案 + */} + + ); + }) + .open({ + initialValues, + }) + .then(replace); + }} + key="edit" + > + 编辑菜单 + + + 移动到 + + remove()} key="delete"> + 删除菜单 + + + ); + + return ( + + + + ); +} + +export interface MenuItemOptions { + name: string; + title: string; + icon: string; + children?: MenuItemOptions[]; + [key: string]: any; +} + +export interface MenuProps { + mode?: 'vertical' | 'mix'; + defaultValue?: string; + items?: MenuItemOptions[]; + children?: any; + [key: string]: any; +} + +export function VerticalMenu(props: MenuProps) { + const { items, style, onSelect } = props; + const { list, remove, replace, insert, push, resetList } = + useDynamicList(items); + + useEffect(() => { + resetList(items); + }, [items]); + + const renderItems = (items: MenuItemOptions[]) => { + return items.map((item, index) => { + if (item.children) { + return ( + + {item.icon && } + {item.title}{' '} + { + e.stopPropagation(); + }} + className={'menu-icons'} + > + remove(index)} + replace={(data: MenuItemOptions) => replace(index, data)} + /> + insert(index + 1, data)} + /> + + + } + > + {renderItems(item.children)} + + ); + } + + return ( + } + > + {item.title}{' '} + { + e.stopPropagation(); + }} + className={'menu-icons'} + > + remove(index)} + replace={(data: MenuItemOptions) => replace(index, data)} + /> + insert(index + 1, data)} + /> + + + ); + }); + }; + + return ( + + {renderItems(list)} + push(data)}> + + + } + > + + ); +} + +export function MixMenu(props: MenuProps) { + const { items, defaultValue, children, onSelect } = props; + const { list, insert, replace, remove, resetList } = useDynamicList(items); + const [value, setValue] = useState(defaultValue); + const currentItem = list.find((item) => item.name === value); + + useEffect(() => { + resetList(items); + }, [items]); + + console.log({ list, currentItem }); + + return ( + + + { + setValue(info.key); + onSelect && onSelect(info); + }} + defaultSelectedKeys={[value]} + theme={'dark'} + mode={'horizontal'} + > + {list.map((item, index) => ( + } + > + {item.title}{' '} + { + e.stopPropagation(); + }} + className={'menu-icons'} + > + remove(index)} + replace={(data: MenuItemOptions) => replace(index, data)} + /> + insert(index + 1, data)} + /> + + + ))} + + + + {currentItem && currentItem.children && ( + + + + )} + {children} + + + ); +} + +export default (props: MenuProps) => { + return props.mode === 'vertical' ? ( + + ) : ( + + ); +}; diff --git a/packages/client/src/components/MenuEditor/style.less b/packages/client/src/components/MenuEditor/style.less new file mode 100644 index 000000000..3f1c6220f --- /dev/null +++ b/packages/client/src/components/MenuEditor/style.less @@ -0,0 +1,44 @@ +.ant-layout-header { + line-height: 48px; + height: 48px; +} +.ant-menu-item { + + .menu-icons { + margin-left: 10px; + opacity: 0; + // position: absolute; + } + &:hover { + .menu-icons { + opacity: 1; + } + } + &.menu-add { + background-color: transparent !important; + &::after { + display: none; + } + } +} + +.ant-menu-inline { + .menu-icons { + position: absolute; + right: 10px; + } +} + +.ant-menu-submenu-title { + .menu-icons { + position: absolute; + background-color: #fff; + display: none; + z-index: 10; + } + &:hover { + .menu-icons { + display: inline-block; + } + } +} \ No newline at end of file diff --git a/packages/client/src/components/RouteSwitch/__tests__/RouteSwitch.test.tsx b/packages/client/src/components/RouteSwitch/__tests__/RouteSwitch.test.tsx new file mode 100644 index 000000000..5e1384ddc --- /dev/null +++ b/packages/client/src/components/RouteSwitch/__tests__/RouteSwitch.test.tsx @@ -0,0 +1,127 @@ +import React from 'react'; +import renderer from 'react-test-renderer'; +import { MemoryRouter as Router, useParams, Link } from 'react-router-dom'; +import { RouteSwitch } from '../'; + +const components = { + Index: () =>
index
, + Home: ({ children }) => ( +
+

Home

+ {children} +
+ ), + Blog: ({ children }) => ( +
+

Blog

+ {children} +
+ ), + BlogPost: () => { + let { slug } = useParams(); + return
Now showing post {slug}
; + }, + Login: () =>
login
, + Register: () =>
register
, +}; + +const routes = [ + { + type: 'redirect', + from: '/blog/123', + to: '/blog/1234', + }, + // { + // component: 'Home', + // routes: [ + // { + // path: '/blog/123555', + // component: () =>
/blog/123555
, + // }, + // ], + // }, + { + path: '/blog', + component: 'Blog', + routes: [ + { + path: '/blog/:slug', + // exact: true, + component: 'BlogPost', + }, + ], + }, + { + component: 'Home', + routes: [ + // { + // path: '/blog/123555', + // component: () =>
/blog/123555
, + // }, + { + path: '/login', + component: 'Login', + }, + { + path: '/register', + component: 'Register', + }, + { + path: '/', + // exact: true, + component: 'Index', + }, + ], + }, +]; + +it('route component', () => { + const t = renderer + .create( + +
test
, + }, + ]} + /> +
, + ) + .toJSON(); + expect(t).toMatchSnapshot(); +}); + +it('pathname=/', () => { + const t = renderer + .create( + + + , + ) + .toJSON(); + expect(t).toMatchSnapshot(); +}); + +it('pathname=/login', () => { + const t = renderer + .create( + + + , + ) + .toJSON(); + expect(t).toMatchSnapshot(); +}); + +it('pathname=/blog/123', () => { + const t = renderer + .create( + + + , + ) + .toJSON(); + expect(t).toMatchSnapshot(); +}); diff --git a/packages/client/src/components/RouteSwitch/__tests__/__snapshots__/RouteSwitch.test.tsx.snap b/packages/client/src/components/RouteSwitch/__tests__/__snapshots__/RouteSwitch.test.tsx.snap new file mode 100644 index 000000000..46917a102 --- /dev/null +++ b/packages/client/src/components/RouteSwitch/__tests__/__snapshots__/RouteSwitch.test.tsx.snap @@ -0,0 +1,41 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`pathname=/ 1`] = ` +
+

+ Home +

+
+ index +
+
+`; + +exports[`pathname=/blog/123 1`] = ` +
+

+ Blog +

+
+ Now showing post + 1234 +
+
+`; + +exports[`pathname=/login 1`] = ` +
+

+ Home +

+
+ login +
+
+`; + +exports[`route component 1`] = ` +
+ test +
+`; diff --git a/packages/client/src/components/RouteSwitch/demos/demo1.tsx b/packages/client/src/components/RouteSwitch/demos/demo1.tsx new file mode 100644 index 000000000..7b996c0c3 --- /dev/null +++ b/packages/client/src/components/RouteSwitch/demos/demo1.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { + Link, + useLocation, + useRouteMatch, + MemoryRouter as Router, +} from 'react-router-dom'; +import { + RouteSwitch, + AuthLayout, + AdminLayout, + PageTemplate, +} from '@nocobase/client'; + +const routes = [ + { + path: '/admin/:slug(.+)?', + component: 'AdminLayout', + }, + { + component: 'AuthLayout', + routes: [ + { + name: 'login', + path: '/login', + component: 'PageTemplate', + title: '登录', + }, + { + name: 'register', + path: '/register', + component: 'PageTemplate', + title: '注册', + }, + ], + }, + { + type: 'redirect', + from: '/', + to: '/admin', + exact: true, + }, +]; + +const components = { + AuthLayout, + AdminLayout, + PageTemplate, +}; + +function App() { + const location = useLocation(); + return ( +
+
{location.pathname}
+
    +
  • path=/login
  • +
  • path=/register
  • +
  • path=/
  • +
  • path=/admin/welcome
  • +
+ +
+ ); +} + +export default () => { + return ( + + + + ); +}; diff --git a/packages/client/src/components/RouteSwitch/index.md b/packages/client/src/components/RouteSwitch/index.md new file mode 100644 index 000000000..c8f6e8686 --- /dev/null +++ b/packages/client/src/components/RouteSwitch/index.md @@ -0,0 +1,16 @@ +--- +title: RouteSwitch - 路由转换器 +nav: + title: 组件 + path: /client +group: + order: 3 + title: 其他 + path: /client/others +--- + +# RouteSwitch - 路由转换器 + +## 代码演示 + + diff --git a/packages/client/src/components/RouteSwitch/index.tsx b/packages/client/src/components/RouteSwitch/index.tsx new file mode 100644 index 000000000..ae56e9eb7 --- /dev/null +++ b/packages/client/src/components/RouteSwitch/index.tsx @@ -0,0 +1,65 @@ +import React, { createContext, useContext } from 'react'; +import { Switch, Route as ReactRoute, Redirect } from 'react-router-dom'; + +export const RouteComponentContext = createContext({}); + +export interface RouteSwitchProps { + routes?: any[]; + components?: any; +} + +export function RouteSwitch(props: RouteSwitchProps) { + const { routes } = props; + if (!Array.isArray(routes)) { + return null; + } + const components = props.components || useContext(RouteComponentContext); + return ( + + + {routes.map((route, key) => { + if (route.type === 'redirect') { + console.log(route); + return ( + + ); + } + if (route.component) { + let path = route.path; + if (!path && Array.isArray(route.routes)) { + path = route.routes.map((r) => r.path); + } + return ( + { + const Component = + typeof route.component === 'string' + ? components[route.component] + : route.component; + if (!Component) { + return null; + } + return ( + + + + ); + }} + /> + ); + } + })} + + + ); +} + +export default RouteSwitch; diff --git a/packages/client/src/fields/cascader/index.md b/packages/client/src/fields/cascader/index.md new file mode 100644 index 000000000..cbdbe9a1c --- /dev/null +++ b/packages/client/src/fields/cascader/index.md @@ -0,0 +1,105 @@ +--- +title: Cascader - 级联选择 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Cascader - 级联选择 + +## 代码演示 + +### 省市区级联 + +```tsx +/** + * title: 省市区级联 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const options = [ + { + value: 'zhejiang', + label: 'Zhejiang', + children: [ + { + value: 'hangzhou', + label: 'Hangzhou', + children: [ + { + value: 'xihu', + label: 'West Lake', + }, + ], + }, + ], + }, + { + value: 'jiangsu', + label: 'Jiangsu', + children: [ + { + value: 'nanjing', + label: 'Nanjing', + children: [ + { + value: 'zhonghuamen', + label: 'Zhong Hua Men', + }, + ], + }, + ], + }, +]; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + enum: options, + 'x-decorator': 'FormItem', + 'x-component': 'Cascader', + 'x-component-props': { + changeOnSelect: true, + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + enum: options, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Cascader', + 'x-component-props': { + changeOnSelect: true, + }, + }, +]; + +const data = { + // name1: ["jiangsu", "nanjing", "zhonghuamen"], +}; + +export default () => { + return ( + + ); +}; +``` \ No newline at end of file diff --git a/packages/client/src/fields/cascader/index.tsx b/packages/client/src/fields/cascader/index.tsx new file mode 100644 index 000000000..f72b56f9b --- /dev/null +++ b/packages/client/src/fields/cascader/index.tsx @@ -0,0 +1,30 @@ +import React from 'react' +import { connect, mapReadPretty, mapProps } from '@formily/react' +import { Cascader as AntdCascader } from 'antd' +import { Descriptions } from '../descriptions' +import { LoadingOutlined } from '@ant-design/icons' + +export const Cascader = connect( + (props) => { + return + }, + mapProps( + { + dataSource: 'options', + }, + (props, field) => { + return { + ...props, + suffixIcon: + field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffixIcon + ), + } + } + ), + mapReadPretty(Descriptions.Cascader) +) + +export default Cascader diff --git a/packages/client/src/fields/checkbox/index.md b/packages/client/src/fields/checkbox/index.md new file mode 100644 index 000000000..345a0d001 --- /dev/null +++ b/packages/client/src/fields/checkbox/index.md @@ -0,0 +1,126 @@ +--- +title: Checkbox - 多选框 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Checkbox - 多选框 + +## 代码演示 + +### 勾选 + +```tsx +/** + * title: 勾选 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Checkbox', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Checkbox', + }, +]; + +const data = { + +}; + +export default () => { + return ( + + ); +}; +``` + +### 组 + +```tsx +/** + * title: 组 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const options = [ + { + label: '选项1', + value: 1, + color: 'red', + }, + { + label: '选项2', + value: 2, + color: 'blue', + }, +]; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + dataSource: options, + 'x-decorator': 'FormItem', + 'x-component': 'Checkbox.Group', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + dataSource: options, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Checkbox.Group', + }, +]; + +const data = { + name1: [1, 2], + name2: [1, 2], +}; + +export default () => { + return ( + + ); +}; +``` diff --git a/packages/client/src/fields/checkbox/index.tsx b/packages/client/src/fields/checkbox/index.tsx new file mode 100644 index 000000000..be0b8e4f7 --- /dev/null +++ b/packages/client/src/fields/checkbox/index.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { connect, mapProps, mapReadPretty, useField } from '@formily/react'; +import { Checkbox as AntdCheckbox, Tag } from 'antd'; +import { CheckboxProps, CheckboxGroupProps } from 'antd/lib/checkbox'; +import { Descriptions } from '../descriptions'; +import uniq from 'lodash/uniq'; +import { CheckOutlined, CloseOutlined } from '@ant-design/icons'; + +type ComposedCheckbox = React.FC & { + Group?: React.FC; + __ANT_CHECKBOX?: boolean; +}; + +export const Checkbox: ComposedCheckbox = connect( + AntdCheckbox, + mapProps( + { + value: 'checked', + onInput: 'onChange', + }, + (props, field) => { + console.log({ props, field }); + return { + ...props, + }; + }, + ), + mapReadPretty((props) => { + return props.value ? ( + + ) : ( + + ); + }), +); + +Checkbox.__ANT_CHECKBOX = true; + +Checkbox.Group = connect( + AntdCheckbox.Group, + mapProps({ + dataSource: 'options', + }), + mapReadPretty((props) => { + const { options = [] } = props; + const field = useField(); + const dataSource = field.dataSource || []; + const value = uniq(field.value ? field.value : []); + return ( +
+ {dataSource + .filter((option) => value.includes(option.value)) + .map((option, key) => ( + {option.label} + ))} +
+ ); + }), +); + +export default Checkbox; diff --git a/packages/client/src/fields/color-select/index.md b/packages/client/src/fields/color-select/index.md new file mode 100644 index 000000000..691aa3b33 --- /dev/null +++ b/packages/client/src/fields/color-select/index.md @@ -0,0 +1,59 @@ +--- +title: ColorSelect - 颜色选择器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# ColorSelect - 颜色选择器 + +```tsx +/** + * title: 颜色选择器 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'ColorSelect', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'ColorSelect', + }, +]; + +const data = { + name1: 'red', + name2: 'red', +}; + +export default () => { + return ( + + ); +}; +``` \ No newline at end of file diff --git a/packages/client/src/fields/color-select/index.tsx b/packages/client/src/fields/color-select/index.tsx new file mode 100644 index 000000000..8dbef41b3 --- /dev/null +++ b/packages/client/src/fields/color-select/index.tsx @@ -0,0 +1,59 @@ +import React from 'react' +import { connect, mapProps, mapReadPretty } from '@formily/react' +import { Tag, Select } from 'antd' +import { Descriptions } from '../descriptions' +import { LoadingOutlined } from '@ant-design/icons' + +const colors = { + red: '薄暮', + magenta: '法式洋红', + volcano: '火山', + orange: '日暮', + gold: '金盏花', + lime: '青柠', + green: '极光绿', + cyan: '明青', + blue: '拂晓蓝', + geekblue: '极客蓝', + purple: '酱紫', + default: '默认', +}; + +export const ColorSelect = connect( + (props) => { + return ( + + ) + }, + mapProps((props, field) => { + return { + ...props, + suffix: ( + + {field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffix + )} + + ), + } + }), + mapReadPretty((props) => { + const { value } = props; + if (!colors[value]) { + return null; + } + return ( + {colors[value]} + ); + }) +) + +export default ColorSelect diff --git a/packages/client/src/fields/date-picker/index.md b/packages/client/src/fields/date-picker/index.md new file mode 100644 index 000000000..12804b832 --- /dev/null +++ b/packages/client/src/fields/date-picker/index.md @@ -0,0 +1,114 @@ +--- +title: DatePicker - 日期选择器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# DatePicker - 日期选择器 + +## 代码演示 + +### 日期选择器 + +```tsx +/** + * title: 日期选择器 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'DatePicker', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'DatePicker', + }, +]; + +const data = { +}; + +export default () => { + return ( + + ); +}; +``` + +### 日期时间选择 + +```tsx +/** + * title: 日期时间选择 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'DatePicker', + 'x-component-props': { + showTime: true, + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'DatePicker', + 'x-component-props': { + showTime: true, + }, + }, +]; + +const data = { +}; + +export default () => { + return ( + + ); +}; +``` diff --git a/packages/client/src/fields/date-picker/index.tsx b/packages/client/src/fields/date-picker/index.tsx new file mode 100644 index 000000000..d7f766adf --- /dev/null +++ b/packages/client/src/fields/date-picker/index.tsx @@ -0,0 +1,64 @@ +import moment from 'moment' +import { connect, mapProps, mapReadPretty } from '@formily/react' +import { DatePicker as AntdDatePicker } from 'antd' +import { + DatePickerProps as AntdDatePickerProps, + RangePickerProps, +} from 'antd/lib/date-picker' +import { Descriptions } from '../descriptions' +import { formatMomentValue, momentable } from '@formily/antd/esm/__builtins__' + +type DatePickerProps = Exclude< + PickerProps, + 'value' | 'onChange' +> & { + value: string + onChange: (value: string | string[]) => void +} + +type ComposedDatePicker = React.FC & { + RangePicker?: React.FC +} + +const mapDateFormat = function () { + const getDefaultFormat = (props: DatePickerProps) => { + if (props['picker'] === 'month') { + return 'YYYY-MM' + } else if (props['picker'] === 'quarter') { + return 'YYYY-\\QQ' + } else if (props['picker'] === 'year') { + return 'YYYY' + } else if (props['picker'] === 'week') { + return 'YYYY-wo' + } + return props['showTime'] ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD' + } + return (props: any) => { + const format = props['format'] || getDefaultFormat(props) + const onChange = props.onChange + return { + ...props, + format: format, + value: momentable(props.value, format === 'YYYY-wo' ? 'YYYY-w' : format), + onChange: (value: moment.Moment | moment.Moment[]) => { + if (onChange) { + onChange(formatMomentValue(value, format)) + } + }, + } + } +} + +export const DatePicker: ComposedDatePicker = connect( + AntdDatePicker, + mapProps(mapDateFormat()), + mapReadPretty(Descriptions.DatePicker) +) + +DatePicker.RangePicker = connect( + AntdDatePicker.RangePicker, + mapProps(mapDateFormat()), + mapReadPretty(Descriptions.DateRangePicker) +) + +export default DatePicker diff --git a/packages/client/src/fields/descriptions/index.tsx b/packages/client/src/fields/descriptions/index.tsx new file mode 100644 index 000000000..729b927cb --- /dev/null +++ b/packages/client/src/fields/descriptions/index.tsx @@ -0,0 +1,360 @@ +import React, { createContext, useContext } from 'react' +import { isArr, isValid } from '@formily/shared' +import { observer, useField } from '@formily/react' +import { InputProps } from 'antd/lib/input' +import { InputNumberProps } from 'antd/lib/input-number' +import { SelectProps } from 'antd/lib/select' +import { TreeSelectProps } from 'antd/lib/tree-select' +import { CascaderProps } from 'antd/lib/cascader' +import { + DatePickerProps, + RangePickerProps as DateRangePickerProps, +} from 'antd/lib/date-picker' +import { TimePickerProps, TimeRangePickerProps } from 'antd/lib/time-picker' +import { Tag, Space, Popover } from 'antd' +import cls from 'classnames' +import { formatMomentValue, usePrefixCls } from '@formily/antd/esm/__builtins__' +import { FullscreenOutlined } from '@ant-design/icons'; + +const PlaceholderContext = createContext('N/A') + +const Placeholder = PlaceholderContext.Provider + +const usePlaceholder = (value?: any) => { + const placeholder = useContext(PlaceholderContext) || 'N/A' + return isValid(value) && value !== '' ? value : placeholder +} + +const Input: React.FC = (props) => { + const prefixCls = usePrefixCls('description-text', props) + return ( + + {props.addonBefore} + {props.prefix} + {usePlaceholder(props.value)} + {props.suffix} + {props.addonAfter} + + ) +} + +const URL: React.FC = (props) => { + const prefixCls = usePrefixCls('description-text', props) + const content = props.value && ( + {props.value} + ) + return ( + + {props.addonBefore} + {props.prefix} + {content} + {props.suffix} + {props.addonAfter} + + ) +} + +const InputNumber: React.FC = (props) => { + const prefixCls = usePrefixCls('description-text', props) + const value = usePlaceholder(props.value); + return ( + + {props.addonBefore} + {props.prefix} + {props.formatter ? props.formatter(value) : value} + {props.suffix} + {props.addonAfter} + + ) +} + +const TextArea: React.FC = (props) => { + const prefixCls = usePrefixCls('description-text', props) + const ellipsis = props.ellipsis === true ? {} : props.ellipsis; + const content = props.ellipsis ? ( +
+ +
+ {usePlaceholder(props.text||props.value)} +
+
+
+ ) : usePlaceholder(props.value) + return ( + + {props.addonBefore} + {props.prefix} + {content} + {props.suffix} + {props.addonAfter} + + ) +} + +const Select: React.FC> = observer((props) => { + const field = useField() + const prefixCls = usePrefixCls('description-text', props) + const dataSource: any[] = field?.dataSource?.length + ? field.dataSource + : props?.options?.length + ? props.options + : [] + const placeholder = usePlaceholder() + const getSelected = () => { + const value = props.value + if (props.mode === 'multiple' || props.mode === 'tags') { + if (props.labelInValue) { + return isArr(value) ? value : [] + } else { + return isArr(value) + ? value.map((val) => ({ label: val, value: val })) + : [] + } + } else { + if (props.labelInValue) { + return isValid(value) ? [value] : [] + } else { + return isValid(value) ? [{ label: value, value }] : [] + } + } + } + + const getLabels = () => { + const selected = getSelected() + if (!selected.length) return {placeholder} + return selected.map(({ value, label }, key) => { + const text = + dataSource?.find((item) => item.value == value)?.label || label + return {text || placeholder} + }) + } + return ( +
+ {getLabels()} +
+ ) +}) + +const ObjectSelect: React.FC> = observer((props) => { + const field = useField() + const prefixCls = usePrefixCls('description-text', props) + const dataSource: any[] = field?.dataSource?.length + ? field.dataSource + : props?.options?.length + ? props.options + : [] + const placeholder = usePlaceholder() + const getSelected = () => { + const value = props.value + if (props.mode === 'multiple' || props.mode === 'tags') { + if (props.labelInValue) { + return isArr(value) ? value : [] + } else { + return isArr(value) + ? value.map((val) => ({ label: val, value: val })) + : [] + } + } else { + if (props.labelInValue) { + return isValid(value) ? [value] : [] + } else { + return isValid(value) ? [{ label: value, value }] : [] + } + } + } + + const getLabels = () => { + const selected = getSelected() + if (!selected.length) return {placeholder} + return selected.map(({ value, label }, key) => { + const text = + dataSource?.find((item) => item.value == value)?.label || label + return {text || placeholder} + }) + } + return ( +
+ {getLabels()} +
+ ) +}) + +const TreeSelect: React.FC> = observer((props) => { + const field = useField() + const placeholder = usePlaceholder() + const prefixCls = usePrefixCls('description-text', props) + const dataSource = field?.dataSource?.length + ? field.dataSource + : props?.options?.length + ? props.options + : [] + const getSelected = () => { + const value = props.value + if (props.multiple) { + if (props.labelInValue) { + return isArr(value) ? value : [] + } else { + return isArr(value) + ? value.map((val) => ({ label: val, value: val })) + : [] + } + } else { + if (props.labelInValue) { + return value ? [value] : [] + } else { + return value ? [{ label: value, value }] : [] + } + } + } + + const findLabel = (value: any, dataSource: any[]) => { + for (let i = 0; i < dataSource?.length; i++) { + const item = dataSource[i] + if (item?.value === value) { + return item?.label + } else { + const childLabel = findLabel(value, item?.children) + if (childLabel) return childLabel + } + } + } + + const getLabels = () => { + const selected = getSelected() + if (!selected?.length) return {placeholder} + return selected.map(({ value, label }, key) => { + return ( + + {findLabel(value, dataSource) || label || placeholder} + + ) + }) + } + return ( +
+ {getLabels()} +
+ ) +}) + +const Cascader: React.FC = observer((props) => { + const field = useField() + const placeholder = usePlaceholder() + const prefixCls = usePrefixCls('description-text', props) + const dataSource: any[] = field?.dataSource?.length + ? field.dataSource + : props?.options?.length + ? props.options + : [] + const getSelected = () => { + return isArr(props.value) ? props.value : [] + } + const findLabel = (value: any, dataSource: any[]) => { + for (let i = 0; i < dataSource?.length; i++) { + const item = dataSource[i] + if (item?.value === value) { + return item?.label + } else { + const childLabel = findLabel(value, item?.children) + if (childLabel) return childLabel + } + } + } + const getLabels = () => { + const selected = getSelected() + if (!selected?.length) { + return placeholder + } + return selected + .map((value) => { + return findLabel(value, dataSource) || placeholder + }) + .join('/') + } + return ( +
+ {getLabels()} +
+ ) +}) + +const DatePicker: React.FC = (props) => { + const placeholder = usePlaceholder() + const prefixCls = usePrefixCls('description-text', props) + const getLabels = () => { + const labels = formatMomentValue(props.value, props.format, placeholder) + return isArr(labels) ? labels.join('~') : labels + } + return
{getLabels()}
+} + +const DateRangePicker: React.FC = (props) => { + const placeholder = usePlaceholder() + const prefixCls = usePrefixCls('description-text', props) + const getLabels = () => { + const labels = formatMomentValue(props.value, props.format, placeholder) + return isArr(labels) ? labels.join('~') : labels + } + return ( +
+ {getLabels()} +
+ ) +} + +const TimePicker: React.FC = (props) => { + const placeholder = usePlaceholder() + const prefixCls = usePrefixCls('description-text', props) + const getLabels = () => { + const labels = formatMomentValue(props.value, props.format, placeholder) + return isArr(labels) ? labels.join('~') : labels + } + return ( +
+ {getLabels()} +
+ ) +} + +const TimeRangePicker: React.FC = (props) => { + const placeholder = usePlaceholder() + const prefixCls = usePrefixCls('description-text', props) + const getLabels = () => { + const labels = formatMomentValue(props.value, props.format, placeholder) + return isArr(labels) ? labels.join('~') : labels + } + return ( +
+ {getLabels()} +
+ ) +} + +export const Descriptions = { + Input, + URL, + TextArea, + Select, + ObjectSelect, + TreeSelect, + Cascader, + DatePicker, + DateRangePicker, + TimePicker, + TimeRangePicker, + Placeholder, + InputNumber, + usePlaceholder, +} + +export default Descriptions; + diff --git a/packages/client/src/fields/designer/index.md b/packages/client/src/fields/designer/index.md new file mode 100644 index 000000000..9ff0765c6 --- /dev/null +++ b/packages/client/src/fields/designer/index.md @@ -0,0 +1,13 @@ +--- +title: Designer - 字段设计器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Designer - 字段设计器 + diff --git a/packages/app/src/components/fields/form-text-box/style.ts b/packages/client/src/fields/designer/index.tsx similarity index 100% rename from packages/app/src/components/fields/form-text-box/style.ts rename to packages/client/src/fields/designer/index.tsx diff --git a/packages/client/src/fields/drawer-select/index.md b/packages/client/src/fields/drawer-select/index.md new file mode 100644 index 000000000..998950755 --- /dev/null +++ b/packages/client/src/fields/drawer-select/index.md @@ -0,0 +1,113 @@ +--- +title: DrawerSelect - 抽屉选择器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# DrawerSelect - 抽屉选择器 + +## 代码演示 + +### 抽屉选择器 + +```tsx +/** + * title: 抽屉选择器 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'DrawerSelect', + 'x-component-props': { + placeholder: '选择...', + labelField: 'title', + valueField: 'id', + mode: 'multiple', + renderOptions: ({ value, onChange, resolve }) => ( + + ), + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'DrawerSelect', + 'x-component-props': { + labelField: 'title', + valueField: 'id', + mode: 'multiple', + renderItem: ({item}) =>
{item.content}
, + }, + }, +]; + +const data = { + name1: [ + { + id: 1, + title: '标题1', + content: '内容1', + }, + { + id: 2, + title: '标题2', + content: '内容2', + } + ], +}; + +export default () => { + return ( + + ); +}; +``` + +## 参数说明 + +### renderTag + +自定义 Tag 内容 + +### renderItem + +自定义单项内容(在抽屉里显示) + +### renderOptions + +自定义选项列表(在抽屉里显示) \ No newline at end of file diff --git a/packages/client/src/fields/drawer-select/index.tsx b/packages/client/src/fields/drawer-select/index.tsx new file mode 100644 index 000000000..106194972 --- /dev/null +++ b/packages/client/src/fields/drawer-select/index.tsx @@ -0,0 +1,135 @@ +import React from 'react'; +import { connect, mapProps, mapReadPretty } from '@formily/react'; +import { Select, Tag } from 'antd'; +import { LoadingOutlined } from '@ant-design/icons'; +import Drawer from '../../components/Drawer'; +import { useRequest } from 'ahooks'; +import { isArr, isValid } from '@formily/shared'; + +function getFieldName(field: any) { + if (typeof field === 'string') { + return field; + } + if (typeof field === 'object') { + return field.name; + } +} + +export const DrawerSelect = connect( + (props) => { + const { + value, + dataRequest, + labelField: lf, + valueField: vf, + renderTag, + renderOptions, + onChange, + ...others + } = props; + const labelField = getFieldName(lf); + const valueField = getFieldName(vf); + const getValues = () => { + if (!isValid(value)) { + return []; + } + return isArr(value) ? value : [value]; + } + const getOptionValue = () => { + const values = getValues().map((item) => { + return { + value: item[valueField], + label: item[labelField], + }; + }); + if (props.mode === 'multiple' || props.mode === 'tags') { + return values; + } + return values.length ? values[0] : null; + }; + return ( + { + }} + defaultValue={'and'} + > + 全部 + 任意 + {' '} + 条件 + + { + console.log({ list }); + }} + /> + + ); +} + +export function List(props) { + const { initialValue } = props; + const { list, push, remove } = useDynamicList(initialValue || []); + useEffect(() => { + props.onChange && props.onChange(list); + }, [list]); + const fields = useContext(FilterSourceFieldsContext); + return ( +
+
+ {list.map((item, index) => { + if (item.type === 'group') { + return remove(index)} />; + } + return remove(index)} />; + })} +
+ { + push({ + type: 'item', + key: new Date().toTimeString(), + }); + }} + > + 添加条件 + {' '} + { + push({ + type: 'group', + key: new Date().toTimeString(), + }); + }} + > + 添加条件组 + +
+ ); +} diff --git a/packages/client/src/fields/filter/index.md b/packages/client/src/fields/filter/index.md new file mode 100644 index 000000000..e32b6a4bf --- /dev/null +++ b/packages/client/src/fields/filter/index.md @@ -0,0 +1,258 @@ +--- +title: Filter - 筛选器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Filter - 筛选器 + +## 代码演示 + +### 筛选器 - 基本使用 + +```tsx +/** + * title: 筛选器 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const fields = [ + { + interface: 'input', + type: 'string', + title: `文本`, + name: 'input', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-operations': [ + { + label: '等于1', + value: 'eq', + }, + { + label: '大于1', + value: 'gt', + }, + { + label: '为空', + value: 'isNull', + noValue: true, + } + ], + }, + { + interface: 'number', + type: 'string', + title: `数字`, + name: 'number', + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-operations': [ + { + label: '等于2', + value: 'eq', + }, + { + label: '大于2', + value: 'gt', + }, + { + label: '为空', + value: 'isNull', + noValue: true, + } + ], + }, + { + interface: 'number', + type: 'string', + title: `数字`, + name: 'number2', + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-operations': [ + { + label: '等于3', + value: 'eq', + }, + { + label: '为空', + value: 'isNull', + noValue: true, + } + ], + }, + { + interface: 'datetime', + type: 'string', + title: `日期`, + name: 'datetime', + 'x-decorator': 'FormItem', + 'x-component': 'DatePicker', + 'x-operations': [ + { + label: '等于4', + value: 'eq', + } + ], + }, +]; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Filter', + 'x-source-fields': fields, + 'x-target-fields': [], + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Filter', + }, +]; + +const data = { +}; + +export default () => { + return ( + + ); +}; +``` + +### 筛选项 - 数字类型 + +```tsx +import React from 'react'; +import FilterItem from './FilterItem'; + +const fields = [ + { + interface: 'input', + type: 'string', + title: `文本`, + name: 'input', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-operations': [ + { + label: '等于1', + value: 'eq', + }, + { + label: '大于1', + value: 'gt', + }, + { + label: '为空', + value: 'isNull', + noValue: true, + } + ], + }, + { + interface: 'number', + type: 'string', + title: `数字`, + name: 'number', + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-operations': [ + { + label: '等于2', + value: 'eq', + }, + { + label: '大于2', + value: 'gt', + }, + { + label: '为空', + value: 'isNull', + noValue: true, + } + ], + }, + { + interface: 'number', + type: 'string', + title: `数字`, + name: 'number2', + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-operations': [ + { + label: '等于3', + value: 'eq', + }, + { + label: '为空', + value: 'isNull', + noValue: true, + } + ], + }, + { + interface: 'datetime', + type: 'string', + title: `日期`, + name: 'datetime', + 'x-decorator': 'FormItem', + 'x-component': 'DatePicker', + 'x-operations': [ + { + label: '等于4', + value: 'eq', + } + ], + }, +]; + +const initialValues = { + key: 'number', +} + +export default () => { + return ( + + ) +} + +``` +## API + +### Filter + +筛选器组件 + +### Filter.Item + +筛选项组件 + +#### initialValues +#### fields +#### onRemove \ No newline at end of file diff --git a/packages/client/src/fields/filter/index.tsx b/packages/client/src/fields/filter/index.tsx new file mode 100644 index 000000000..2b6a3ab87 --- /dev/null +++ b/packages/client/src/fields/filter/index.tsx @@ -0,0 +1,36 @@ +import React, { useEffect } from 'react' +import { connect, mapProps, mapReadPretty, useFieldSchema } from '@formily/react' +import { LoadingOutlined } from '@ant-design/icons' +import { useDynamicList } from 'ahooks'; +import { Group, FilterSourceFieldsContext } from './Group' + +export const Filter = connect( + (props) => { + const schema = useFieldSchema(); + return ( + + + + ); + }, + mapProps((props, field) => { + return { + ...props, + suffix: ( + + {field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffix + )} + + ), + } + }), + mapReadPretty((props) => { + return null; + }) +) + +export default Filter; + diff --git a/packages/client/src/fields/filter/style.less b/packages/client/src/fields/filter/style.less new file mode 100644 index 000000000..6e2fc7353 --- /dev/null +++ b/packages/client/src/fields/filter/style.less @@ -0,0 +1,6 @@ +.filter-group { + position: relative; + margin-bottom: 14px; + padding: 14px; + border: 1px dashed rgb(222, 222, 222); +} \ No newline at end of file diff --git a/packages/client/src/fields/icon-picker/index.md b/packages/client/src/fields/icon-picker/index.md new file mode 100644 index 000000000..6159ed9af --- /dev/null +++ b/packages/client/src/fields/icon-picker/index.md @@ -0,0 +1,61 @@ +--- +title: IconPicker - 图标选择器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# IconPicker - 图标选择器 + +```tsx +/** + * title: 图标 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'icon1', + 'x-decorator': 'FormItem', + 'x-component': 'IconPicker', + 'x-reactions': { + target: 'icon2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'icon2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'IconPicker', + }, +]; + +const data = { + icon1: 'TableOutlined', + icon2: 'TableOutlined', +}; + +export default () => { + return ( +
+ +
+ ); +}; +``` diff --git a/packages/client/src/fields/icon-picker/index.tsx b/packages/client/src/fields/icon-picker/index.tsx new file mode 100644 index 000000000..983a3d372 --- /dev/null +++ b/packages/client/src/fields/icon-picker/index.tsx @@ -0,0 +1,73 @@ +import React, { useState } from 'react'; +import { connect, mapProps, mapReadPretty } from '@formily/react'; +import { Input, Popover, Button } from 'antd'; +import { LoadingOutlined, CloseOutlined } from '@ant-design/icons'; +import { icons, hasIcon, Icon } from '../../components/Icon'; + +function IconField(props: any) { + const { value, onChange } = props; + const [visible, setVisible] = useState(false); + return ( +
+ + { + setVisible(val); + }} + content={ +
+ {[...icons.keys()].map((key) => ( + { + onChange(key); + setVisible(false); + }} + > + + + ))} +
+ } + title="图标" + trigger="click" + > + +
+ {value && ( + + )} +
+
+ ); +} + +export const IconPicker = connect( + IconField, + mapProps((props, field) => { + return { + ...props, + suffix: ( + + {field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffix + )} + + ), + }; + }), + mapReadPretty((props) => { + return ; + }), +); + +export default IconPicker; diff --git a/packages/client/src/fields/index.md b/packages/client/src/fields/index.md new file mode 100644 index 000000000..8e5e57acb --- /dev/null +++ b/packages/client/src/fields/index.md @@ -0,0 +1,120 @@ +--- +title: Field - 字段概述 +nav: + title: 组件 + path: /client +order: 0 +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Field - 字段概述 + +字段参数总共有三类情况 + +- 服务端参数:如 foreignKey、sourceKey、targetKey 等 +- 客户端参数:如 x-component、x-decorator 等 +- 混合参数:服务端和客户端都涉及到,如 name、x-validator 等 + +字段参数的安排上,服务端主要参考 Sequelize,客户端主要参考 Formily。 + + +字段参数的安排上,服务端主要参考 Sequelize,客户端主要参考 Formily。三部分参数如何统一还待进一步确定。 + + +## 参数说明 + +### interface M + +参数组合之后的参数,可以理解为字段模板,如手机号和电子邮箱的参数区别只在于 x-validator 不一样,一个是 phone,另一个是 email + +手机号 + +```ts +{ + interface: 'phone', + type: 'string', + title: `手机号`, + name: 'phone', + required: true, + 'x-decorator': 'FormItem', + 'x-validator': 'phone', + 'x-component': 'Input', + 'x-component-props': { + placeholder: 'please enter', + }, +}; +``` + +电子邮箱 + +```ts +{ + interface: 'email', + type: 'string', + title: `单行文本`, + name: 'email', + required: true, + 'x-decorator': 'FormItem', + 'x-validator': 'email', + 'x-component': 'Input', + 'x-component-props': { + placeholder: 'please enter', + }, +}; +``` + +### type M + +Formily 的 type 与 Sequelize 的 type 有些许参数,Sequelize 的更细致,Formily 的粗狂。所以以 Sequelize 为主,客户端需要时,转化为 Formily 的。Formily 的 type 有以下几种: + +- String +- Object +- Array +- Boolean +- Date +- DateTime +- Void +- Number + +### title C + +字段标题 + +### name M + +字段标识,前后端的用法基本相同 + +### default/defaultValue M + +Formily 用的是 default,Sequelize 用的是 defaultValue,前端的默认值数据格式更丰富,所以以前端为主。实际数据库表字段都不会设置默认值,需要时通过程序处理。 + +### required/nullable M + +Formily 用的是 required,Sequelize 用的是 nullable。实际数据库表字段都是 `可空` 的,`非空` 通过程序判断。 + +### x-validator M + +Formily 的 validator 与 Sequelize 的 validator 有差别,目前已 Formily 为主。 + +### x-component C + +字段适配的组件 + +### x-component-props C + +组件的参数,无侵入,具体参数与适配的组件有关 + +### x-decorator C + +字段装饰器,主要用于字段的布局,常用的字段装饰器有: + +- FormItem:用于表单场景 +- Editable:用于快捷编辑 +- Column:用于表格单元格数据输出 + +### x-decorator-props C + +字段装饰器参数 \ No newline at end of file diff --git a/packages/client/src/fields/index.tsx b/packages/client/src/fields/index.tsx new file mode 100644 index 000000000..d7ad569a0 --- /dev/null +++ b/packages/client/src/fields/index.tsx @@ -0,0 +1,135 @@ +import React, { useMemo } from 'react'; +import { Form, FormItem, FormLayout, Space } from '@formily/antd'; +import { FormProvider, createSchemaField } from '@formily/react'; +import { createForm } from '@formily/core'; +import * as core from '@formily/core'; +import { Select } from './select'; +import { Input } from './input'; +import { InputNumber } from './input-number'; +import { IconPicker } from './icon-picker'; +import { ColorSelect } from './color-select'; +import { Cascader } from './cascader'; +import { Checkbox } from './checkbox'; +import { DatePicker } from './date-picker'; +import { DrawerSelect } from './drawer-select'; +import { Filter } from './filter'; +import { Markdown } from './markdown'; +import { Password } from './password'; +import { Radio } from './radio'; +import { TimePicker } from './time-picker'; + +export function fields2properties(fields: any) { + const items = Array.isArray(fields) ? fields : [fields]; + const properties = {}; + items.forEach((field) => { + const { name, dataSource, ...property } = field; + properties[name] = { + 'x-decorator': 'FormItem', + enum: dataSource, + ...property, + }; + }); + return properties; +} + +const fieldComponents = { + Input, + InputNumber, + FormItem, + Select, + IconPicker, + ColorSelect, + FormLayout, + Cascader, + Checkbox, + DatePicker, + DrawerSelect, + Filter, + Markdown, + Password, + Radio, + Space, + TimePicker, + Column: ({ children }) => children, +}; + +const fieldScope = {}; + +export function registerFieldComponents(components) { + Object.keys(components).forEach(displayName => { + fieldComponents[displayName] = components[displayName]; + }); +} + +export function getFieldComponent(displayName: string) { + return fieldComponents[displayName] +} + +export function registerFieldScope(scopes) { + Object.keys(scopes).forEach(name => { + fieldScope[name] = scopes[name]; + }); +} + +export const SchemaField = createSchemaField({ + components: fieldComponents, + scope: fieldScope, +}); + +export function parseEffects(effects: any, form?: any) { + if (!effects) { + return; + } + if (typeof effects === 'function') { + effects(form); + } + if (typeof effects === 'object') { + Object.keys(effects || {}).forEach((key) => { + const fn = core[key]; + if (key.startsWith('on') && fn) { + fn(effects[key]); + } + }); + } +} + +export interface FieldProps { + schema: any; + data?: any; + readPretty?: boolean; + [key: string]: any; +} + +export function Field(props: FieldProps) { + const { schema, readPretty, data, effects } = props; + const form = props.form || useMemo( + () => + createForm({ + initialValues: data, + readPretty, + effects: (form) => parseEffects(effects, form), + }), + [], + ); + return ( +
+ + + +
+ ); +} diff --git a/packages/client/src/fields/input-number/index.md b/packages/client/src/fields/input-number/index.md new file mode 100644 index 000000000..47d02fcd6 --- /dev/null +++ b/packages/client/src/fields/input-number/index.md @@ -0,0 +1,126 @@ +--- +title: InputNumber - 数字框 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# InputNumber - 数字框 + +### 数字框 + +```tsx +/** + * title: 数字框 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'number', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'number', + type: 'number', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + }, +]; + +const data = { + name1: 1234, +}; + +export default () => { + return ( + + ); +}; +``` + +### 百分比 + +```tsx +/** + * title: 百分比 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'number', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-component-props': { + placeholder: 'please enter', + formatter: value => `${value}%`, + parser: value => value.replace('%', ''), + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'number', + type: 'number', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'InputNumber', + 'x-component-props': { + placeholder: 'please enter', + formatter: value => `${value}%`, + parser: value => value.replace('%', ''), + }, + }, +]; + +const data = { + name1: 1234, +}; + +export default () => { + return ( + + ); +}; +``` + +## 参数说明 + +以下只列特殊参数,其他通用参数参考 [Field 章节](fields)。 + +### precision M + +精确度 diff --git a/packages/client/src/fields/input-number/index.tsx b/packages/client/src/fields/input-number/index.tsx new file mode 100644 index 000000000..6d26f6f30 --- /dev/null +++ b/packages/client/src/fields/input-number/index.tsx @@ -0,0 +1,10 @@ +import { connect, mapReadPretty } from '@formily/react' +import { InputNumber as AntdNumber } from 'antd' +import { Descriptions } from '../descriptions' + +export const InputNumber = connect( + AntdNumber, + mapReadPretty(Descriptions.InputNumber) +) + +export default InputNumber diff --git a/packages/client/src/fields/input/index.md b/packages/client/src/fields/input/index.md new file mode 100644 index 000000000..e30c63e14 --- /dev/null +++ b/packages/client/src/fields/input/index.md @@ -0,0 +1,283 @@ +--- +title: Input - 输入框 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Input - 输入框 + +输入框是非常常用的控件,参数可以组合成许多字段,如单行文本、多行文本、手机号、邮箱、网址等。 + +## 代码演示 + +### 单行文本 + +```tsx +/** + * title: 单行文本 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Input', + }, +]; + +const data = { + name1: '这是一段文字', + name2: '这是一段文字', +}; + +export default () => { + return ( + + ); +}; +``` + +### 多行文本 + +```tsx +/** + * title: 多行文本 + * desc: 用于多行输入,使用 `Input.TextArea` 组件,`ellipsis=true` 时超出隐藏 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Input.TextArea', + 'x-reactions': { + target: '*(name2,name3)', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Input.TextArea', + }, + { + interface: 'string', + type: 'string', + title: `阅读模式(超出隐藏)`, + name: 'name3', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Input.TextArea', + 'x-component-props': { + ellipsis: true, + }, + }, +]; + +const data = { + name1: `第一行文字\n第二行文字`, +}; + +export default () => { + return ( + + ); +}; +``` + +### 电子邮箱 + +```tsx +/** + * title: 电子邮箱 + * desc: 加上邮箱验证 `x-validator=email` + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-validator': 'email', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-validator': 'email', + }, +]; + +const data = { + name1: 'test@example.com' +}; + +export default () => { + return ( + + ); +}; +``` + +### 手机号 + +```tsx +/** + * title: 手机号 + * desc: 加上手机号验证 `x-validator=phone` + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-validator': 'phone', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-validator': 'phone', + }, +]; + +const data = { + name1: '13012341234' +}; + +export default () => { + return ( + + ); +}; +``` + +### 网址 + +```tsx +/** + * title: 网址 + * desc: 加上 URL 验证 `x-validator=url` + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Input.URL', + 'x-validator': 'url', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Input.URL', + 'x-validator': 'url', + }, +]; + +const data = { + name1: 'https://www.example.com' +}; + +export default () => { + return ( + + ); +}; +``` + +## 参数说明 + +输入框组件暂时还没有特殊的参数,其他通用参数参考 [Field 章节](fields)。 \ No newline at end of file diff --git a/packages/client/src/fields/input/index.tsx b/packages/client/src/fields/input/index.tsx new file mode 100644 index 000000000..b486c6e80 --- /dev/null +++ b/packages/client/src/fields/input/index.tsx @@ -0,0 +1,35 @@ +import React from 'react' +import { connect, mapProps, mapReadPretty } from '@formily/react' +import { Input as AntdInput } from 'antd' +import { InputProps, TextAreaProps } from 'antd/lib/input' +import { Descriptions } from '../descriptions' +import { LoadingOutlined } from '@ant-design/icons' + +type ComposedInput = React.FC & { + TextArea?: React.FC + URL?: React.FC +} + +export const Input: ComposedInput = connect( + AntdInput, + mapProps((props, field) => { + return { + ...props, + suffix: ( + + {field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffix + )} + + ), + } + }), + mapReadPretty(Descriptions.Input) +) + +Input.TextArea = connect(AntdInput.TextArea, mapReadPretty(Descriptions.TextArea)) +Input.URL = connect(AntdInput, mapReadPretty(Descriptions.URL)) + +export default Input diff --git a/packages/client/src/fields/markdown/index.md b/packages/client/src/fields/markdown/index.md new file mode 100644 index 000000000..8ef0bcfb2 --- /dev/null +++ b/packages/client/src/fields/markdown/index.md @@ -0,0 +1,74 @@ +--- +title: Markdown 编辑器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Markdown 编辑器 + +## 代码演示 + +### 多行文本 + +```tsx +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Markdown', + 'x-reactions': { + target: '*(name2,name3)', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Markdown', + }, + { + interface: 'string', + type: 'string', + title: `阅读模式(超出隐藏)`, + name: 'name3', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Markdown', + 'x-component-props': { + ellipsis: true, + }, + }, +]; + +const data = { + name1: `# 标题\n第一行文字 \n第二行文字`, +}; + +export default () => { + return ( + + ); +}; +``` + + + diff --git a/packages/client/src/fields/markdown/index.tsx b/packages/client/src/fields/markdown/index.tsx new file mode 100644 index 000000000..ca7b0135a --- /dev/null +++ b/packages/client/src/fields/markdown/index.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { connect, mapProps, mapReadPretty } from '@formily/react'; +import { Input as AntdInput } from 'antd'; +import { InputProps, TextAreaProps } from 'antd/lib/input'; +import { Descriptions } from '../descriptions'; +import { LoadingOutlined } from '@ant-design/icons'; +import micromark from 'micromark'; + +export const Markdown = connect( + AntdInput.TextArea, + mapProps((props: any, field) => { + return { + ...props, + suffix: ( + + {field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffix + )} + + ), + }; + }), + mapReadPretty((props) => { + let text = props.value; + let value = ( +
+ ); + return ; + }), +); + +export default Markdown; diff --git a/packages/client/src/fields/password/PasswordStrength.tsx b/packages/client/src/fields/password/PasswordStrength.tsx new file mode 100755 index 000000000..269e703f1 --- /dev/null +++ b/packages/client/src/fields/password/PasswordStrength.tsx @@ -0,0 +1,164 @@ +import React, { Fragment } from 'react' +import { isFn } from '@formily/shared' + +type ReactRenderPropsChildren = + | React.ReactNode + | ((props: T) => React.ReactElement) + +interface IPasswordStrengthProps { + value?: React.ReactText + children?: ReactRenderPropsChildren +} + +const isNum = function (c) { + return c >= 48 && c <= 57 +} +const isLower = function (c) { + return c >= 97 && c <= 122 +} +const isUpper = function (c) { + return c >= 65 && c <= 90 +} +const isSymbol = function (c) { + return !(isLower(c) || isUpper(c) || isNum(c)) +} +const isLetter = function (c) { + return isLower(c) || isUpper(c) +} + +const getStrength = (val) => { + if (!val) return 0 + let num = 0 + let lower = 0 + let upper = 0 + let symbol = 0 + let MNS = 0 + let rep = 0 + let repC = 0 + let consecutive = 0 + let sequential = 0 + const len = () => num + lower + upper + symbol + const callme = () => { + let re = num > 0 ? 1 : 0 + re += lower > 0 ? 1 : 0 + re += upper > 0 ? 1 : 0 + re += symbol > 0 ? 1 : 0 + if (re > 2 && len() >= 8) { + return re + 1 + } else { + return 0 + } + } + for (let i = 0; i < val.length; i++) { + const c = val.charCodeAt(i) + if (isNum(c)) { + num++ + if (i !== 0 && i !== val.length - 1) { + MNS++ + } + if (i > 0 && isNum(val.charCodeAt(i - 1))) { + consecutive++ + } + } else if (isLower(c)) { + lower++ + if (i > 0 && isLower(val.charCodeAt(i - 1))) { + consecutive++ + } + } else if (isUpper(c)) { + upper++ + if (i > 0 && isUpper(val.charCodeAt(i - 1))) { + consecutive++ + } + } else { + symbol++ + if (i !== 0 && i !== val.length - 1) { + MNS++ + } + } + let exists = false + for (let j = 0; j < val.length; j++) { + if (val[i] === val[j] && i !== j) { + exists = true + repC += Math.abs(val.length / (j - i)) + } + } + if (exists) { + rep++ + const unique = val.length - rep + repC = unique ? Math.ceil(repC / unique) : Math.ceil(repC) + } + if (i > 1) { + const last1 = val.charCodeAt(i - 1) + const last2 = val.charCodeAt(i - 2) + if (isLetter(c)) { + if (isLetter(last1) && isLetter(last2)) { + const v = val.toLowerCase() + const vi = v.charCodeAt(i) + const vi1 = v.charCodeAt(i - 1) + const vi2 = v.charCodeAt(i - 2) + if (vi - vi1 === vi1 - vi2 && Math.abs(vi - vi1) === 1) { + sequential++ + } + } + } else if (isNum(c)) { + if (isNum(last1) && isNum(last2)) { + if (c - last1 === last1 - last2 && Math.abs(c - last1) === 1) { + sequential++ + } + } + } else { + if (isSymbol(last1) && isSymbol(last2)) { + if (c - last1 === last1 - last2 && Math.abs(c - last1) === 1) { + sequential++ + } + } + } + } + } + let sum = 0 + const length = len() + sum += 4 * length + if (lower > 0) { + sum += 2 * (length - lower) + } + if (upper > 0) { + sum += 2 * (length - upper) + } + if (num !== length) { + sum += 4 * num + } + sum += 6 * symbol + sum += 2 * MNS + sum += 2 * callme() + if (length === lower + upper) { + sum -= length + } + if (length === num) { + sum -= num + } + sum -= repC + sum -= 2 * consecutive + sum -= 3 * sequential + sum = sum < 0 ? 0 : sum + sum = sum > 100 ? 100 : sum + + if (sum >= 80) { + return 100 + } else if (sum >= 60) { + return 80 + } else if (sum >= 40) { + return 60 + } else if (sum >= 20) { + return 40 + } else { + return 20 + } +} + +export const PasswordStrength: React.FC = (props) => { + if (isFn(props.children)) { + return props.children(getStrength(String(props.value))) + } else { + return {props.children} + } +} diff --git a/packages/client/src/fields/password/index.md b/packages/client/src/fields/password/index.md new file mode 100644 index 000000000..bff47bb7f --- /dev/null +++ b/packages/client/src/fields/password/index.md @@ -0,0 +1,58 @@ +--- +title: Password - 密码 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Password - 密码 + +## 代码演示 + +### 密码框 + +```tsx +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'Password', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Password', + }, +]; + +const data = { +}; + +export default () => { + return ( + + ); +}; +``` diff --git a/packages/client/src/fields/password/index.tsx b/packages/client/src/fields/password/index.tsx new file mode 100644 index 000000000..959fc768a --- /dev/null +++ b/packages/client/src/fields/password/index.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { connect, mapReadPretty } from '@formily/react'; +import { Input } from 'antd'; +import { PasswordProps } from 'antd/lib/input'; +import { PasswordStrength } from './PasswordStrength'; +import { Descriptions } from '../descriptions'; + +export interface IPasswordProps extends PasswordProps { + checkStrength: boolean; +} + +export const Password = connect((props: IPasswordProps) => { + const { value, className, checkStrength, ...others } = props; + const blockStyle: React.CSSProperties = { + position: 'absolute', + zIndex: 1, + height: 8, + top: 0, + background: '#fff', + width: 1, + transform: 'translate(-50%, 0)', + }; + return ( + + + {checkStrength && ( + + {(score) => { + return ( +
+
+
+
+
+
+
+ ); + }} + + )} + + ); +}, mapReadPretty(() => { + return ( +
********
+ ) +})); + +export default Password; diff --git a/packages/client/src/fields/radio/index.md b/packages/client/src/fields/radio/index.md new file mode 100644 index 000000000..c1dcbbeb8 --- /dev/null +++ b/packages/client/src/fields/radio/index.md @@ -0,0 +1,77 @@ +--- +title: Radio - 单选框 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Radio - 单选框 + +## 代码演示 + +### 单选框 + +```tsx +/** + * title: 单选框 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const options = [ + { + label: '选项1', + value: 1, + color: 'red', + }, + { + label: '选项2', + value: 2, + color: 'blue', + }, +]; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + dataSource: options, + 'x-decorator': 'FormItem', + 'x-component': 'Radio.Group', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + dataSource: options, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Radio.Group', + }, +]; + +const data = { + name1: 1, +}; + +export default () => { + return ( + + ); +}; +``` diff --git a/packages/client/src/fields/radio/index.tsx b/packages/client/src/fields/radio/index.tsx new file mode 100644 index 000000000..f408245d3 --- /dev/null +++ b/packages/client/src/fields/radio/index.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { connect, mapProps, mapReadPretty, SchemaOptionsContext, useField } from '@formily/react' +import { Radio as AntdRadio, Tag } from 'antd' +import { RadioProps, RadioGroupProps } from 'antd/lib/radio' +import uniq from 'lodash/uniq'; + +type ComposedRadio = React.FC & { + Group?: React.FC + __ANT_RADIO?: boolean +} + +export const Radio: ComposedRadio = connect( + AntdRadio, + mapProps({ + value: 'checked', + onInput: 'onChange', + }) +) + +Radio.__ANT_RADIO = true + +Radio.Group = connect( + AntdRadio.Group, + mapProps({ + dataSource: 'options', + }), + mapReadPretty((props) => { + const { options = [], value } = props; + const field = useField(); + const dataSource = field.dataSource || []; + console.log({dataSource}) + return ( +
+ {dataSource + .filter((option) => option.value === value) + .map((option, key) => ( + {option.label} + ))} +
+ ); + }), +) + +export default Radio diff --git a/packages/client/src/fields/select/index.md b/packages/client/src/fields/select/index.md new file mode 100644 index 000000000..594d1d745 --- /dev/null +++ b/packages/client/src/fields/select/index.md @@ -0,0 +1,446 @@ +--- +title: Select - 选择器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Select - 选择器 + +## 基本用法 + +```tsx +import React from 'react'; +import { Field } from '@nocobase/client'; + +const options = [ + { + label: '选项1', + value: 1, + color: 'red', + }, + { + label: '选项2', + value: 2, + color: 'blue', + }, +]; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + dataSource: options, + 'x-decorator': 'FormItem', + 'x-component': 'Select', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + dataSource: options, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Select', + }, +]; + +const data = { + name1: 2, +}; + +export default () => { + return ( + + ); +}; +``` + +## 多选 + +```tsx +import React from 'react'; +import { Field } from '@nocobase/client'; + +const options = [ + { + label: '选项1', + value: 1, + color: 'red', + }, + { + label: '选项2', + value: 2, + color: 'blue', + }, +]; + +const schema = [ + { + interface: 'string', + type: 'string', + title: `编辑模式`, + name: 'name1', + dataSource: options, + 'x-decorator': 'FormItem', + 'x-component': 'Select', + 'x-component-props': { + mode: 'tags', + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'string', + type: 'string', + title: `阅读模式`, + dataSource: options, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'Select', + 'x-component-props': { + mode: 'tags', + }, + }, +]; + +const data = { + name1: 2, +}; + +export default () => { + return ( + + ); +}; +``` + +## 分组 + +```tsx +import React from 'react'; +import { Field } from '@nocobase/client'; + +const dataSource = [ + { + label: 'Manager', + children: [ + {value: 'jack', label: 'Jack'}, + ], + }, + { + label: 'Engineer', + children: [ + {value: 'lucy', label: 'Lucy'}, + ], + }, +]; + +const schema = [ + { + interface: 'select', + type: 'number', + title: `编辑模式`, + name: 'name1', + dataSource, + 'x-component': 'Select', + 'x-component-props': { + placeholder: 'please enter', + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'select', + type: 'number', + title: `阅读模式`, + name: 'name2', + required: true, + dataSource, + 'x-read-pretty': true, + 'x-component': 'Select', + 'x-component-props': { + placeholder: 'please enter', + }, + } +]; + +const data = { + name1: 'lucy', + name2: 'lucy', +}; + +export default () => { + return ( + + ); +}; +``` + +## 值为对象 + +```tsx +import React from 'react'; +import { Field } from '@nocobase/client'; + +const dataSource = [ + { + id: 1, + title: '标题1', + }, + { + id: 2, + title: '标题2', + }, + { + id: 3, + title: '标题3', + }, +]; + +const schema = [ + { + interface: 'select', + type: 'string', + title: `编辑模式`, + name: 'name1', + dataSource, + 'x-component': 'Select.Object', + 'x-component-props': { + placeholder: 'please enter', + labelField: 'title', + valueField: 'id', + labelInValue: true, + }, + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'select', + type: 'string', + title: `阅读模式`, + name: 'name2', + required: true, + dataSource, + 'x-read-pretty': true, + 'x-component': 'Select.Object', + 'x-component-props': { + placeholder: 'please enter', + labelField: 'title', + valueField: 'id', + labelInValue: true, + }, + } +]; + +const data = { + name1: { + id: 2, + title: '标题2', + }, +}; + +export default () => { + return ( + + ); +}; +``` + +## 异步选项 + +```tsx +import React from 'react'; +import { Field, registerFieldScope } from '@nocobase/client'; +import { action } from '@formily/reactive' + +const schema = [ + { + type: 'string', + name: 'name1', + title: '编辑模式', + 'x-decorator': 'FormItem', + 'x-component': 'Select', + 'x-component-props': { + style: { + width: 120, + }, + }, + 'x-reactions': [ + '{{useAsyncDataSource(loadData)}}', + { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + ], + }, + { + type: 'string', + name: 'name2', + title: '阅读模式', + 'x-decorator': 'FormItem', + 'x-component': 'Select', + 'x-component-props': { + style: { + width: 120, + }, + }, + 'x-read-pretty': true, + 'x-reactions': ['{{useAsyncDataSource(loadData)}}'], + } +]; + +const loadData = async (field) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve([ + { + label: 'CCC', + value: 'ccc', + }, + { + label: 'DDD', + value: 'ddd', + }, + ]) + }, 1500) + }) +} + +const useAsyncDataSource = (service) => (field) => { + field.loading = true + service(field).then( + action((data) => { + field.dataSource = data + field.loading = false + }) + ) +} + +registerFieldScope({ + loadData, + useAsyncDataSource +}); + +const data = { + name1: 'ccc', +}; + +export default () => { + return ( + + ); +}; +``` + +## 参数说明 + +以下只列特殊参数,其他通用参数参考 [Field 章节](fields)。 + +### labelField C + +选项的 Label + +### valueField C + +选项的 Value + +### dataSource M + +Formily 使用 enum 来放选项的值,但是 enum 这个词比较特殊,所以改用 dataSource,支持 optgroup 的情况。 + +### dataRequest M + +用法一 + +```ts +{ + dataRequest: 'users', +} +``` + +用法二 + +```ts +{ + dataRequest: { + associatedKey, + associatedName, + resourceName, + filter, + fields, + }, +} +``` + +用法三 + +```ts +{ + dataRequest: (field) => 'users', +} +``` + +用法四 + +```ts +{ + dataRequest: (field) => ({ + associatedKey, + associatedName, + resourceName, + filter, + fields, + }), +} +``` + +用法五 + +```ts +{ + dataRequest: (field) => { + return Promise.resovle({ + data, + }); + }, +} +``` diff --git a/packages/client/src/fields/select/index.tsx b/packages/client/src/fields/select/index.tsx new file mode 100644 index 000000000..80a86ae88 --- /dev/null +++ b/packages/client/src/fields/select/index.tsx @@ -0,0 +1,185 @@ +import React from 'react'; +import { connect, mapReadPretty, mapProps, useField } from '@formily/react'; +import { Select as AntdSelect, Tag } from 'antd'; +import { PreviewText } from '@formily/antd'; +import { LoadingOutlined } from '@ant-design/icons'; +import { SelectProps } from 'antd/lib/select'; +import { isArr, isValid } from '@formily/shared'; +import { Field } from '@formily/core/esm/models/Field'; +import { useAction } from '../../state'; +import { Descriptions } from '../descriptions'; +import { useRequest } from 'ahooks'; +import uniq from 'lodash/uniq'; + +type ComposedSelect = React.FC> & { + Object?: React.FC; +}; + +export const Select: ComposedSelect = connect( + (props) => { + const { options = [], ...others } = props; + return + {options.map((option: any, key: any) => { + if (option.children) { + return ( + + {option.children.map((child: any, childKey: any) => ( + {child.label} + ))} + + ) + } else { + return {option.label} + } + })} + + }, + mapProps( + { + dataSource: 'options', + loading: true, + }, + (props, field) => { + return { + ...props, + suffixIcon: + field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffixIcon + ), + }; + }, + ), + mapReadPretty((props) => { + const field = useField(); + const dataSource = field.dataSource || []; + console.log('field.value', field.value, dataSource) + const value = Array.isArray(field.value) ? field.value : [field.value]; + const values = uniq(value); + const findOptions = (options: any[]) => { + let current = []; + for (const option of options) { + if (values.includes(option.value)) { + current.push(option); + } + if (option.children) { + current = current.concat(findOptions(option.children)); + } + } + return current; + } + const options = findOptions(dataSource); + return ( +
+ {options + .map((option, key) => ( + {option.label} + ))} +
+ ); + }), +); + +function getFieldName(field: any) { + if (typeof field === 'string') { + return field; + } + if (typeof field === 'object') { + return field.name; + } +} + +Select.Object = connect( + (props) => { + const field = useField(); + const { + value, + onChange, + dataRequest, + labelField: lf, + valueField: vf, + ...others + } = props; + const options = field?.['dataSource'] || props.options || []; + console.log({options}); + const labelField = getFieldName(lf); + const valueField = getFieldName(vf); + const { data = options, loading } = useRequest(() => dataRequest ? dataRequest : Promise.resolve(options), { + refreshDeps: [options] + }); + const getValues = () => { + if (!isValid(value)) { + return []; + } + return isArr(value) ? value : [value]; + } + const getOptionValue = () => { + const values = getValues().map((item) => { + return { + value: item[valueField], + label: item[labelField], + }; + }); + if (props.mode === 'multiple' || props.mode === 'tags') { + return values; + } + return values.length ? values[0] : null; + }; + const getOptions = () => { + return data.map(item => { + return { + value: item[valueField], + label: item[labelField], + }; + }) + } + return ( + { + if (!isValid(option)) { + onChange(null); + } + if (isArr(option)) { + const optionValues = option.map(item => item.value); + const selectValue = data.filter( + (item) => optionValues.includes(item[valueField]), + ); + onChange(selectValue); + } else { + const selectValue = data.find( + (item) => item[valueField] === option.value, + ); + onChange(selectValue); + } + }} + labelInValue + value={getOptionValue()} + options={getOptions()} + /> + ); + }, + mapProps( + { + dataSource: 'options', + loading: true, + }, + (props, field) => { + return { + ...props, + options: field?.['dataSource'], + suffixIcon: + field?.['loading'] || field?.['validating'] ? ( + + ) : ( + props.suffixIcon + ), + }; + }, + ), + mapReadPretty(Descriptions.ObjectSelect), +); + +export default Select; diff --git a/packages/client/src/fields/sub-table/index.md b/packages/client/src/fields/sub-table/index.md new file mode 100644 index 000000000..75d09eb5b --- /dev/null +++ b/packages/client/src/fields/sub-table/index.md @@ -0,0 +1,12 @@ +--- +title: SubTable - 子表格 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# SubTable - 子表格 diff --git a/packages/client/src/index.ts b/packages/client/src/fields/sub-table/index.tsx similarity index 100% rename from packages/client/src/index.ts rename to packages/client/src/fields/sub-table/index.tsx diff --git a/packages/client/src/fields/time-picker/index.md b/packages/client/src/fields/time-picker/index.md new file mode 100644 index 000000000..eea677506 --- /dev/null +++ b/packages/client/src/fields/time-picker/index.md @@ -0,0 +1,61 @@ +--- +title: TimePicker - 时间选择器 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# TimePicker - 时间选择器 + +## 代码演示 + +### 日期选择器 + +```tsx +/** + * title: 日期选择器 + */ +import React from 'react'; +import { Field } from '@nocobase/client'; + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'TimePicker', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'TimePicker', + }, +]; + +const data = { +}; + +export default () => { + return ( + + ); +}; +``` diff --git a/packages/client/src/fields/time-picker/index.tsx b/packages/client/src/fields/time-picker/index.tsx new file mode 100644 index 000000000..6fd1d8e94 --- /dev/null +++ b/packages/client/src/fields/time-picker/index.tsx @@ -0,0 +1,44 @@ +import moment from 'moment' +import { connect, mapProps, mapReadPretty } from '@formily/react' +import { TimePicker as AntdTimePicker } from 'antd' +import { + TimePickerProps as AntdTimePickerProps, + TimeRangePickerProps, +} from 'antd/lib/time-picker' +import { Descriptions } from '../descriptions' +import { formatMomentValue, momentable } from '@formily/antd/esm/__builtins__' + +type ComposedTimePicker = React.FC & { + RangePicker?: React.FC +} + +const mapTimeFormat = function () { + return (props: any) => { + const format = props['format'] || 'HH:mm:ss' + const onChange = props.onChange + return { + ...props, + format, + value: momentable(props.value, format), + onChange: (value: moment.Moment | moment.Moment[]) => { + if (onChange) { + onChange(formatMomentValue(value, format)) + } + }, + } + } +} + +export const TimePicker: ComposedTimePicker = connect( + AntdTimePicker, + mapProps(mapTimeFormat()), + mapReadPretty(Descriptions.TimePicker) +) + +TimePicker.RangePicker = connect( + AntdTimePicker.RangePicker, + mapProps(mapTimeFormat()), + mapReadPretty(Descriptions.TimeRangePicker) +) + +export default TimePicker diff --git a/packages/client/src/fields/upload/index.md b/packages/client/src/fields/upload/index.md new file mode 100644 index 000000000..781b01eb1 --- /dev/null +++ b/packages/client/src/fields/upload/index.md @@ -0,0 +1,79 @@ +--- +title: Upload - 上传 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Upload - 上传 + +## 代码演示 + +### 上传 + +```tsx +import React from 'react'; +import { Button } from 'antd' +import { UploadOutlined, InboxOutlined } from '@ant-design/icons' +import { Field, registerFieldComponents } from '@nocobase/client'; +import Upload from './'; + +const NormalUpload = (props) => { + return ( + + + + ) +} + +registerFieldComponents({ + NormalUpload, +}); + +const schema = [ + { + interface: 'icon', + type: 'string', + title: `编辑模式`, + name: 'name1', + 'x-decorator': 'FormItem', + 'x-component': 'NormalUpload', + 'x-reactions': { + target: 'name2', + fulfill: { + state: { + value: '{{$self.value}}', + }, + }, + }, + }, + { + interface: 'icon', + type: 'string', + title: `阅读模式`, + name: 'name2', + 'x-read-pretty': true, + 'x-decorator': 'FormItem', + 'x-component': 'NormalUpload', + }, +]; + +const data = { +}; + +export default () => { + return ( + + ); +}; +``` diff --git a/packages/client/src/fields/upload/index.tsx b/packages/client/src/fields/upload/index.tsx new file mode 100644 index 000000000..9226463f0 --- /dev/null +++ b/packages/client/src/fields/upload/index.tsx @@ -0,0 +1,191 @@ +import React, { useEffect } from 'react'; +import { connect, mapProps, mapReadPretty, useField } from '@formily/react'; +import { Upload as AntdUpload } from 'antd'; +import { + UploadChangeParam, + UploadProps as AntdUploadProps, + DraggerProps as AntdDraggerProps, +} from 'antd/lib/upload'; +import { reaction } from '@formily/reactive'; +import { UploadFile } from 'antd/lib/upload/interface'; +import { isArr, toArr } from '@formily/shared'; +import { UPLOAD_PLACEHOLDER } from './placeholder'; +import { usePrefixCls } from '@formily/antd/esm/__builtins__'; + +type UploadProps = Omit & { + onChange?: (fileList: UploadFile[]) => void; + serviceErrorMessage?: string; +}; + +type DraggerProps = Omit & { + onChange?: (fileList: UploadFile[]) => void; + serviceErrorMessage?: string; +}; + +type ComposedUpload = React.FC & { + Dragger?: React.FC; +}; + +type IUploadProps = { + serviceErrorMessage?: string; + onChange?: (...args: any) => void; +}; + +const testOpts = ( + ext: RegExp, + options: { exclude?: string[]; include?: string[] }, +) => { + if (options && isArr(options.include)) { + return options.include.some((url) => ext.test(url)); + } + + if (options && isArr(options.exclude)) { + return !options.exclude.some((url) => ext.test(url)); + } + + return true; +}; + +const getImageByUrl = (url: string, options: any) => { + for (let i = 0; i < UPLOAD_PLACEHOLDER.length; i++) { + if ( + UPLOAD_PLACEHOLDER[i].ext.test(url) && + testOpts(UPLOAD_PLACEHOLDER[i].ext, options) + ) { + return UPLOAD_PLACEHOLDER[i].icon || url; + } + } + + return url; +}; + +const getURL = (target: any) => { + return target?.['url'] || target?.['downloadURL'] || target?.['imgURL']; +}; +const getThumbURL = (target: any) => { + return ( + target?.['thumbUrl'] || + target?.['url'] || + target?.['downloadURL'] || + target?.['imgURL'] + ); +}; + +const getErrorMessage = (target: any) => { + return target?.errorMessage || + target?.errMsg || + target?.errorMsg || + target?.message || + typeof target?.error === 'string' + ? target.error + : ''; +}; + +const getState = (target: any) => { + if (target?.success === false) return 'error'; + if (target?.failed === true) return 'error'; + if (target?.error) return 'error'; + return target?.state || target?.status; +}; + +const normalizeFileList = (fileList: UploadFile[]) => { + if (fileList && fileList.length) { + return fileList.map((file, index) => { + return { + ...file, + uid: file.uid || `${index}`, + status: getState(file.response) || getState(file), + url: getURL(file) || getURL(file?.response), + thumbUrl: getImageByUrl( + getThumbURL(file) || getThumbURL(file?.response), + { + exclude: ['.png', '.jpg', '.jpeg', '.gif'], + }, + ), + }; + }); + } + return []; +}; + +const useValidator = (validator: (value: any) => string) => { + const field = useField(); + useEffect(() => { + const dispose = reaction( + () => field.value, + (value) => { + const message = validator(value); + field.setFeedback({ + type: 'error', + code: 'UploadError', + messages: message ? [message] : [], + }); + }, + ); + return () => { + dispose(); + }; + }, []); +}; + +const useUploadValidator = (serviceErrorMessage = 'Upload Service Error') => { + useValidator((value) => { + const list = toArr(value); + for (let i = 0; i < list.length; i++) { + if (list[i]?.status === 'error') { + return ( + getErrorMessage(list[i]?.response) || + getErrorMessage(list[i]) || + serviceErrorMessage + ); + } + } + }); +}; + +function useUploadProps({ + serviceErrorMessage, + ...props +}: T) { + useUploadValidator(serviceErrorMessage); + const onChange = (param: UploadChangeParam) => { + props.onChange?.(normalizeFileList([...param.fileList])); + }; + return { + ...props, + onChange, + }; +} + +export const Upload: ComposedUpload = connect( + (props: UploadProps) => { + return ; + }, + mapProps({ + value: 'fileList', + }), + mapReadPretty((props) => { + const field = useField(); + console.log('field.value', field.value); + return (field.value || []).map((item) => ( +
{item.url ? {item.name} : {item.name}}
+ )); + }), +); + +const Dragger = connect( + (props: DraggerProps) => { + return ( +
+ +
+ ); + }, + mapProps({ + value: 'fileList', + }), +); + +Upload.Dragger = Dragger; + +export default Upload; diff --git a/packages/client/src/fields/upload/placeholder.ts b/packages/client/src/fields/upload/placeholder.ts new file mode 100755 index 000000000..14c2d5941 --- /dev/null +++ b/packages/client/src/fields/upload/placeholder.ts @@ -0,0 +1,62 @@ +export const UPLOAD_PLACEHOLDER = [ + { + ext: /\.docx?$/i, + icon: '//img.alicdn.com/tfs/TB1n8jfr1uSBuNjy1XcXXcYjFXa-200-200.png' + }, + { + ext: /\.pptx?$/i, + icon: '//img.alicdn.com/tfs/TB1ItgWr_tYBeNjy1XdXXXXyVXa-200-200.png' + }, + { + ext: /\.jpe?g$/i, + icon: '//img.alicdn.com/tfs/TB1wrT5r9BYBeNjy0FeXXbnmFXa-200-200.png' + }, + { + ext: /\.pdf$/i, + icon: '//img.alicdn.com/tfs/TB1GwD8r9BYBeNjy0FeXXbnmFXa-200-200.png' + }, + { + ext: /\.png$/i, + icon: '//img.alicdn.com/tfs/TB1BHT5r9BYBeNjy0FeXXbnmFXa-200-200.png' + }, + { + ext: /\.eps$/i, + icon: '//img.alicdn.com/tfs/TB1G_iGrVOWBuNjy0FiXXXFxVXa-200-200.png' + }, + { + ext: /\.ai$/i, + icon: '//img.alicdn.com/tfs/TB1B2cVr_tYBeNjy1XdXXXXyVXa-200-200.png' + }, + { + ext: /\.gif$/i, + icon: '//img.alicdn.com/tfs/TB1DTiGrVOWBuNjy0FiXXXFxVXa-200-200.png' + }, + { + ext: /\.svg$/i, + icon: '//img.alicdn.com/tfs/TB1uUm9rY9YBuNjy0FgXXcxcXXa-200-200.png' + }, + { + ext: /\.xlsx?$/i, + icon: '//img.alicdn.com/tfs/TB1any1r1OSBuNjy0FdXXbDnVXa-200-200.png' + }, + { + ext: /\.psd?$/i, + icon: '//img.alicdn.com/tfs/TB1_nu1r1OSBuNjy0FdXXbDnVXa-200-200.png' + }, + { + ext: /\.(wav|aif|aiff|au|mp1|mp2|mp3|ra|rm|ram|mid|rmi)$/i, + icon: '//img.alicdn.com/tfs/TB1jPvwr49YBuNjy0FfXXXIsVXa-200-200.png' + }, + { + ext: /\.(avi|wmv|mpg|mpeg|vob|dat|3gp|mp4|mkv|rm|rmvb|mov|flv)$/i, + icon: '//img.alicdn.com/tfs/TB1FrT5r9BYBeNjy0FeXXbnmFXa-200-200.png' + }, + { + ext: /\.(zip|rar|arj|z|gz|iso|jar|ace|tar|uue|dmg|pkg|lzh|cab)$/i, + icon: '//img.alicdn.com/tfs/TB10jmfr29TBuNjy0FcXXbeiFXa-200-200.png' + }, + { + ext: /\.[^.]+$/i, + icon: '//img.alicdn.com/tfs/TB10.R4r3mTBuNjy1XbXXaMrVXa-200-200.png' + } +] \ No newline at end of file diff --git a/packages/client/src/fields/values/index.md b/packages/client/src/fields/values/index.md new file mode 100644 index 000000000..7b63dfd73 --- /dev/null +++ b/packages/client/src/fields/values/index.md @@ -0,0 +1,12 @@ +--- +title: Values - 赋值 +nav: + title: 组件 + path: /client +group: + order: 1 + title: 字段 - Fields + path: /client/fields +--- + +# Values - 赋值 diff --git a/packages/create-nocobase-app/src/app.ts b/packages/client/src/fields/values/index.tsx old mode 100755 new mode 100644 similarity index 100% rename from packages/create-nocobase-app/src/app.ts rename to packages/client/src/fields/values/index.tsx diff --git a/packages/client/src/index.md b/packages/client/src/index.md new file mode 100644 index 000000000..f5908e0c8 --- /dev/null +++ b/packages/client/src/index.md @@ -0,0 +1,13 @@ +--- +title: 介绍 +nav: + title: 组件 + path: /client +toc: menu +group: + order: 0 + title: 介绍 + path: /client +--- + +# 介绍 diff --git a/packages/client/src/index.tsx b/packages/client/src/index.tsx new file mode 100644 index 000000000..3e0a891f3 --- /dev/null +++ b/packages/client/src/index.tsx @@ -0,0 +1,6 @@ +export * from './state'; +export * from './blocks'; +export * from './templates'; +export * from './fields'; +export * from './components/RouteSwitch'; +export { Drawer } from './components/Drawer'; diff --git a/packages/client/src/resource.ts b/packages/client/src/resource.ts new file mode 100644 index 000000000..e2c38a81f --- /dev/null +++ b/packages/client/src/resource.ts @@ -0,0 +1,70 @@ +import request from 'umi-request'; + +export interface ResourceOptions { + resourceName: string; + associatedKey?: any; + associatedName?: string; + resourceKey?: any; +} + +export interface GetOptions { + resourceKey?: any; + appends?: string[]; +} + +export interface SaveOptions { + resourceKey?: any; +} + +export interface ListOptions { +} + +export class Resource { + + protected options: ResourceOptions; + + constructor(options: string | ResourceOptions) { + if (typeof options === 'string') { + this.options = { resourceName: options } + } else { + this.options = options; + } + } + + list(options: ListOptions = {}) { + const { resourceName } = this.options; + return request(`/api/${resourceName}:list`); + } + + get(options: GetOptions = {}) { + const resourceKey = options.resourceKey || this.options.resourceKey; + const { resourceName } = this.options; + if (!resourceKey) { + return Promise.resolve({ data: {} }); + } + return request(`/api/${resourceName}:get/${resourceKey}`); + } + + save(values: any, options: SaveOptions = {}) { + const resourceKey = options.resourceKey || this.options.resourceKey; + const { resourceName } = this.options; + const url = `/api/${resourceName}:${resourceKey ? `update/${resourceKey}` : 'create'}`; + return request(url, { + method: 'post', + data: values, + }); + } + + static make(options: string | Resource | ResourceOptions) { + if (typeof options === 'string') { + return new Resource({ resourceName: options }); + } + if (options instanceof Resource) { + return options; + } + if (typeof options === 'object' && options.resourceName) { + return new Resource(options); + } + throw 'resource 参数错误'; + } +} diff --git a/packages/client/src/state.ts b/packages/client/src/state.ts new file mode 100644 index 000000000..ddb29eb64 --- /dev/null +++ b/packages/client/src/state.ts @@ -0,0 +1,68 @@ +import { createGlobalState } from 'react-hooks-global-state'; +import { useRequest } from 'ahooks'; +import request from 'umi-request'; + +const initialState = { + actions: {}, +}; + +type GlobalActionNames = 'routes:getAccessible' | 'routes:getMenu' | 'users:check'; + +const { setGlobalState, useGlobalState } = createGlobalState(initialState); + +export { setGlobalState, useGlobalState } + +export function setGlobalActionState(actionName: GlobalActionNames, data) { + setGlobalState('actions', (actions) => ({ + ...actions, + [actionName]: data, + })); +} + +export function useGlobalAction(actionName: GlobalActionNames, options: any = {}) { + const result = useAction(actionName, { + onSuccess(data) { + setGlobalActionState(actionName, data); + }, + ...options, + }); + return result; +} + +export async function refreshGlobalAction(actionName: GlobalActionNames) { + const { data } = await doAction(actionName); + setGlobalActionState(actionName, data); +} + +export function useAction(actionName, options: any = {}) { + let params = actionName; + if (typeof actionName === 'string') { + params = { url: `/api/${actionName}` }; + } + return useRequest(params, { + formatResult: result => result?.data, + // requestMethod(service) { + // if (typeof service === 'string') { + // return request(service,); + // } + // if (typeof service === 'object') { + // const { url, ...rest } = service; + // return request(url, rest); + // } + // throw new Error('request options error'); + // }, + ...options, + }); +} + +export async function doAction(actionName: any, options?: any) { + const res = await request(`/api/${actionName}`, options); + return res.data; +} + +export function usePage(name: string, options?: any) { + return useAction('routes:getPage', { + refreshDeps: [name], + ...options, + }); +} \ No newline at end of file diff --git a/packages/client/src/templates/admin-layout/index.md b/packages/client/src/templates/admin-layout/index.md new file mode 100644 index 000000000..5950737e7 --- /dev/null +++ b/packages/client/src/templates/admin-layout/index.md @@ -0,0 +1,13 @@ +--- +title: AdminLayout - 后台布局 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Templates + path: /client/templates +--- + +# AdminLayout - 后台布局 + diff --git a/packages/client/src/templates/admin-layout/index.tsx b/packages/client/src/templates/admin-layout/index.tsx new file mode 100644 index 000000000..9877eea1b --- /dev/null +++ b/packages/client/src/templates/admin-layout/index.tsx @@ -0,0 +1,73 @@ +import React, { useContext } from 'react'; +import { Button, Spin } from 'antd'; +import isEmpty from 'lodash/isEmpty'; +import { + Link, + useLocation, + useRouteMatch, + useHistory, + Redirect, +} from 'react-router-dom'; +import { + useGlobalAction, + refreshGlobalAction, + RouteComponentContext, +} from '../../'; + +function LogoutButton() { + const history = useHistory(); + return ( + + ); +} + +function Menu() { + const { data = [], loading } = useGlobalAction('routes:getMenu'); + if (loading) { + return ; + } + console.log('menu', data); + return ( +
    + {data.map((item, index) => ( +
  • + {item.title} +
  • + ))} +
+ ); +} + +export function AdminLayout({ route, children }: any) { + const location = useLocation(); + const { PageTemplate } = useContext(RouteComponentContext); + // const history = useHistory(); + const match = useRouteMatch(route.path); + const { data = {}, loading } = useGlobalAction('users:check'); + if (isEmpty(data) || loading) { + return ; + } + if (!data.token) { + return ; + } + const name = match?.params?.name; + return ( +
+

Admin - {data.username}

+ + +

{route.title}

+ {/* {children} */} + {PageTemplate && } +
+ ); +} + +export default AdminLayout; diff --git a/packages/client/src/templates/auth-layout/index.md b/packages/client/src/templates/auth-layout/index.md new file mode 100644 index 000000000..9b9c499e3 --- /dev/null +++ b/packages/client/src/templates/auth-layout/index.md @@ -0,0 +1,10 @@ +--- +title: AuthLayout - 登录布局 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Templates + path: /client/templates +--- diff --git a/packages/client/src/templates/auth-layout/index.tsx b/packages/client/src/templates/auth-layout/index.tsx new file mode 100644 index 000000000..5f1928c90 --- /dev/null +++ b/packages/client/src/templates/auth-layout/index.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { Button } from 'antd'; +import { Link, useLocation, useHistory } from 'react-router-dom'; +import { refreshGlobalAction } from '../../'; + +export function AuthLayout({ children, route }: any) { + const location = useLocation(); + const history = useHistory(); + return ( +
+

Auth

+ + {children} +
+ ); +} + +export default AuthLayout; diff --git a/packages/client/src/templates/index.tsx b/packages/client/src/templates/index.tsx new file mode 100644 index 000000000..c7cc35465 --- /dev/null +++ b/packages/client/src/templates/index.tsx @@ -0,0 +1,3 @@ +export * from './auth-layout'; +export * from './admin-layout'; +export * from './page-template'; \ No newline at end of file diff --git a/packages/client/src/templates/page-template/index.md b/packages/client/src/templates/page-template/index.md new file mode 100644 index 000000000..8df3d8154 --- /dev/null +++ b/packages/client/src/templates/page-template/index.md @@ -0,0 +1,13 @@ +--- +title: PageTemplate - 页面模板 +nav: + title: 组件 + path: /client +group: + order: 2 + title: Templates + path: /client/templates +--- + +# PageTemplate - 页面模板 + diff --git a/packages/client/src/templates/page-template/index.tsx b/packages/client/src/templates/page-template/index.tsx new file mode 100644 index 000000000..258454e60 --- /dev/null +++ b/packages/client/src/templates/page-template/index.tsx @@ -0,0 +1,27 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { Spin } from 'antd'; +import { Helmet } from 'react-helmet'; +import { usePage, BlockContext } from '../../'; + +export function PageTemplate({ route }) { + const { GridBlock } = useContext(BlockContext); + const [preName, setPreName] = useState(route.name); + useEffect(() => { + setPreName(route.name); + }, [route.name]); + const { data = {}, loading } = usePage(route.name); + if (loading || preName !== route.name) { + return ; + } + console.log(data.title, { preName, blocks: data.blocks }); + return ( +
+ + {data.title} + + {GridBlock && } +
+ ); +} + +export default PageTemplate; diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index 261d2d650..01a2a6737 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -1,21 +1,7 @@ { + "extends": "../../tsconfig.json", "compilerOptions": { - "lib": [ "es5", "es6" ], - "module": "commonjs", - "target": "es6", - "moduleResolution": "node", - "importHelpers": true, - "jsx": "react", - "esModuleInterop": true, - "sourceMap": true, - "baseUrl": "./", - "strict": true, - "declaration": true, - "paths": { - }, - "allowSyntheticDefaultImports": true - }, - "exclude": [ - "node_modules" - ] + "outDir": "./lib", + "target": "ES5" + } } \ No newline at end of file diff --git a/packages/create-nocobase-app/.local b/packages/create-nocobase-app/.local deleted file mode 100755 index edbafef81..000000000 --- a/packages/create-nocobase-app/.local +++ /dev/null @@ -1 +0,0 @@ -Used in bin/create-nocobase-app.js to determine if it is in the local debug state. diff --git a/packages/create-nocobase-app/README.md b/packages/create-nocobase-app/README.md deleted file mode 100755 index 449b5843f..000000000 --- a/packages/create-nocobase-app/README.md +++ /dev/null @@ -1 +0,0 @@ -# @nocobase/create-nocobase-app diff --git a/packages/create-nocobase-app/bin/create-nocobase-app.js b/packages/create-nocobase-app/bin/create-nocobase-app.js deleted file mode 100755 index d2316ff6d..000000000 --- a/packages/create-nocobase-app/bin/create-nocobase-app.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('../lib/cli'); diff --git a/packages/create-nocobase-app/package.json b/packages/create-nocobase-app/package.json deleted file mode 100755 index 72c79f959..000000000 --- a/packages/create-nocobase-app/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "create-nocobase-app", - "version": "0.4.0-alpha.7", - "description": "create-nocobase-app", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "license": "MIT", - "private": true, - "scripts": {}, - "dependencies": { - "@umijs/utils": "3.2.23" - }, - "bin": { - "create-nocobase-app": "bin/create-nocobase-app.js" - } -} diff --git a/packages/create-nocobase-app/src/AppGenerator/AppGenerator.ts b/packages/create-nocobase-app/src/AppGenerator/AppGenerator.ts deleted file mode 100755 index cd5a854c3..000000000 --- a/packages/create-nocobase-app/src/AppGenerator/AppGenerator.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Generator } from '@umijs/utils'; -import { join } from 'path'; - -export default class AppGenerator extends Generator { - async writing() { - this.copyDirectory({ - context: { - version: require('../../package').version, - conventionRoutes: this.args.conventionRoutes, - }, - path: join(__dirname, '../../templates/AppGenerator'), - target: this.cwd, - }); - } -} diff --git a/packages/create-nocobase-app/src/cli.ts b/packages/create-nocobase-app/src/cli.ts deleted file mode 100755 index c4b3d372c..000000000 --- a/packages/create-nocobase-app/src/cli.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { chalk, yParser } from '@umijs/utils'; -import { existsSync } from 'fs'; -import { join } from 'path'; - -const args = yParser(process.argv.slice(2), { - alias: { - version: ['v'], - help: ['h'], - }, - boolean: ['version'], -}); - -if (args.version && !args._[0]) { - args._[0] = 'version'; - const local = existsSync(join(__dirname, '../.local')) - ? chalk.cyan('@local') - : ''; - const { name, version } = require('../package.json'); - console.log(`${name}@${version}${local}`); -} else { - require('./') - .default({ - cwd: process.cwd(), - args, - }) - .catch((err: Error) => { - console.error(`Create failed, ${err.message}`); - console.error(err); - }); -} diff --git a/packages/create-nocobase-app/src/index.test.ts b/packages/create-nocobase-app/src/index.test.ts deleted file mode 100755 index 2afcb8ba4..000000000 --- a/packages/create-nocobase-app/src/index.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { join } from 'path'; -import { rimraf } from '@umijs/utils'; -import { existsSync } from 'fs'; -import runGenerator from './index'; - -const fixtures = join(__dirname, 'fixtures'); -const cwd = join(fixtures, 'generate'); - -test('generate app', async () => { - await runGenerator({ - cwd, - args: { - _: [], - $0: '', - }, - }); - expect(existsSync(join(cwd, 'src', 'pages', 'index.tsx'))).toEqual(true); - rimraf.sync(cwd); -}); diff --git a/packages/create-nocobase-app/src/index.ts b/packages/create-nocobase-app/src/index.ts deleted file mode 100755 index e79f1f6a5..000000000 --- a/packages/create-nocobase-app/src/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { yargs } from '@umijs/utils'; -import AppGenerator from './AppGenerator/AppGenerator'; - -export default async ({ - cwd, - args, -}: { - cwd: string; - args: yargs.Arguments; -}) => { - const generator = new AppGenerator({ - cwd, - args, - }); - await generator.run(); -}; diff --git a/packages/create-nocobase-app/templates/AppGenerator/.editorconfig b/packages/create-nocobase-app/templates/AppGenerator/.editorconfig deleted file mode 100755 index 7e3649acc..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false - -[Makefile] -indent_style = tab diff --git a/packages/create-nocobase-app/templates/AppGenerator/.env b/packages/create-nocobase-app/templates/AppGenerator/.env deleted file mode 100644 index 6bc6efc8b..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.env +++ /dev/null @@ -1,14 +0,0 @@ -API_PORT=23000 - -DB_DATABASE=test -DB_USER=test -DB_PASSWORD=test -# DB_HOST=mysql -# DB_PORT=3306 -# DB_DIALECT=mysql - -DB_HOST=postgres -DB_PORT=5432 -DB_DIALECT=postgres -# DB_PORT=25432 -# DB_HOST=localhost diff --git a/packages/create-nocobase-app/templates/AppGenerator/.fatherrc.ts b/packages/create-nocobase-app/templates/AppGenerator/.fatherrc.ts deleted file mode 100755 index 491de68f6..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.fatherrc.ts +++ /dev/null @@ -1,10 +0,0 @@ -export default { - entry: 'src/api', - target: 'node', - cjs: { type: 'babel', lazy: true }, - include: 'api/*', - disableTypeCheck: true, - // pkgs: [ - // 'api', - // ], -}; diff --git a/packages/create-nocobase-app/templates/AppGenerator/.gitignore.tpl b/packages/create-nocobase-app/templates/AppGenerator/.gitignore.tpl deleted file mode 100755 index bee1cf61c..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.gitignore.tpl +++ /dev/null @@ -1,20 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/npm-debug.log* -/yarn-error.log -/yarn.lock -/package-lock.json - -# production -/dist - -# misc -.DS_Store - -# umi -/src/.umi -/src/.umi-production -/src/.umi-test -/.env.local diff --git a/packages/create-nocobase-app/templates/AppGenerator/.prettierignore b/packages/create-nocobase-app/templates/AppGenerator/.prettierignore deleted file mode 100755 index 0d4222f54..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ -**/*.md -**/*.svg -**/*.ejs -**/*.html -package.json -.umi -.umi-production -.umi-test diff --git a/packages/create-nocobase-app/templates/AppGenerator/.prettierrc b/packages/create-nocobase-app/templates/AppGenerator/.prettierrc deleted file mode 100755 index 94beb1484..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all", - "printWidth": 80, - "overrides": [ - { - "files": ".prettierrc", - "options": { "parser": "json" } - } - ] -} diff --git a/packages/create-nocobase-app/templates/AppGenerator/.umirc.ts.tpl b/packages/create-nocobase-app/templates/AppGenerator/.umirc.ts.tpl deleted file mode 100755 index 226c48b20..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/.umirc.ts.tpl +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'umi'; - -export default defineConfig({ - nodeModulesTransform: { - type: 'none', - }, -{{ ^conventionRoutes }} - routes: [ - { path: '/', component: '@/pages/index' }, - ], -{{ /conventionRoutes }} -}); diff --git a/packages/create-nocobase-app/templates/AppGenerator/README.md b/packages/create-nocobase-app/templates/AppGenerator/README.md deleted file mode 100755 index e521300a0..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# NocoBase Application - -## Getting Started - -Install dependencies, - -```bash -$ yarn install -``` - -Start the dev server, - -```bash -$ yarn start -``` diff --git a/packages/create-nocobase-app/templates/AppGenerator/nodemon.json b/packages/create-nocobase-app/templates/AppGenerator/nodemon.json deleted file mode 100644 index 36d1db809..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/nodemon.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "watch": ["src/api", ".env"], - "ext": "ts", - "exec": "ts-node ./src/api/index.ts" -} \ No newline at end of file diff --git a/packages/create-nocobase-app/templates/AppGenerator/package.json.tpl b/packages/create-nocobase-app/templates/AppGenerator/package.json.tpl deleted file mode 100755 index 3af91e0a6..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/package.json.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{ - "private": true, - "scripts": { - "start": "concurrently \"nodemon\" \"umi dev\"", - "build": "father-build && umi build", - "postinstall": "umi generate tmp", - "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", - "test": "umi-test", - "test:coverage": "umi-test --coverage" - }, - "gitHooks": { - "pre-commit": "lint-staged" - }, - "lint-staged": { - "*.{js,jsx,less,md,json}": [ - "prettier --write" - ], - "*.ts?(x)": [ - "prettier --parser=typescript --write" - ] - }, - "dependencies": { - "@ant-design/pro-layout": "^5.0.12", - "@umijs/preset-react": "1.x", - "@umijs/test": "^3.2.23", - "@nocobase/server": "^{{{ version }}}", - "@nocobase/client": "^{{{ version }}}", - "@nocobase/father-build": "^{{{ version }}}", - "@nocobase/plugin-collections": "^{{{ version }}}", - "concurrently": "^5.3.0", - "lint-staged": "^10.0.7", - "nodemon": "^2.0.6", - "prettier": "^1.19.1", - "react": "^16.12.0", - "react-dom": "^16.12.0", - "umi": "^3.2.23", - "yorkie": "^2.0.0" - } -} diff --git a/packages/create-nocobase-app/templates/AppGenerator/server.js b/packages/create-nocobase-app/templates/AppGenerator/server.js deleted file mode 100644 index 549072ca8..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/server.js +++ /dev/null @@ -1,7 +0,0 @@ -const api = require('@nocobase/api'); - -require('dotenv').config(); - -api.listen(23000, () => { - console.log('http://localhost:23000/'); -}); diff --git a/packages/create-nocobase-app/templates/AppGenerator/src/api/index.ts b/packages/create-nocobase-app/templates/AppGenerator/src/api/index.ts deleted file mode 100644 index f0babd358..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/src/api/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -import Api from '@nocobase/server'; -import dotenv from 'dotenv'; - -const sync = { - force: true, - alter: { - drop: true, - }, -}; - -dotenv.config(); - -const api = Api.create({ - database: { - username: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_DATABASE, - host: process.platform === 'linux' ? process.env.DB_HOST : 'localhost', - port: process.platform === 'linux' ? process.env.DB_PORT : ( process.env.DB_DIALECT == 'postgres' ? 25432 : 23306 ), - dialect: process.env.DB_DIALECT as any, - dialectOptions: { - charset: 'utf8mb4', - collate: 'utf8mb4_unicode_ci', - }, - // logging: false, - define: {}, - sync, - }, - resourcer: { - prefix: '/api', - }, -}); - -api - .plugins([ - [require('@nocobase/plugin-collections').default, {}], - ]) - .then(() => { - api.listen(23001, () => { - console.log('http://localhost:23001/'); - }); - }); diff --git a/packages/create-nocobase-app/templates/AppGenerator/src/pages/index.tsx b/packages/create-nocobase-app/templates/AppGenerator/src/pages/index.tsx deleted file mode 100755 index 9171ffc40..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/src/pages/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import styles from './index.less'; - -export default () => { - return ( -
-

Page index

-
- ); -} diff --git a/packages/create-nocobase-app/templates/AppGenerator/tsconfig.json b/packages/create-nocobase-app/templates/AppGenerator/tsconfig.json deleted file mode 100755 index 9c54bd969..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "lib": [ "es5", "es6" ], - "module": "commonjs", - "target": "es6", - "moduleResolution": "node", - "importHelpers": true, - "jsx": "react", - "esModuleInterop": true, - "sourceMap": true, - "baseUrl": "./", - "strict": true, - "paths": { - "@/*": ["src/*"], - "@@/*": ["src/.umi/*"] - }, - "allowSyntheticDefaultImports": true - }, - "include": [ - "mock/**/*", - "src/**/*", - "config/**/*", - ".umirc.ts", - "typings.d.ts" - ] -} diff --git a/packages/create-nocobase-app/templates/AppGenerator/typings.d.ts b/packages/create-nocobase-app/templates/AppGenerator/typings.d.ts deleted file mode 100755 index 5df84ee02..000000000 --- a/packages/create-nocobase-app/templates/AppGenerator/typings.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -declare module '*.css'; -declare module '*.less'; -declare module "*.png"; -declare module '*.svg' { - export function ReactComponent(props: React.SVGProps): React.ReactElement - const url: string - export default url -} diff --git a/packages/create-nocobase-app/tsconfig.json b/packages/create-nocobase-app/tsconfig.json deleted file mode 100644 index 0843093a6..000000000 --- a/packages/create-nocobase-app/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "lib": [ "es5", "es6" ], - "module": "commonjs", - "target": "es6", - "allowJs": true, - "declaration": false, - "resolveJsonModule": true, - "esModuleInterop": true, - "sourceMap": false, - "baseUrl": "./", - "paths": { - } - }, - "exclude": [ - "node_modules" - ] -} \ No newline at end of file diff --git a/packages/father-build/.local b/packages/father-build/.local new file mode 100755 index 000000000..9cbae257c --- /dev/null +++ b/packages/father-build/.local @@ -0,0 +1 @@ +Used in bin/father.js to determine if it is in the local debug state. diff --git a/packages/father-build/.npmignore b/packages/father-build/.npmignore new file mode 100755 index 000000000..75230a7a6 --- /dev/null +++ b/packages/father-build/.npmignore @@ -0,0 +1,4 @@ +/src/fixtures +/src/**/*.test.ts +/lib/**/*.test.js +/.local diff --git a/packages/father-build/README.md b/packages/father-build/README.md new file mode 100755 index 000000000..181a2fceb --- /dev/null +++ b/packages/father-build/README.md @@ -0,0 +1,4 @@ +# father-build + +See our [main repo](https://github.com/umijs/father) for more information. + diff --git a/packages/father-build/bin/father-build.js b/packages/father-build/bin/father-build.js new file mode 100755 index 000000000..f201b7350 --- /dev/null +++ b/packages/father-build/bin/father-build.js @@ -0,0 +1,61 @@ +#!/usr/bin/env node + +const { existsSync } = require('fs'); +const { join } = require('path'); +const yParser = require('yargs-parser'); +const chalk = require('chalk'); +const signale = require('signale'); + +// print version and @local +const args = yParser(process.argv.slice(2)); +if (args.v || args.version) { + console.log(require('../package').version); + if (existsSync(join(__dirname, '../.local'))) { + console.log(chalk.cyan('@local')); + } + process.exit(0); +} + +// Notify update when process exits +const updater = require('update-notifier'); +const pkg = require('../package.json'); +updater({ pkg }).notify({ defer: true }); + +function stripEmptyKeys(obj) { + Object.keys(obj).forEach((key) => { + if (!obj[key] || (Array.isArray(obj[key]) && !obj[key].length)) { + delete obj[key]; + } + }); + return obj; +} + +function build() { + // Parse buildArgs from cli + const buildArgs = stripEmptyKeys({ + esm: args.esm && { type: args.esm === true ? 'rollup' : args.esm }, + cjs: args.cjs && { type: args.cjs === true ? 'rollup' : args.cjs }, + umd: args.umd && { name: args.umd === true ? undefined : args.umd }, + file: args.file, + target: args.target, + entry: args._, + }); + + if (buildArgs.file && buildArgs.entry && buildArgs.entry.length > 1) { + signale.error(new Error( + `Cannot specify file when have multiple entries (${buildArgs.entry.join(', ')})` + )); + process.exit(1); + } + + require('../lib/build').default({ + cwd: args.root || process.cwd(), + watch: args.w || args.watch, + buildArgs, + }).catch(e => { + signale.error(e); + process.exit(1); + }); +} + +build(); diff --git a/packages/father-build/package.json b/packages/father-build/package.json new file mode 100755 index 000000000..0e2e59789 --- /dev/null +++ b/packages/father-build/package.json @@ -0,0 +1,82 @@ +{ + "name": "father-build", + "version": "1.19.4", + "description": "Library build tool based on rollup.", + "main": "lib/index.js", + "bin": { + "father-build": "./bin/father-build.js" + }, + "typings": "./index.d.ts", + "scripts": { + "build": "umi-tools build" + }, + "dependencies": { + "@babel/core": "7.12.3", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-decorators": "7.12.1", + "@babel/plugin-proposal-do-expressions": "7.12.1", + "@babel/plugin-proposal-export-default-from": "7.12.1", + "@babel/plugin-proposal-export-namespace-from": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@babel/preset-typescript": "7.12.1", + "@babel/register": "7.12.1", + "@lerna/project": "^3.21.0", + "@rollup/plugin-babel": "5.2.1", + "@rollup/plugin-commonjs": "16.0.0", + "@rollup/plugin-inject": "4.0.2", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "10.0.0", + "@rollup/plugin-replace": "2.3.4", + "@rollup/plugin-url": "5.0.1", + "@svgr/rollup": "5.4.0", + "ajv": "6.10.0", + "autoprefixer": "9.6.0", + "babel-plugin-istanbul": "^5.2.0", + "babel-plugin-react-require": "3.1.1", + "chalk": "2.4.2", + "chokidar": "^3.0.2", + "glob": "^7.1.4", + "gulp-if": "2.0.2", + "gulp-less": "^4.0.1", + "gulp-plumber": "^1.2.1", + "gulp-typescript": "5.0.1", + "gulp-sourcemaps": "2.6.5", + "less": "3.9.0", + "less-plugin-npm-import": "2.1.0", + "lodash": "4.17.19", + "rimraf": "2.6.3", + "rollup": "2.33.3", + "rollup-plugin-postcss": "3.1.8", + "rollup-plugin-terser": "7.0.2", + "rollup-plugin-typescript2": "0.29.0", + "signale": "1.4.0", + "slash2": "2.0.0", + "temp-dir": "2.0.0", + "through2": "3.0.1", + "ts-loader": "^8.0.7", + "typescript": "4.1.5", + "update-notifier": "3.0.0", + "vinyl-fs": "3.0.3", + "yargs-parser": "13.1.2" + }, + "repository": { + "type": "git", + "url": "http://github.com/umijs/father" + }, + "homepage": "http://github.com/umijs/father", + "bugs": "http://github.com/umijs/father/issues", + "authors": [ + "chencheng (https://github.com/sorrycc)" + ], + "license": "MIT", + "devDependencies": { + "@types/gulp-plumber": "^0.0.32", + "umi-tools": "^0.4.0" + } +} diff --git a/packages/father-build/src/babel.ts b/packages/father-build/src/babel.ts new file mode 100755 index 000000000..f932c7934 --- /dev/null +++ b/packages/father-build/src/babel.ts @@ -0,0 +1,257 @@ +import { join, extname, relative } from "path"; +import { existsSync, readFileSync, statSync } from "fs"; +import vfs from "vinyl-fs"; +import signale from "signale"; +import { debounce, merge } from "lodash"; +import rimraf from "rimraf"; +import through from "through2"; +import slash from "slash2"; +import * as chokidar from "chokidar"; +import * as babel from "@babel/core"; +import gulpTs from "gulp-typescript"; +import gulpLess from "gulp-less"; +import gulpPlumber from 'gulp-plumber'; +import gulpIf from "gulp-if"; +import chalk from "chalk"; +import getBabelConfig from "./getBabelConfig"; +import { Dispose, IBundleOptions } from "./types"; +import * as ts from "typescript"; +import sourcemaps from 'gulp-sourcemaps'; + +interface IBabelOpts { + cwd: string; + rootPath?: string; + type: "esm" | "cjs"; + target?: "browser" | "node"; + log?: (string) => void; + watch?: boolean; + dispose?: Dispose[]; + importLibToEs?: boolean; + bundleOpts: IBundleOptions; +} + +interface ITransformOpts { + file: { + contents: string; + path: string; + }; + type: "esm" | "cjs"; +} + +export default async function(opts: IBabelOpts) { + const { + cwd, + rootPath, + type, + watch, + dispose, + importLibToEs, + log, + bundleOpts: { + target = "browser", + runtimeHelpers, + extraBabelPresets = [], + extraBabelPlugins = [], + browserFiles = [], + nodeFiles = [], + nodeVersion, + disableTypeCheck, + cjs, + lessInBabelMode + } + } = opts; + const srcPath = join(cwd, "src"); + const targetDir = type === "esm" ? "es" : "lib"; + const targetPath = join(cwd, targetDir); + + log(chalk.gray(`Clean ${targetDir} directory`)); + rimraf.sync(targetPath); + + function transform(opts: ITransformOpts) { + const { file, type } = opts; + const { opts: babelOpts, isBrowser } = getBabelConfig({ + target, + type, + typescript: true, + runtimeHelpers, + filePath: slash(relative(cwd, file.path)), + browserFiles, + nodeFiles, + nodeVersion, + // @ts-ignore + lazy: cjs && cjs.lazy, + lessInBabelMode + }); + if (importLibToEs && type === "esm") { + babelOpts.plugins.push(require.resolve("../lib/importLibToEs")); + } + babelOpts.presets.push(...extraBabelPresets); + babelOpts.plugins.push(...extraBabelPlugins); + + const relFile = slash(file.path).replace(`${cwd}/`, ""); + log( + `Transform to ${type} for ${chalk[isBrowser ? "yellow" : "blue"]( + relFile + )}` + ); + + return babel.transform(file.contents, { + ...babelOpts, + sourceMaps: true, + filename: file.path, + // 不读取外部的babel.config.js配置文件,全采用babelOpts中的babel配置来构建 + configFile: false, + }).code; + } + + /** + * tsconfig.json is not valid json file + * https://github.com/Microsoft/TypeScript/issues/20384 + */ + function parseTsconfig(path: string) { + + const readFile = (path: string) => readFileSync(path, "utf-8"); + const result = ts.readConfigFile(path, readFile); + if (result.error) { + return; + } + return result.config; + } + + function getTsconfigCompilerOptions(path: string) { + const config = parseTsconfig(path); + + if (config && config.extends) { + const exts = parseTsconfig(join(cwd, config.extends)); + const compilerOptions = exts ? exts.compilerOptions : {}; + return merge(compilerOptions, config.compilerOptions || {}); + } + + return config ? config.compilerOptions : undefined; + } + + function getTSConfig() { + + const tsconfigPath = join(cwd, "tsconfig.json"); + const templateTsconfigPath = join(__dirname, "../template/tsconfig.json"); + + if (existsSync(tsconfigPath)) { + return getTsconfigCompilerOptions(tsconfigPath) || {}; + } + if (rootPath && existsSync(join(rootPath, "tsconfig.json"))) { + return getTsconfigCompilerOptions(join(rootPath, "tsconfig.json")) || {}; + } + return getTsconfigCompilerOptions(templateTsconfigPath) || {}; + } + + function createStream(src) { + const tsConfig = getTSConfig(); + const babelTransformRegexp = disableTypeCheck ? /\.(t|j)sx?$/ : /\.jsx?$/; + + function isTsFile(path) { + return /\.tsx?$/.test(path) && !path.endsWith(".d.ts"); + } + + function isTransform(path) { + return babelTransformRegexp.test(path) && !path.endsWith(".d.ts"); + } + + return vfs + .src(src, { + allowEmpty: true, + base: srcPath + }) + .pipe( + gulpIf(tsConfig.sourceMap, sourcemaps.init()) + ) + .pipe(watch ? gulpPlumber() : through.obj()) + .pipe( + gulpIf(f => !disableTypeCheck && isTsFile(f.path), gulpTs(tsConfig)) + ) + .pipe( + gulpIf( + f => lessInBabelMode && /\.less$/.test(f.path), + gulpLess(lessInBabelMode || {}) + ) + ) + .pipe( + gulpIf( + f => isTransform(f.path), + through.obj((file, env, cb) => { + try { + file.contents = Buffer.from( + transform({ + file, + type + }) + ); + // .jsx -> .js + file.path = file.path.replace(extname(file.path), ".js"); + cb(null, file); + } catch (e) { + signale.error(`Compiled faild: ${file.path}`); + console.log(e); + cb(null); + } + }) + ) + ) + .pipe( + gulpIf(tsConfig.sourceMap, sourcemaps.write('.')) + ) + .pipe(vfs.dest(targetPath)); + } + + return new Promise(resolve => { + const patterns = [ + join(srcPath, "**/*"), + `!${join(srcPath, "**/fixtures{,/**}")}`, + `!${join(srcPath, "**/demos{,/**}")}`, + `!${join(srcPath, "**/__test__{,/**}")}`, + `!${join(srcPath, "**/__tests__{,/**}")}`, + `!${join(srcPath, "**/*.mdx")}`, + `!${join(srcPath, "**/*.md")}`, + `!${join(srcPath, "**/*.+(test|e2e|spec).+(js|jsx|ts|tsx)")}` + ]; + createStream(patterns).on("end", () => { + if (watch) { + log( + chalk.magenta( + `Start watching ${slash(srcPath).replace( + `${cwd}/`, + "" + )} directory...` + ) + ); + const watcher = chokidar.watch(patterns, { + ignoreInitial: true + }); + + const files = []; + function compileFiles() { + while (files.length) { + createStream(files.pop()); + } + } + + const debouncedCompileFiles = debounce(compileFiles, 1000); + watcher.on("all", (event, fullPath) => { + const relPath = fullPath.replace(srcPath, ""); + log( + `[${event}] ${slash(join(srcPath, relPath)).replace(`${cwd}/`, "")}` + ); + if (!existsSync(fullPath)) return; + if (statSync(fullPath).isFile()) { + if (!files.includes(fullPath)) files.push(fullPath); + debouncedCompileFiles(); + } + }); + process.once("SIGINT", () => { + watcher.close(); + }); + dispose?.push(() => watcher.close()); + } + resolve(null); + }); + }); +} diff --git a/packages/father-build/src/build.test.ts b/packages/father-build/src/build.test.ts new file mode 100755 index 000000000..254b28abf --- /dev/null +++ b/packages/father-build/src/build.test.ts @@ -0,0 +1,52 @@ +import { join, basename, sep } from 'path'; +import { getPackagesSync } from '@lerna/project'; +import { existsSync, readdirSync, renameSync, statSync } from 'fs'; +import mkdirp from 'mkdirp'; +import rimraf from 'rimraf'; +import build from './build'; + +function moveEsLibToDist(cwd) { + ['es', 'lib'].forEach(dir => { + const absDirPath = join(cwd, dir); + const absDistPath = join(cwd, 'dist'); + if (existsSync(absDirPath)) { + mkdirp.sync(absDistPath); + renameSync(absDirPath, join(absDistPath, dir)); + } + }); +} + +describe('father build', () => { + const rootConfigMapping = { + 'lerna-root-config-override': { cjs: 'rollup', esm: false }, + }; + + require('test-build-result')({ + root: join(__dirname, './fixtures/build'), + build({ cwd }) { + process.chdir(cwd); + rimraf.sync(join(cwd, 'dist')); + return build({ cwd, rootConfig: rootConfigMapping[basename(cwd)] }).then(() => { + // babel + moveEsLibToDist(cwd); + + // lerna + if (existsSync(join(cwd, 'lerna.json'))) { + mkdirp.sync(join(cwd, 'dist')); + const pkgs = getPackagesSync(cwd) + for (let pkg of pkgs) { + + const pkgPath = pkg.contents; + + if (!statSync(pkgPath).isDirectory()) continue; + moveEsLibToDist(pkgPath); + renameSync( + join(pkgPath, 'dist'), + join(cwd, 'dist', pkgPath.split(sep).pop()) + ); + } + } + }); + }, + }); +}); diff --git a/packages/father-build/src/build.ts b/packages/father-build/src/build.ts new file mode 100755 index 000000000..084bb9a14 --- /dev/null +++ b/packages/father-build/src/build.ts @@ -0,0 +1,242 @@ +import { existsSync, readFileSync } from 'fs'; +import { join } from 'path'; +import rimraf from 'rimraf'; +import * as assert from 'assert'; +import { merge } from 'lodash'; +import signale from 'signale'; +import chalk from 'chalk'; +import { getPackages } from '@lerna/project'; +import { IOpts, IBundleOptions, IBundleTypeOutput, ICjs, IEsm, Dispose } from './types'; +import babel from './babel'; +import rollup from './rollup'; +import registerBabel from './registerBabel'; +import { getExistFile } from './utils'; +import getUserConfig, { CONFIG_FILES } from './getUserConfig'; +import randomColor from "./randomColor"; + +export function getBundleOpts(opts: IOpts): IBundleOptions[] { + const { cwd, buildArgs = {}, rootConfig = {} } = opts; + const entry = getExistFile({ + cwd, + files: ['src/index.tsx', 'src/index.ts', 'src/index.jsx', 'src/index.js'], + returnRelative: true, + }); + const userConfig = getUserConfig({ cwd }); + const userConfigs = Array.isArray(userConfig) ? userConfig : [userConfig]; + return (userConfigs as any).map(userConfig => { + const bundleOpts = merge( + { + entry, + }, + rootConfig, + userConfig, + buildArgs, + ); + + // Support config esm: 'rollup' and cjs: 'rollup' + if (typeof bundleOpts.esm === 'string') { + bundleOpts.esm = { type: bundleOpts.esm }; + } + if (typeof bundleOpts.cjs === 'string') { + bundleOpts.cjs = { type: bundleOpts.cjs }; + } + + return bundleOpts; + }); +} + +function validateBundleOpts(bundleOpts: IBundleOptions, { cwd, rootPath }) { + if (bundleOpts.runtimeHelpers) { + const pkgPath = join(cwd, 'package.json'); + assert.ok(existsSync(pkgPath), `@babel/runtime dependency is required to use runtimeHelpers`); + const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')); + assert.ok( + (pkg.dependencies || {})['@babel/runtime'], + `@babel/runtime dependency is required to use runtimeHelpers`, + ); + } + if (bundleOpts.cjs && (bundleOpts.cjs as ICjs).lazy && (bundleOpts.cjs as ICjs).type === 'rollup') { + throw new Error(` +cjs.lazy don't support rollup. + `.trim()); + } + if (!bundleOpts.esm && !bundleOpts.cjs && !bundleOpts.umd) { + throw new Error( + ` +None format of ${chalk.cyan( + 'cjs | esm | umd', + )} is configured, checkout https://github.com/umijs/father for usage details. +`.trim(), + ); + } + if (bundleOpts.entry) { + const tsConfigPath = join(cwd, 'tsconfig.json'); + const tsConfig = existsSync(tsConfigPath) + || (rootPath && existsSync(join(rootPath, 'tsconfig.json'))); + if ( + !tsConfig && ( + (Array.isArray(bundleOpts.entry) && bundleOpts.entry.some(isTypescriptFile)) || + (!Array.isArray(bundleOpts.entry) && isTypescriptFile(bundleOpts.entry)) + ) + ) { + signale.info( + `Project using ${chalk.cyan('typescript')} but tsconfig.json not exists. Use default config.` + ); + } + } +} + +function isTypescriptFile(filePath) { + return filePath.endsWith('.ts') || filePath.endsWith('.tsx') +} + +interface IExtraBuildOpts { + pkg?: string | { name?: string }; +} + +export async function build(opts: IOpts, extraOpts: IExtraBuildOpts = {}) { + const { cwd, rootPath, watch } = opts; + const { pkg } = extraOpts; + + const dispose: Dispose[] = []; + + // register babel for config files + registerBabel({ + cwd, + only: CONFIG_FILES, + }); + + const pkgName = (typeof pkg === 'string' ? pkg : pkg?.name) || 'unknown'; + + function log(msg) { + console.log(`${pkg ? `${randomColor(`${pkgName}`)}: ` : ''}${msg}`); + } + + // Get user config + const bundleOptsArray = getBundleOpts(opts); + + for (const bundleOpts of bundleOptsArray) { + validateBundleOpts(bundleOpts, { cwd, rootPath }); + + // Clean dist + log(chalk.gray(`Clean dist directory`)); + rimraf.sync(join(cwd, 'dist')); + + // Build umd + if (bundleOpts.umd) { + log(`Build umd`); + await rollup({ + cwd, + rootPath, + log, + type: 'umd', + entry: bundleOpts.entry, + watch, + dispose, + bundleOpts, + }); + } + + // Build cjs + if (bundleOpts.cjs) { + const cjs = bundleOpts.cjs as IBundleTypeOutput; + log(`Build cjs with ${cjs.type}`); + if (cjs.type === 'babel') { + await babel({ cwd, rootPath, watch, dispose, type: 'cjs', log, bundleOpts }); + } else { + await rollup({ + cwd, + rootPath, + log, + type: 'cjs', + entry: bundleOpts.entry, + watch, + dispose, + bundleOpts, + }); + } + } + + // Build esm + if (bundleOpts.esm) { + const esm = bundleOpts.esm as IEsm; + log(`Build esm with ${esm.type}`); + const importLibToEs = esm && esm.importLibToEs; + if (esm && esm.type === 'babel') { + await babel({ cwd, rootPath, watch, dispose, type: 'esm', importLibToEs, log, bundleOpts }); + } else { + await rollup({ + cwd, + rootPath, + log, + type: 'esm', + entry: bundleOpts.entry, + importLibToEs, + watch, + dispose, + bundleOpts, + }); + } + } + } + + return dispose; +} + +export async function buildForLerna(opts: IOpts) { + const { cwd } = opts; + + // register babel for config files + registerBabel({ + cwd, + only: CONFIG_FILES, + }); + + const userConfig = merge(getUserConfig({ cwd }), opts.rootConfig || {}); + + let pkgs = await getPackages(cwd); + + // support define pkgs in lerna + // TODO: 使用lerna包解决依赖编译问题 + if (userConfig.pkgs) { + pkgs = userConfig.pkgs + .map((item) => { + return pkgs.find(pkg => pkg.contents.endsWith(item)) + }) + .filter(Boolean); + } + + const dispose: Dispose[] = []; + for (const pkg of pkgs) { + if (process.env.PACKAGE && pkg !== process.env.PACKAGE) continue; + // build error when .DS_Store includes in packages root + const pkgPath = pkg.contents; + assert.ok( + existsSync(join(pkgPath, 'package.json')), + `package.json not found in packages/${pkg}`, + ); + process.chdir(pkgPath); + dispose.push(...await build( + { + // eslint-disable-line + ...opts, + buildArgs: opts.buildArgs, + rootConfig: userConfig, + cwd: pkgPath, + rootPath: cwd, + }, + { + pkg, + }, + )); + } + return dispose; +} + +export default async function(opts: IOpts) { + const useLerna = existsSync(join(opts.cwd, 'lerna.json')); + const isLerna = useLerna && process.env.LERNA !== 'none'; + + const dispose = isLerna ? await buildForLerna(opts) : await build(opts); + return () => dispose.forEach(e => e()); +} diff --git a/packages/father-build/src/fixtures/build/babel-browser-files/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-browser-files/.fatherrc.js new file mode 100755 index 000000000..3cd11ad83 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-browser-files/.fatherrc.js @@ -0,0 +1,8 @@ + +export default { + esm: 'babel', + target: 'node', + browserFiles: [ + 'src/browser.js', + ], +} diff --git a/packages/father-build/src/fixtures/build/babel-browser-files/expected/es/browser.js b/packages/father-build/src/fixtures/build/babel-browser-files/expected/es/browser.js new file mode 100755 index 000000000..22dc0e15f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-browser-files/expected/es/browser.js @@ -0,0 +1 @@ +var b = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-browser-files/expected/es/node.js b/packages/father-build/src/fixtures/build/babel-browser-files/expected/es/node.js new file mode 100755 index 000000000..ed389c023 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-browser-files/expected/es/node.js @@ -0,0 +1 @@ +const a = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-browser-files/src/browser.js b/packages/father-build/src/fixtures/build/babel-browser-files/src/browser.js new file mode 100755 index 000000000..a3677a7e4 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-browser-files/src/browser.js @@ -0,0 +1,2 @@ + +const b = 'foo'; diff --git a/packages/father-build/src/fixtures/build/babel-browser-files/src/node.js b/packages/father-build/src/fixtures/build/babel-browser-files/src/node.js new file mode 100755 index 000000000..528eb6b5a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-browser-files/src/node.js @@ -0,0 +1,2 @@ + +const a = 'foo'; diff --git a/packages/client/.fatherrc.ts b/packages/father-build/src/fixtures/build/babel-cjs-lazy/.fatherrc.js old mode 100644 new mode 100755 similarity index 64% rename from packages/client/.fatherrc.ts rename to packages/father-build/src/fixtures/build/babel-cjs-lazy/.fatherrc.js index 86bce87c0..37192c105 --- a/packages/client/.fatherrc.ts +++ b/packages/father-build/src/fixtures/build/babel-cjs-lazy/.fatherrc.js @@ -1,5 +1,8 @@ + export default { target: 'node', cjs: { type: 'babel', lazy: true }, - disableTypeCheck: true, + browserFiles: [ + 'src/foo.js', + ], }; diff --git a/packages/father-build/src/fixtures/build/babel-cjs-lazy/src/foo.js b/packages/father-build/src/fixtures/build/babel-cjs-lazy/src/foo.js new file mode 100755 index 000000000..fafe4ba5f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-cjs-lazy/src/foo.js @@ -0,0 +1,3 @@ +import bar from 'bar'; + +bar(); diff --git a/packages/father-build/src/fixtures/build/babel-cjs-lazy/src/index.js b/packages/father-build/src/fixtures/build/babel-cjs-lazy/src/index.js new file mode 100755 index 000000000..fafe4ba5f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-cjs-lazy/src/index.js @@ -0,0 +1,3 @@ +import bar from 'bar'; + +bar(); diff --git a/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/.fatherrc.js new file mode 100755 index 000000000..b90b773fa --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/.fatherrc.js @@ -0,0 +1,10 @@ + +export default { + esm: { type: 'babel' }, + extraBabelPresets: [ + require.resolve('./preset'), + ], + extraBabelPlugins: [ + require.resolve('./p2'), + ], +}; diff --git a/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/expected/es/index.js new file mode 100755 index 000000000..dd712d79e --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/expected/es/index.js @@ -0,0 +1,2 @@ +console.log("p1", "p2", 1); +alert(2); \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/p1.js b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/p1.js new file mode 100755 index 000000000..a3a3e24e1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/p1.js @@ -0,0 +1,20 @@ + +module.exports = function ({ types: t }) { + function isConsoleLog(node) { + const { callee, callee: { object, property } } = node; + return t.isMemberExpression(callee) + && t.isIdentifier(object) && object.name === 'console' + && t.isIdentifier(property) && property.name === 'log'; + } + + return { + visitor: { + CallExpression(path, state) { + const { node, node: { callee, callee: { object, property } } } = path; + if (isConsoleLog(node)) { + node.arguments.unshift(t.stringLiteral('p1')); + } + }, + }, + }; +} diff --git a/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/p2.js b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/p2.js new file mode 100755 index 000000000..297ac66d1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/p2.js @@ -0,0 +1,20 @@ + +module.exports = function ({ types: t }) { + function isConsoleLog(node) { + const { callee, callee: { object, property } } = node; + return t.isMemberExpression(callee) + && t.isIdentifier(object) && object.name === 'console' + && t.isIdentifier(property) && property.name === 'log'; + } + + return { + visitor: { + CallExpression(path, state) { + const { node, node: { callee, callee: { object, property } } } = path; + if (isConsoleLog(node)) { + node.arguments.unshift(t.stringLiteral('p2')); + } + }, + }, + }; +} diff --git a/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/preset.js b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/preset.js new file mode 100755 index 000000000..07ccbb29c --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/preset.js @@ -0,0 +1,8 @@ + +module.exports = function () { + return { + plugins: [ + require.resolve('./p1'), + ], + }; +} diff --git a/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/src/index.js b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/src/index.js new file mode 100755 index 000000000..923799068 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-extra-babel-presets-and-plugins/src/index.js @@ -0,0 +1,3 @@ + +console.log(1); +alert(2); diff --git a/packages/father-build/src/fixtures/build/babel-importLibToEs/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-importLibToEs/.fatherrc.js new file mode 100755 index 000000000..f1ef9292b --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-importLibToEs/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel', importLibToEs: true }, +}; diff --git a/packages/father-build/src/fixtures/build/babel-importLibToEs/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-importLibToEs/expected/es/index.js new file mode 100755 index 000000000..d10ef2731 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-importLibToEs/expected/es/index.js @@ -0,0 +1,2 @@ +import foo from "foo/es/foo"; +console.log(foo()); \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-importLibToEs/src/index.js b/packages/father-build/src/fixtures/build/babel-importLibToEs/src/index.js new file mode 100755 index 000000000..a8105c428 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-importLibToEs/src/index.js @@ -0,0 +1,3 @@ +import foo from 'foo/lib/foo'; + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/.fatherrc.js new file mode 100755 index 000000000..ead5605aa --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, + lessInBabelMode: false, +}; diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/foo.js b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/foo.js new file mode 100755 index 000000000..85ffde227 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/foo.js @@ -0,0 +1,6 @@ + +import "./index.less"; +import "./foo.module.less"; +export default function () { + return 'foo'; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/foo.module.less b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/foo.module.less new file mode 100755 index 000000000..213d0676a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/foo.module.less @@ -0,0 +1,3 @@ +.foo { + color: green; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/index.less b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/index.less new file mode 100755 index 000000000..f151aa5e7 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/expected/es/index.less @@ -0,0 +1,6 @@ + +@link-color: green; + +.foo { + color: @link-color; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/foo.js b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/foo.js new file mode 100755 index 000000000..e1cab23ea --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/foo.js @@ -0,0 +1,6 @@ +import "./index.less"; +import "./foo.module.less"; + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/foo.module.less b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/foo.module.less new file mode 100755 index 000000000..213d0676a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/foo.module.less @@ -0,0 +1,3 @@ +.foo { + color: green; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/index.less b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/index.less new file mode 100755 index 000000000..f151aa5e7 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css-forbid/src/index.less @@ -0,0 +1,6 @@ + +@link-color: green; + +.foo { + color: @link-color; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-less-to-css/.fatherrc.js new file mode 100755 index 000000000..c2ed104b4 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, + lessInBabelMode: true, +}; diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/foo.js b/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/foo.js new file mode 100755 index 000000000..a70263317 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/foo.js @@ -0,0 +1,6 @@ + +import "./index.css"; +import "./foo.module.css"; +export default function () { + return 'foo'; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/foo.module.css b/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/foo.module.css new file mode 100755 index 000000000..213d0676a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/foo.module.css @@ -0,0 +1,3 @@ +.foo { + color: green; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/index.css b/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/index.css new file mode 100755 index 000000000..213d0676a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/expected/es/index.css @@ -0,0 +1,3 @@ +.foo { + color: green; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/src/foo.js b/packages/father-build/src/fixtures/build/babel-less-to-css/src/foo.js new file mode 100755 index 000000000..e1cab23ea --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/src/foo.js @@ -0,0 +1,6 @@ +import "./index.less"; +import "./foo.module.less"; + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/src/foo.module.less b/packages/father-build/src/fixtures/build/babel-less-to-css/src/foo.module.less new file mode 100755 index 000000000..213d0676a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/src/foo.module.less @@ -0,0 +1,3 @@ +.foo { + color: green; +} diff --git a/packages/father-build/src/fixtures/build/babel-less-to-css/src/index.less b/packages/father-build/src/fixtures/build/babel-less-to-css/src/index.less new file mode 100755 index 000000000..f151aa5e7 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-less-to-css/src/index.less @@ -0,0 +1,6 @@ + +@link-color: green; + +.foo { + color: @link-color; +} diff --git a/packages/father-build/src/fixtures/build/babel-node-files/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-node-files/.fatherrc.js new file mode 100755 index 000000000..ea494d59f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-files/.fatherrc.js @@ -0,0 +1,8 @@ + +export default { + esm: 'babel', + target: 'browser', + nodeFiles: [ + 'src/node.js', + ], +} diff --git a/packages/father-build/src/fixtures/build/babel-node-files/expected/es/browser.js b/packages/father-build/src/fixtures/build/babel-node-files/expected/es/browser.js new file mode 100755 index 000000000..22dc0e15f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-files/expected/es/browser.js @@ -0,0 +1 @@ +var b = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-node-files/expected/es/node.js b/packages/father-build/src/fixtures/build/babel-node-files/expected/es/node.js new file mode 100755 index 000000000..ed389c023 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-files/expected/es/node.js @@ -0,0 +1 @@ +const a = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-node-files/src/browser.js b/packages/father-build/src/fixtures/build/babel-node-files/src/browser.js new file mode 100755 index 000000000..a3677a7e4 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-files/src/browser.js @@ -0,0 +1,2 @@ + +const b = 'foo'; diff --git a/packages/father-build/src/fixtures/build/babel-node-files/src/node.js b/packages/father-build/src/fixtures/build/babel-node-files/src/node.js new file mode 100755 index 000000000..528eb6b5a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-files/src/node.js @@ -0,0 +1,2 @@ + +const a = 'foo'; diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/.fatherrc.js new file mode 100755 index 000000000..d59f32117 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + esm: 'babel', + target: 'node', +} diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/B.d.ts b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/B.d.ts new file mode 100755 index 000000000..2ef04fb23 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/B.d.ts @@ -0,0 +1 @@ +declare const b = "foo"; diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/B.js b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/B.js new file mode 100755 index 000000000..22dc0e15f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/B.js @@ -0,0 +1 @@ +var b = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/C.js b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/C.js new file mode 100755 index 000000000..22dc0e15f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/C.js @@ -0,0 +1 @@ +var b = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/node.js b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/node.js new file mode 100755 index 000000000..ed389c023 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/expected/es/node.js @@ -0,0 +1 @@ +const a = 'foo'; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/B.tsx b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/B.tsx new file mode 100755 index 000000000..a3677a7e4 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/B.tsx @@ -0,0 +1,2 @@ + +const b = 'foo'; diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/C.jsx b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/C.jsx new file mode 100755 index 000000000..a3677a7e4 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/C.jsx @@ -0,0 +1,2 @@ + +const b = 'foo'; diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/node.js b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/node.js new file mode 100755 index 000000000..528eb6b5a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/src/node.js @@ -0,0 +1,2 @@ + +const a = 'foo'; diff --git a/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/tsconfig.json b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/tsconfig.json new file mode 100755 index 000000000..6db6275c3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-node-tsx-jsx/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "esnext", + "moduleResolution": "node", + "jsx": "preserve", + "esModuleInterop": true, + "declaration": true + } +} diff --git a/packages/father-build/src/fixtures/build/babel-normal/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-normal/.fatherrc.js new file mode 100755 index 000000000..19390b36b --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, +}; diff --git a/packages/father-build/src/fixtures/build/babel-normal/expected/es/foo.js b/packages/father-build/src/fixtures/build/babel-normal/expected/es/foo.js new file mode 100755 index 000000000..29a891a23 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/expected/es/foo.js @@ -0,0 +1,3 @@ +export default function () { + return 'foo'; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-normal/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-normal/expected/es/index.js new file mode 100755 index 000000000..8b2cbd724 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/expected/es/index.js @@ -0,0 +1,3 @@ +import 'bar'; +import foo from './foo'; +console.log(foo()); \ No newline at end of file diff --git a/packages/create-nocobase-app/templates/AppGenerator/mock/.gitkeep b/packages/father-build/src/fixtures/build/babel-normal/expected/es/types.d.ts similarity index 100% rename from packages/create-nocobase-app/templates/AppGenerator/mock/.gitkeep rename to packages/father-build/src/fixtures/build/babel-normal/expected/es/types.d.ts diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/__test__/__snapshots__/index.test.js.snap b/packages/father-build/src/fixtures/build/babel-normal/src/__test__/__snapshots__/index.test.js.snap new file mode 100755 index 000000000..7c645e42f --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/__test__/__snapshots__/index.test.js.snap @@ -0,0 +1 @@ +export default {}; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/__test__/index.test.js b/packages/father-build/src/fixtures/build/babel-normal/src/__test__/index.test.js new file mode 100755 index 000000000..ff8b4c563 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/__test__/index.test.js @@ -0,0 +1 @@ +export default {}; diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/bar.md b/packages/father-build/src/fixtures/build/babel-normal/src/bar.md new file mode 100755 index 000000000..d93e603dc --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/bar.md @@ -0,0 +1 @@ +# bar diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/bar.mdx b/packages/father-build/src/fixtures/build/babel-normal/src/bar.mdx new file mode 100755 index 000000000..d93e603dc --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/bar.mdx @@ -0,0 +1 @@ +# bar diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/demos/foo.js b/packages/father-build/src/fixtures/build/babel-normal/src/demos/foo.js new file mode 100755 index 000000000..eb59b1b29 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/demos/foo.js @@ -0,0 +1,3 @@ +export default function() { + return "foo"; +} diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/fixtures/example/package.json b/packages/father-build/src/fixtures/build/babel-normal/src/fixtures/example/package.json new file mode 100755 index 000000000..9e26dfeeb --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/fixtures/example/package.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.e2e.ts b/packages/father-build/src/fixtures/build/babel-normal/src/foo.e2e.ts new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.js b/packages/father-build/src/fixtures/build/babel-normal/src/foo.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/foo.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.spec.ts b/packages/father-build/src/fixtures/build/babel-normal/src/foo.spec.ts new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.js b/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.js new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.jsx b/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.jsx new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.ts b/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.ts new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.tsx b/packages/father-build/src/fixtures/build/babel-normal/src/foo.test.tsx new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/index.js b/packages/father-build/src/fixtures/build/babel-normal/src/index.js new file mode 100755 index 000000000..9d80d06dc --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-normal/src/index.js @@ -0,0 +1,4 @@ +import 'bar'; +import foo from './foo'; + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/babel-normal/src/types.d.ts b/packages/father-build/src/fixtures/build/babel-normal/src/types.d.ts new file mode 100755 index 000000000..e69de29bb diff --git a/packages/father-build/src/fixtures/build/babel-runtimeHelpers/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/.fatherrc.js new file mode 100755 index 000000000..6d1ce8487 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + runtimeHelpers: true, + esm: { type: 'babel' }, + cjs: { type: 'babel' }, +} diff --git a/packages/father-build/src/fixtures/build/babel-runtimeHelpers/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/expected/es/index.js new file mode 100755 index 000000000..9a5518f11 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/expected/es/index.js @@ -0,0 +1,21 @@ +import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; +import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; +import _createClass from "@babel/runtime/helpers/esm/createClass"; + +var A = /*#__PURE__*/function () { + function A() { + _classCallCheck(this, A); + } + + _createClass(A, [{ + key: "foo", + value: function foo() {} + }]); + + return A; +}(); + +new A().foo(); +var a = {}; + +var b = _objectSpread({}, a); \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-runtimeHelpers/package.json b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/package.json new file mode 100755 index 000000000..9c4a09846 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@babel/runtime": "7.10.4" + } +} diff --git a/packages/father-build/src/fixtures/build/babel-runtimeHelpers/src/index.js b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/src/index.js new file mode 100755 index 000000000..5f0d5578c --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-runtimeHelpers/src/index.js @@ -0,0 +1,9 @@ + +class A { + foo() {} +} + +(new A()).foo(); + +const a = {}; +const b = {...a}; \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-syntax/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-syntax/.fatherrc.js new file mode 100755 index 000000000..8b9450222 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-syntax/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +}; diff --git a/packages/father-build/src/fixtures/build/babel-syntax/expected/index.esm.js b/packages/father-build/src/fixtures/build/babel-syntax/expected/index.esm.js new file mode 100755 index 000000000..c74948696 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-syntax/expected/index.esm.js @@ -0,0 +1,84 @@ +import React from 'react'; + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; +} + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + + var target = _objectWithoutPropertiesLoose(source, excluded); + + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; +} + +function a () { + alert('a'); +} + +function b1() { + alert('b1'); +} +function b2() { + alert('b2'); +} + +var b = /*#__PURE__*/Object.freeze({ + __proto__: null, + b1: b1, + b2: b2 +}); + +var _class; +// babel-plugin-react-require +var Foo = function Foo() { + return /*#__PURE__*/React.createElement("div", null); +}; // Don't support multiple chunks for now +// @babel/plugin-syntax-dynamic-import +// import('./a'); +// object-rest-spread + +var _bar = bar, + foo = _bar.foo, + z = _objectWithoutProperties(_bar, ["foo"]); + +console.log(z); // @babel/plugin-proposal-decorators + class + +var A = foo(_class = function A() { + _classCallCheck(this, A); +}) || _class; // export default from + +var a$1 = x > 10 ? 'big' : 'small'; +console.log(a$1); // export namespace from + +export { A, Foo, a, b }; diff --git a/packages/father-build/src/fixtures/build/babel-syntax/package.json b/packages/father-build/src/fixtures/build/babel-syntax/package.json new file mode 100755 index 000000000..1368588bd --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-syntax/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "react": "^16.8.4" + } +} diff --git a/packages/father-build/src/fixtures/build/babel-syntax/src/a.js b/packages/father-build/src/fixtures/build/babel-syntax/src/a.js new file mode 100755 index 000000000..4e005dbee --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-syntax/src/a.js @@ -0,0 +1,4 @@ + +export default function () { + alert('a'); +} diff --git a/packages/father-build/src/fixtures/build/babel-syntax/src/b.js b/packages/father-build/src/fixtures/build/babel-syntax/src/b.js new file mode 100755 index 000000000..c03767c13 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-syntax/src/b.js @@ -0,0 +1,8 @@ + +export function b1() { + alert('b1'); +} + +export function b2() { + alert('b2'); +} diff --git a/packages/father-build/src/fixtures/build/babel-syntax/src/index.js b/packages/father-build/src/fixtures/build/babel-syntax/src/index.js new file mode 100755 index 000000000..aec1e847b --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-syntax/src/index.js @@ -0,0 +1,32 @@ + +// babel-plugin-react-require +export const Foo = () =>
; + +// Don't support multiple chunks for now +// @babel/plugin-syntax-dynamic-import +// import('./a'); + +// object-rest-spread +const { foo, ...z } = bar; +console.log(z); + +// @babel/plugin-proposal-decorators + class +@foo +export class A {} + +// export default from +export a from './a'; + +// do expression +let a = do { + if(x > 10) { + 'big'; + } else { + 'small'; + } +}; +console.log(a); + +// export namespace from +export * as b from './b'; + diff --git a/packages/father-build/src/fixtures/build/babel-ts-3.7-features/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/.fatherrc.js new file mode 100755 index 000000000..0637dcfc5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/.fatherrc.js @@ -0,0 +1,4 @@ +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, +}; diff --git a/packages/father-build/src/fixtures/build/babel-ts-3.7-features/expected/es/index.d.ts b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/expected/es/index.d.ts new file mode 100755 index 000000000..daaf9ca46 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/expected/es/index.d.ts @@ -0,0 +1,2 @@ +export declare const optionalChaining: string; +export declare const nullishCoalescing: string | boolean; diff --git a/packages/father-build/src/fixtures/build/babel-ts-3.7-features/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/expected/es/index.js new file mode 100755 index 000000000..640b9525a --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/expected/es/index.js @@ -0,0 +1,6 @@ +var _foo$test; + +var foo = {}; +export var optionalChaining = foo === null || foo === void 0 ? void 0 : (_foo$test = foo.test) === null || _foo$test === void 0 ? void 0 : _foo$test.abc; +var bar = false; +export var nullishCoalescing = bar !== null && bar !== void 0 ? bar : 'default'; diff --git a/packages/father-build/src/fixtures/build/babel-ts-3.7-features/src/index.ts b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/src/index.ts new file mode 100755 index 000000000..5ed0adeb7 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-ts-3.7-features/src/index.ts @@ -0,0 +1,11 @@ +type Foo = { + test?: { + abc?: string; + } +} +const foo: Foo = {}; + +export const optionalChaining = foo?.test?.abc; + +const bar = false; +export const nullishCoalescing = bar ?? 'default'; diff --git a/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/.fatherrc.js new file mode 100755 index 000000000..166359112 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, + disableTypeCheck: true, +}; diff --git a/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/expected/es/index.js new file mode 100755 index 000000000..da1c4ebf5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/expected/es/index.js @@ -0,0 +1,3 @@ +export default function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/src/index.ts b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/src/index.ts new file mode 100755 index 000000000..3a0363ce2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/src/index.ts @@ -0,0 +1,7 @@ +interface IOpts { + foo: boolean; +} + +export default function foo(opts: IOpts): string { + return opts.foo ? 'foo' : 'bar'; +} diff --git a/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/tsconfig.json b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/tsconfig.json new file mode 100755 index 000000000..d322bf935 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-disable-typecheck/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "esnext", + "moduleResolution": "node", + "jsx": "preserve", + "esModuleInterop": true + } +} diff --git a/packages/father-build/src/fixtures/build/babel-typescript-template/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-typescript-template/.fatherrc.js new file mode 100755 index 000000000..19390b36b --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-template/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, +}; diff --git a/packages/father-build/src/fixtures/build/babel-typescript-template/expected/es/index.d.ts b/packages/father-build/src/fixtures/build/babel-typescript-template/expected/es/index.d.ts new file mode 100755 index 000000000..9f688a7e2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-template/expected/es/index.d.ts @@ -0,0 +1,5 @@ +interface IOpts { + foo: boolean; +} +export default function foo(opts: IOpts): string; +export {}; diff --git a/packages/father-build/src/fixtures/build/babel-typescript-template/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-typescript-template/expected/es/index.js new file mode 100755 index 000000000..da1c4ebf5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-template/expected/es/index.js @@ -0,0 +1,3 @@ +export default function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-typescript-template/src/index.ts b/packages/father-build/src/fixtures/build/babel-typescript-template/src/index.ts new file mode 100755 index 000000000..3a0363ce2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript-template/src/index.ts @@ -0,0 +1,7 @@ +interface IOpts { + foo: boolean; +} + +export default function foo(opts: IOpts): string { + return opts.foo ? 'foo' : 'bar'; +} diff --git a/packages/father-build/src/fixtures/build/babel-typescript/.fatherrc.js b/packages/father-build/src/fixtures/build/babel-typescript/.fatherrc.js new file mode 100755 index 000000000..19390b36b --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + cjs: { type: 'babel' }, + esm: { type: 'babel' }, +}; diff --git a/packages/father-build/src/fixtures/build/babel-typescript/expected/es/index.d.ts b/packages/father-build/src/fixtures/build/babel-typescript/expected/es/index.d.ts new file mode 100755 index 000000000..9f688a7e2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript/expected/es/index.d.ts @@ -0,0 +1,5 @@ +interface IOpts { + foo: boolean; +} +export default function foo(opts: IOpts): string; +export {}; diff --git a/packages/father-build/src/fixtures/build/babel-typescript/expected/es/index.js b/packages/father-build/src/fixtures/build/babel-typescript/expected/es/index.js new file mode 100755 index 000000000..da1c4ebf5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript/expected/es/index.js @@ -0,0 +1,3 @@ +export default function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/babel-typescript/src/index.ts b/packages/father-build/src/fixtures/build/babel-typescript/src/index.ts new file mode 100755 index 000000000..3a0363ce2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript/src/index.ts @@ -0,0 +1,7 @@ +interface IOpts { + foo: boolean; +} + +export default function foo(opts: IOpts): string { + return opts.foo ? 'foo' : 'bar'; +} diff --git a/packages/father-build/src/fixtures/build/babel-typescript/tsconfig.json b/packages/father-build/src/fixtures/build/babel-typescript/tsconfig.json new file mode 100755 index 000000000..fd3ce93b7 --- /dev/null +++ b/packages/father-build/src/fixtures/build/babel-typescript/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + // tsconfig is not valid josn file + "target": "esnext", + "moduleResolution": "node", + "jsx": "preserve", + "esModuleInterop": true, + "declaration": true + } +} diff --git a/packages/father-build/src/fixtures/build/config-array/.fatherrc.js b/packages/father-build/src/fixtures/build/config-array/.fatherrc.js new file mode 100755 index 000000000..695d856f1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/config-array/.fatherrc.js @@ -0,0 +1,13 @@ + +export default [ + { + cjs: 'babel', + }, + { + entry: 'ui/index.js', + umd: { + name: 'foo', + minFile: false, + }, + }, +]; diff --git a/packages/father-build/src/fixtures/build/config-array/expected/index.umd.js b/packages/father-build/src/fixtures/build/config-array/expected/index.umd.js new file mode 100755 index 000000000..f610a7710 --- /dev/null +++ b/packages/father-build/src/fixtures/build/config-array/expected/index.umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.foo = factory()); +}(this, (function () { 'use strict'; + + var index = (function () { + return 1; + }); + + return index; + +}))); diff --git a/packages/father-build/src/fixtures/build/config-array/src/index.js b/packages/father-build/src/fixtures/build/config-array/src/index.js new file mode 100755 index 000000000..be26f6dda --- /dev/null +++ b/packages/father-build/src/fixtures/build/config-array/src/index.js @@ -0,0 +1,2 @@ + +export default () => 1; diff --git a/packages/father-build/src/fixtures/build/config-array/ui/index.js b/packages/father-build/src/fixtures/build/config-array/ui/index.js new file mode 100755 index 000000000..807a7975a --- /dev/null +++ b/packages/father-build/src/fixtures/build/config-array/ui/index.js @@ -0,0 +1 @@ +export default () => 1; diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-pkgs/.fatherrc.js new file mode 100755 index 000000000..391752f4d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/.fatherrc.js @@ -0,0 +1,8 @@ + +export default { + esm: { type: 'rollup' }, + pkgs: [ + 'foo', + 'bar' + ] +} diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/core/bar/package.json b/packages/father-build/src/fixtures/build/lerna-pkgs/core/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/core/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/core/bar/src/index.js b/packages/father-build/src/fixtures/build/lerna-pkgs/core/bar/src/index.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/core/bar/src/index.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/core/foo/package.json b/packages/father-build/src/fixtures/build/lerna-pkgs/core/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/core/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/core/foo/src/index.js b/packages/father-build/src/fixtures/build/lerna-pkgs/core/foo/src/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/core/foo/src/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/expected/bar/index.esm.js b/packages/father-build/src/fixtures/build/lerna-pkgs/expected/bar/index.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/expected/bar/index.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/expected/foo/index.esm.js b/packages/father-build/src/fixtures/build/lerna-pkgs/expected/foo/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/expected/foo/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-pkgs/lerna.json b/packages/father-build/src/fixtures/build/lerna-pkgs/lerna.json new file mode 100755 index 000000000..e85dc989a --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-pkgs/lerna.json @@ -0,0 +1,5 @@ +{ + "packages": [ + "core/*" + ] +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-root-config-override/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/expected/bar/index.js b/packages/father-build/src/fixtures/build/lerna-root-config-override/expected/bar/index.js new file mode 100755 index 000000000..2b1938520 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/expected/bar/index.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/expected/foo/index.js b/packages/father-build/src/fixtures/build/lerna-root-config-override/expected/foo/index.js new file mode 100755 index 000000000..aece69e8b --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/expected/foo/index.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/lerna.json b/packages/father-build/src/fixtures/build/lerna-root-config-override/lerna.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/lerna.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/bar/package.json b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/bar/src/index.js b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/bar/src/index.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/bar/src/index.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/foo/package.json b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/foo/src/index.js b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/foo/src/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config-override/packages/foo/src/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-root-config/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/expected/bar/index.esm.js b/packages/father-build/src/fixtures/build/lerna-root-config/expected/bar/index.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/expected/bar/index.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/expected/foo/index.esm.js b/packages/father-build/src/fixtures/build/lerna-root-config/expected/foo/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/expected/foo/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/lerna.json b/packages/father-build/src/fixtures/build/lerna-root-config/lerna.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/lerna.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/packages/bar/package.json b/packages/father-build/src/fixtures/build/lerna-root-config/packages/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/packages/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/packages/bar/src/index.js b/packages/father-build/src/fixtures/build/lerna-root-config/packages/bar/src/index.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/packages/bar/src/index.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/packages/foo/package.json b/packages/father-build/src/fixtures/build/lerna-root-config/packages/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/packages/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-config/packages/foo/src/index.js b/packages/father-build/src/fixtures/build/lerna-root-config/packages/foo/src/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-config/packages/foo/src/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-root-scope/.fatherrc.js new file mode 100755 index 000000000..5c4c510bf --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/.fatherrc.js @@ -0,0 +1,3 @@ +export default { + esm: { type: 'babel' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/expected/bar/index.esm.js b/packages/father-build/src/fixtures/build/lerna-root-scope/expected/bar/index.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/expected/bar/index.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/expected/foo/index.esm.js b/packages/father-build/src/fixtures/build/lerna-root-scope/expected/foo/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/expected/foo/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/lerna.json b/packages/father-build/src/fixtures/build/lerna-root-scope/lerna.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/lerna.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/.fatherrc.js new file mode 100755 index 000000000..030fee174 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/.fatherrc.js @@ -0,0 +1,3 @@ +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/package.json b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/src/index.js b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/src/index.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/bar/src/index.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/.fatherrc.js new file mode 100755 index 000000000..030fee174 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/.fatherrc.js @@ -0,0 +1,3 @@ +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/package.json b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/src/index.js b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/src/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-scope/packages/foo/src/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/.fatherrc.js new file mode 100755 index 000000000..2875def12 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'babel' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/expected/bar/es/index.js b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/expected/bar/es/index.js new file mode 100755 index 000000000..11f6ee783 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/expected/bar/es/index.js @@ -0,0 +1,3 @@ +export default (function () { + console.log('bar'); +}); \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/expected/foo/es/index.js b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/expected/foo/es/index.js new file mode 100755 index 000000000..1f28f54e8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/expected/foo/es/index.js @@ -0,0 +1,3 @@ +export default (function () { + console.log('foo'); +}); \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/lerna.json b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/lerna.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/lerna.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/bar/package.json b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/bar/src/index.ts b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/bar/src/index.ts new file mode 100755 index 000000000..f053c5b21 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/bar/src/index.ts @@ -0,0 +1,4 @@ + +export default () => { + console.log('bar'); +}; diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/foo/package.json b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/foo/src/index.ts b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/foo/src/index.ts new file mode 100755 index 000000000..32ecfb320 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/packages/foo/src/index.ts @@ -0,0 +1,4 @@ + +export default () => { + console.log('foo'); +}; diff --git a/packages/father-build/src/fixtures/build/lerna-root-tsconfig/tsconfig.json b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/tsconfig.json new file mode 100755 index 000000000..38fe9e814 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-root-tsconfig/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "declaration": false, + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "jsx": "react", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true + }, + "exclude": ["node_modules", "es", "lib", "dist"] +} diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/expected/bar/index.esm.js b/packages/father-build/src/fixtures/build/lerna-scope-packages/expected/bar/index.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/expected/bar/index.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/expected/foo/index.esm.js b/packages/father-build/src/fixtures/build/lerna-scope-packages/expected/foo/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/expected/foo/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/lerna.json b/packages/father-build/src/fixtures/build/lerna-scope-packages/lerna.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/lerna.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/package.json b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/src/index.js b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/src/index.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/@hoo/bar/src/index.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/package.json b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/src/index.js b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/src/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna-scope-packages/packages/foo/src/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna/expected/bar/index.esm.js b/packages/father-build/src/fixtures/build/lerna/expected/bar/index.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/expected/bar/index.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna/expected/foo/index.esm.js b/packages/father-build/src/fixtures/build/lerna/expected/foo/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/expected/foo/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/lerna/lerna.json b/packages/father-build/src/fixtures/build/lerna/lerna.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/lerna.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna/packages/bar/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna/packages/bar/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/packages/bar/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna/packages/bar/package.json b/packages/father-build/src/fixtures/build/lerna/packages/bar/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/packages/bar/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna/packages/bar/src/index.js b/packages/father-build/src/fixtures/build/lerna/packages/bar/src/index.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/packages/bar/src/index.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/lerna/packages/foo/.fatherrc.js b/packages/father-build/src/fixtures/build/lerna/packages/foo/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/packages/foo/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/lerna/packages/foo/package.json b/packages/father-build/src/fixtures/build/lerna/packages/foo/package.json new file mode 100755 index 000000000..0967ef424 --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/packages/foo/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/father-build/src/fixtures/build/lerna/packages/foo/src/index.js b/packages/father-build/src/fixtures/build/lerna/packages/foo/src/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/lerna/packages/foo/src/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/.fatherrc.js b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/.fatherrc.js new file mode 100755 index 000000000..6e6bd69f5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + umd: { + minFile: false, + }, +}; diff --git a/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/expected/index.umd.js b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/expected/index.umd.js new file mode 100755 index 000000000..3819aa8e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/expected/index.umd.js @@ -0,0 +1,43 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.foo = factory()); +}(this, (function () { 'use strict'; + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; + } + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); + } + + var lib = createCommonjsModule(function (module) { + (function (root, factory) { + if ( module.exports) { + module.exports = factory(); + } else { + root.timing2 = factory(); + } + }(typeof self !== 'undefined' ? self : commonjsGlobal, function () { + return { + timing2: 'timing2', + }; + })); + }); + + function index () { + console.log(lib); + } + + return index; + +}))); diff --git a/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/package.json b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/package.json new file mode 100755 index 000000000..bde99de92 --- /dev/null +++ b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/package.json @@ -0,0 +1,3 @@ +{ + "name": "foo" +} diff --git a/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/packages/fooo/package.json b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/packages/fooo/package.json new file mode 100755 index 000000000..de662967e --- /dev/null +++ b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/packages/fooo/package.json @@ -0,0 +1,9 @@ +{ + "name": "fooo", + "dependencies": { + "timing2": "^0.3.3" + }, + "scripts": { + "build": "father build --umd" + } +} diff --git a/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/packages/fooo/src/index.js b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/packages/fooo/src/index.js new file mode 100755 index 000000000..ce3b69ab5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/packages/fooo/src/index.js @@ -0,0 +1,5 @@ +import timing2 from 'timing2'; + +export default function() { + console.log(timing2); +}; diff --git a/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/src/index.js b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/src/index.js new file mode 100755 index 000000000..4785cef57 --- /dev/null +++ b/packages/father-build/src/fixtures/build/require-node_modules-in-sub-directory/src/index.js @@ -0,0 +1 @@ +export default from '../packages/fooo/src/index'; diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/.fatherrc.js new file mode 100755 index 000000000..6e6bd69f5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + umd: { + minFile: false, + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/expected/index.umd.js new file mode 100755 index 000000000..1a43aefbc --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/expected/index.umd.js @@ -0,0 +1,34 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; + } + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); + } + + var foo_1 = createCommonjsModule(function (module, exports) { + var foo = exports; + + foo.a = function () { + return 'a'; + }; + foo.b = function () { + return 'b'; + }; + }); + + console.log(foo_1.a()); + console.log(foo_1.b()); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/package.json b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/package.json new file mode 100755 index 000000000..040bc3a1e --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "foo": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/src/index.js b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/src/index.js new file mode 100755 index 000000000..8fa897e84 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps-auto-named-exports/src/index.js @@ -0,0 +1,4 @@ +import { a, b } from 'foo'; + +console.log(a()); +console.log(b()); diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/.fatherrc.js new file mode 100755 index 000000000..6e6bd69f5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + umd: { + minFile: false, + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/expected/index.umd.js new file mode 100755 index 000000000..2c1ff18ce --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/expected/index.umd.js @@ -0,0 +1,18 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + var foo = { + a: function () { + return 'a'; + }, + b: function () { + return 'b'; + }, + }; + + console.log(foo.a()); + console.log(foo.b()); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps/package.json b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/package.json new file mode 100755 index 000000000..040bc3a1e --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "foo": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-commonjs-deps/src/index.js b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/src/index.js new file mode 100755 index 000000000..8fa897e84 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-commonjs-deps/src/index.js @@ -0,0 +1,4 @@ +import { a, b } from 'foo'; + +console.log(a()); +console.log(b()); diff --git a/packages/father-build/src/fixtures/build/rollup-config-alias/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-config-alias/.fatherrc.js new file mode 100755 index 000000000..85815c788 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-config-alias/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: 'rollup', +} diff --git a/packages/father-build/src/fixtures/build/rollup-config-alias/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-config-alias/expected/index.esm.js new file mode 100755 index 000000000..586fcf9a5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-config-alias/expected/index.esm.js @@ -0,0 +1,6 @@ +var foo = 'a'; +function index () { + console.log(foo); +} + +export default index; diff --git a/packages/father-build/src/fixtures/build/rollup-config-alias/src/index.js b/packages/father-build/src/fixtures/build/rollup-config-alias/src/index.js new file mode 100755 index 000000000..80c65e1f0 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-config-alias/src/index.js @@ -0,0 +1,6 @@ + +const foo = 'a'; + +export default function () { + console.log(foo); +} diff --git a/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/.fatherrc.js new file mode 100755 index 000000000..5f43af600 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/.fatherrc.js @@ -0,0 +1,10 @@ + +export default { + esm: { type: 'rollup' }, + autoprefixer: { + overrideBrowserslist: [ + 'ie>8', + 'Safari >= 6', + ], + }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/expected/index.esm.js new file mode 100755 index 000000000..7724570da --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/expected/index.esm.js @@ -0,0 +1,31 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = "\n.a {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n}\n"; +styleInject(css_248z); + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/src/foo.css b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/src/foo.css new file mode 100755 index 000000000..b4d332f68 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/src/foo.css @@ -0,0 +1,4 @@ + +.a { + display: flex; +} diff --git a/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/src/index.js b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/src/index.js new file mode 100755 index 000000000..9a761d97a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-autoprefixer/src/index.js @@ -0,0 +1,3 @@ +import './foo.css'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-css-extract/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-css-extract/.fatherrc.js new file mode 100755 index 000000000..c01e2a255 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-extract/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + extractCSS: true, + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-css-extract/expected/index.esm.css b/packages/father-build/src/fixtures/build/rollup-css-extract/expected/index.esm.css new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-extract/expected/index.esm.css @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-css-extract/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-css-extract/expected/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-extract/expected/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-css-extract/src/foo.css b/packages/father-build/src/fixtures/build/rollup-css-extract/src/foo.css new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-extract/src/foo.css @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-css-extract/src/index.js b/packages/father-build/src/fixtures/build/rollup-css-extract/src/index.js new file mode 100755 index 000000000..9a761d97a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-extract/src/index.js @@ -0,0 +1,3 @@ +import './foo.css'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-css-inject/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-css-inject/.fatherrc.js new file mode 100755 index 000000000..c39568546 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-inject/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + injectCSS: false, + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-css-inject/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-css-inject/expected/index.esm.js new file mode 100755 index 000000000..d5522693b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-inject/expected/index.esm.js @@ -0,0 +1,3 @@ +var css_248z = "\n.a { color: green; }\n"; + +console.log(css_248z); diff --git a/packages/father-build/src/fixtures/build/rollup-css-inject/src/foo.css b/packages/father-build/src/fixtures/build/rollup-css-inject/src/foo.css new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-inject/src/foo.css @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-css-inject/src/index.js b/packages/father-build/src/fixtures/build/rollup-css-inject/src/index.js new file mode 100755 index 000000000..b2bb60ab0 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-inject/src/index.js @@ -0,0 +1,3 @@ +import style from './foo.css'; + +console.log(style); diff --git a/packages/father-build/src/fixtures/build/rollup-css-modules/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-css-modules/.fatherrc.js new file mode 100755 index 000000000..d75347b75 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-modules/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + esm: { type: 'rollup' }, + cssModules: true, +} diff --git a/packages/father-build/src/fixtures/build/rollup-css-modules/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-css-modules/expected/index.esm.js new file mode 100755 index 000000000..7e6569e18 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-modules/expected/index.esm.js @@ -0,0 +1,32 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = "\n.foo_a__3z5g- { color: green; }\n"; +var styles = {"a":"foo_a__3z5g-"}; +styleInject(css_248z); + +console.log('foo', styles.a); diff --git a/packages/father-build/src/fixtures/build/rollup-css-modules/src/foo.css b/packages/father-build/src/fixtures/build/rollup-css-modules/src/foo.css new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-modules/src/foo.css @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-css-modules/src/index.js b/packages/father-build/src/fixtures/build/rollup-css-modules/src/index.js new file mode 100755 index 000000000..0ebd23438 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css-modules/src/index.js @@ -0,0 +1,3 @@ +import styles from './foo.css'; + +console.log('foo', styles.a); diff --git a/packages/father-build/src/fixtures/build/rollup-css/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-css/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-css/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-css/expected/index.esm.js new file mode 100755 index 000000000..f7e62e7a8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css/expected/index.esm.js @@ -0,0 +1,31 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = "\n.a {\n color: green;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-box-align: stretch;\n}\n"; +styleInject(css_248z); + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-css/src/foo.css b/packages/father-build/src/fixtures/build/rollup-css/src/foo.css new file mode 100755 index 000000000..ca6e9cd5d --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css/src/foo.css @@ -0,0 +1,7 @@ + +.a { + color: green; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-box-align: stretch; +} diff --git a/packages/father-build/src/fixtures/build/rollup-css/src/index.js b/packages/father-build/src/fixtures/build/rollup-css/src/index.js new file mode 100755 index 000000000..9a761d97a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-css/src/index.js @@ -0,0 +1,3 @@ +import './foo.css'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-esm-minify/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-esm-minify/.fatherrc.js new file mode 100755 index 000000000..25ded9459 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-minify/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup', minify: true }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-esm-minify/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-esm-minify/expected/index.esm.js new file mode 100755 index 000000000..f05f55286 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-minify/expected/index.esm.js @@ -0,0 +1 @@ +function o(){console.log("foo")}export default o; diff --git a/packages/father-build/src/fixtures/build/rollup-esm-minify/package.json b/packages/father-build/src/fixtures/build/rollup-esm-minify/package.json new file mode 100755 index 000000000..81bb2b631 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-minify/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "bar": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-esm-minify/src/foo.js b/packages/father-build/src/fixtures/build/rollup-esm-minify/src/foo.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-minify/src/foo.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-esm-minify/src/index.js b/packages/father-build/src/fixtures/build/rollup-esm-minify/src/index.js new file mode 100755 index 000000000..079e99f5a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-minify/src/index.js @@ -0,0 +1,5 @@ +import foo from './foo'; + +export default function () { + console.log(foo()); +} diff --git a/packages/father-build/src/fixtures/build/rollup-esm-mjs/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-esm-mjs/.fatherrc.js new file mode 100755 index 000000000..ed89f5d34 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-mjs/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup', mjs: true }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-esm-mjs/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-esm-mjs/expected/index.esm.js new file mode 100755 index 000000000..6890cce5b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-mjs/expected/index.esm.js @@ -0,0 +1,6 @@ +import 'bar'; + +function index () { +} + +export default index; diff --git a/packages/father-build/src/fixtures/build/rollup-esm-mjs/expected/index.mjs b/packages/father-build/src/fixtures/build/rollup-esm-mjs/expected/index.mjs new file mode 100755 index 000000000..8f73bfe1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-mjs/expected/index.mjs @@ -0,0 +1 @@ +function o(){}console.log("bar");export default o; diff --git a/packages/father-build/src/fixtures/build/rollup-esm-mjs/package.json b/packages/father-build/src/fixtures/build/rollup-esm-mjs/package.json new file mode 100755 index 000000000..81bb2b631 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-mjs/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "bar": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-esm-mjs/src/foo.js b/packages/father-build/src/fixtures/build/rollup-esm-mjs/src/foo.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-mjs/src/foo.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-esm-mjs/src/index.js b/packages/father-build/src/fixtures/build/rollup-esm-mjs/src/index.js new file mode 100755 index 000000000..01d696690 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-esm-mjs/src/index.js @@ -0,0 +1,6 @@ +import 'bar'; +import foo from './foo'; + +export default function () { + foo(); +} diff --git a/packages/father-build/src/fixtures/build/rollup-externalsExclude/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-externalsExclude/.fatherrc.js new file mode 100755 index 000000000..8ab27f0f1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-externalsExclude/.fatherrc.js @@ -0,0 +1,11 @@ + +export default { + esm: { type: 'rollup' }, + cjs: { type: 'rollup' }, + extraExternals: [ + 'foo', + ], + externalsExclude: [ + 'foo/bar', + ], +}; diff --git a/packages/father-build/src/fixtures/build/rollup-externalsExclude/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-externalsExclude/expected/index.esm.js new file mode 100755 index 000000000..60d2ac221 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-externalsExclude/expected/index.esm.js @@ -0,0 +1,5 @@ +import 'foo'; + +(() => { + console.log('bar'); +})(); diff --git a/packages/father-build/src/fixtures/build/rollup-externalsExclude/expected/index.js b/packages/father-build/src/fixtures/build/rollup-externalsExclude/expected/index.js new file mode 100755 index 000000000..98f72615c --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-externalsExclude/expected/index.js @@ -0,0 +1,7 @@ +'use strict'; + +require('foo'); + +(() => { + console.log('bar'); +})(); diff --git a/packages/father-build/src/fixtures/build/rollup-externalsExclude/package.json b/packages/father-build/src/fixtures/build/rollup-externalsExclude/package.json new file mode 100755 index 000000000..6a3252ea8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-externalsExclude/package.json @@ -0,0 +1,3 @@ +{ + "version": "0.1.0" +} diff --git a/packages/father-build/src/fixtures/build/rollup-externalsExclude/src/index.js b/packages/father-build/src/fixtures/build/rollup-externalsExclude/src/index.js new file mode 100755 index 000000000..40d29331c --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-externalsExclude/src/index.js @@ -0,0 +1,2 @@ +import 'foo'; +import 'foo/bar'; diff --git a/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/.fatherrc.js new file mode 100755 index 000000000..0dfd93f4b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/.fatherrc.js @@ -0,0 +1,10 @@ + +export default { + esm: { type: 'rollup' }, + extraBabelPresets: [ + require.resolve('./preset'), + ], + extraBabelPlugins: [ + require.resolve('./p2'), + ], +}; diff --git a/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/expected/index.esm.js new file mode 100755 index 000000000..0b60c0ede --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/expected/index.esm.js @@ -0,0 +1,2 @@ +console.log("p1", "p2", 1); +alert(2); diff --git a/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/p1.js b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/p1.js new file mode 100755 index 000000000..a3a3e24e1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/p1.js @@ -0,0 +1,20 @@ + +module.exports = function ({ types: t }) { + function isConsoleLog(node) { + const { callee, callee: { object, property } } = node; + return t.isMemberExpression(callee) + && t.isIdentifier(object) && object.name === 'console' + && t.isIdentifier(property) && property.name === 'log'; + } + + return { + visitor: { + CallExpression(path, state) { + const { node, node: { callee, callee: { object, property } } } = path; + if (isConsoleLog(node)) { + node.arguments.unshift(t.stringLiteral('p1')); + } + }, + }, + }; +} diff --git a/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/p2.js b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/p2.js new file mode 100755 index 000000000..297ac66d1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/p2.js @@ -0,0 +1,20 @@ + +module.exports = function ({ types: t }) { + function isConsoleLog(node) { + const { callee, callee: { object, property } } = node; + return t.isMemberExpression(callee) + && t.isIdentifier(object) && object.name === 'console' + && t.isIdentifier(property) && property.name === 'log'; + } + + return { + visitor: { + CallExpression(path, state) { + const { node, node: { callee, callee: { object, property } } } = path; + if (isConsoleLog(node)) { + node.arguments.unshift(t.stringLiteral('p2')); + } + }, + }, + }; +} diff --git a/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/preset.js b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/preset.js new file mode 100755 index 000000000..07ccbb29c --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/preset.js @@ -0,0 +1,8 @@ + +module.exports = function () { + return { + plugins: [ + require.resolve('./p1'), + ], + }; +} diff --git a/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/src/index.js b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/src/index.js new file mode 100755 index 000000000..923799068 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extra-babel-presets-and-plugins/src/index.js @@ -0,0 +1,3 @@ + +console.log(1); +alert(2); diff --git a/packages/father-build/src/fixtures/build/rollup-extraExternals/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-extraExternals/.fatherrc.js new file mode 100755 index 000000000..409af0a2c --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraExternals/.fatherrc.js @@ -0,0 +1,9 @@ + +export default { + esm: { type: 'rollup' }, + extraExternals: [ + '@ali/foo', + '@tmp', + 'foo', + ] +}; diff --git a/packages/father-build/src/fixtures/build/rollup-extraExternals/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-extraExternals/expected/index.esm.js new file mode 100755 index 000000000..1a8c84dab --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraExternals/expected/index.esm.js @@ -0,0 +1,5 @@ +import 'foo'; +import '@ali/foo'; +import '@ali/foo/bar'; +import '@tmp/foo'; +import '@tmp/foo/bar'; diff --git a/packages/father-build/src/fixtures/build/rollup-extraExternals/package.json b/packages/father-build/src/fixtures/build/rollup-extraExternals/package.json new file mode 100755 index 000000000..6a3252ea8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraExternals/package.json @@ -0,0 +1,3 @@ +{ + "version": "0.1.0" +} diff --git a/packages/father-build/src/fixtures/build/rollup-extraExternals/src/index.js b/packages/father-build/src/fixtures/build/rollup-extraExternals/src/index.js new file mode 100755 index 000000000..3e307458f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraExternals/src/index.js @@ -0,0 +1,6 @@ + +import 'foo'; +import '@ali/foo'; +import '@ali/foo/bar'; +import '@tmp/foo'; +import '@tmp/foo/bar'; diff --git a/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/.fatherrc.js new file mode 100755 index 000000000..f3438f39b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/.fatherrc.js @@ -0,0 +1,10 @@ +import replace from 'rollup-plugin-replace'; + +export default { + esm: { type: 'rollup' }, + extraRollupPlugins: [ + replace({ + VERSION: JSON.stringify('1.0.0'), + }), + ], +}; diff --git a/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/expected/index.esm.js new file mode 100755 index 000000000..22c71e692 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/expected/index.esm.js @@ -0,0 +1 @@ +console.log("1.0.0"); diff --git a/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/package.json b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/package.json new file mode 100755 index 000000000..6a3252ea8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/package.json @@ -0,0 +1,3 @@ +{ + "version": "0.1.0" +} diff --git a/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/src/index.js b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/src/index.js new file mode 100755 index 000000000..2c9bf5559 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-extraRollupPlugins/src/index.js @@ -0,0 +1,2 @@ + +console.log(VERSION); diff --git a/packages/father-build/src/fixtures/build/rollup-import-directory/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-import-directory/.fatherrc.js new file mode 100755 index 000000000..8b9450222 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-import-directory/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-import-directory/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-import-directory/expected/index.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-import-directory/expected/index.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-import-directory/src/foo/index.js b/packages/father-build/src/fixtures/build/rollup-import-directory/src/foo/index.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-import-directory/src/foo/index.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-import-directory/src/index.js b/packages/father-build/src/fixtures/build/rollup-import-directory/src/index.js new file mode 100755 index 000000000..ead12a719 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-import-directory/src/index.js @@ -0,0 +1 @@ +import './foo'; diff --git a/packages/father-build/src/fixtures/build/rollup-importLibToEs/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-importLibToEs/.fatherrc.js new file mode 100755 index 000000000..2881eb584 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-importLibToEs/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + cjs: { type: 'rollup' }, + esm: { type: 'rollup', importLibToEs: true }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-importLibToEs/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-importLibToEs/expected/index.esm.js new file mode 100755 index 000000000..ae0559b15 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-importLibToEs/expected/index.esm.js @@ -0,0 +1,5 @@ +function foo () { + return 'es/foo'; +} + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/rollup-importLibToEs/expected/index.js b/packages/father-build/src/fixtures/build/rollup-importLibToEs/expected/index.js new file mode 100755 index 000000000..c4e33e771 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-importLibToEs/expected/index.js @@ -0,0 +1,7 @@ +'use strict'; + +function foo () { + return 'lib/foo'; +} + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/rollup-importLibToEs/src/index.js b/packages/father-build/src/fixtures/build/rollup-importLibToEs/src/index.js new file mode 100755 index 000000000..a8105c428 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-importLibToEs/src/index.js @@ -0,0 +1,3 @@ +import foo from 'foo/lib/foo'; + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/rollup-inject/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-inject/.fatherrc.js new file mode 100755 index 000000000..cc0759d33 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-inject/.fatherrc.js @@ -0,0 +1,7 @@ + +export default { + esm: { type: 'rollup' }, + inject: { + 'window.foo': 'foo', + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-inject/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-inject/expected/index.esm.js new file mode 100755 index 000000000..2f87bded3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-inject/expected/index.esm.js @@ -0,0 +1,3 @@ +import $inject_window_foo from 'foo'; + +console.log($inject_window_foo); diff --git a/packages/father-build/src/fixtures/build/rollup-inject/package.json b/packages/father-build/src/fixtures/build/rollup-inject/package.json new file mode 100755 index 000000000..040bc3a1e --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-inject/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "foo": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-inject/src/index.js b/packages/father-build/src/fixtures/build/rollup-inject/src/index.js new file mode 100755 index 000000000..4f632e0de --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-inject/src/index.js @@ -0,0 +1 @@ +console.log(window.foo); diff --git a/packages/father-build/src/fixtures/build/rollup-json/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-json/.fatherrc.js new file mode 100755 index 000000000..8b9450222 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-json/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-json/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-json/expected/index.esm.js new file mode 100755 index 000000000..6ee3aced8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-json/expected/index.esm.js @@ -0,0 +1,6 @@ +var foo = "bar"; +var pkg = { + foo: foo +}; + +console.log(pkg); diff --git a/packages/father-build/src/fixtures/build/rollup-json/src/index.js b/packages/father-build/src/fixtures/build/rollup-json/src/index.js new file mode 100755 index 000000000..3ce7d4a36 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-json/src/index.js @@ -0,0 +1,3 @@ +import pkg from './pkg.json'; + +console.log(pkg); diff --git a/packages/father-build/src/fixtures/build/rollup-json/src/pkg.json b/packages/father-build/src/fixtures/build/rollup-json/src/pkg.json new file mode 100755 index 000000000..c8c4105eb --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-json/src/pkg.json @@ -0,0 +1,3 @@ +{ + "foo": "bar" +} diff --git a/packages/father-build/src/fixtures/build/rollup-less-modules/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-less-modules/.fatherrc.js new file mode 100755 index 000000000..d75347b75 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-modules/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + esm: { type: 'rollup' }, + cssModules: true, +} diff --git a/packages/father-build/src/fixtures/build/rollup-less-modules/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-less-modules/expected/index.esm.js new file mode 100755 index 000000000..964691ea9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-modules/expected/index.esm.js @@ -0,0 +1,32 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = ".foo_a__1JvkR {\n color: green;\n}\n"; +var styles = {"a":"foo_a__1JvkR"}; +styleInject(css_248z); + +console.log('foo', styles.a); diff --git a/packages/father-build/src/fixtures/build/rollup-less-modules/src/foo.less b/packages/father-build/src/fixtures/build/rollup-less-modules/src/foo.less new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-modules/src/foo.less @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-less-modules/src/index.js b/packages/father-build/src/fixtures/build/rollup-less-modules/src/index.js new file mode 100755 index 000000000..9c442740f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-modules/src/index.js @@ -0,0 +1,3 @@ +import styles from './foo.less'; + +console.log('foo', styles.a); diff --git a/packages/father-build/src/fixtures/build/rollup-less-node-modules/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-less-node-modules/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-node-modules/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-less-node-modules/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-less-node-modules/expected/index.esm.js new file mode 100755 index 000000000..bea7558e7 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-node-modules/expected/index.esm.js @@ -0,0 +1,31 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = ".bar {\n color: red;\n}\n.a {\n color: green;\n}\n"; +styleInject(css_248z); + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-less-node-modules/src/foo.less b/packages/father-build/src/fixtures/build/rollup-less-node-modules/src/foo.less new file mode 100755 index 000000000..f49f40a45 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-node-modules/src/foo.less @@ -0,0 +1,3 @@ +@import '~foo/bar.less'; + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-less-node-modules/src/index.js b/packages/father-build/src/fixtures/build/rollup-less-node-modules/src/index.js new file mode 100755 index 000000000..eb9155cfc --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less-node-modules/src/index.js @@ -0,0 +1,3 @@ +import './foo.less'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-less/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-less/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-less/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-less/expected/index.esm.js new file mode 100755 index 000000000..47e82c7fc --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less/expected/index.esm.js @@ -0,0 +1,31 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = ".a {\n color: green;\n}\n"; +styleInject(css_248z); + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-less/src/foo.less b/packages/father-build/src/fixtures/build/rollup-less/src/foo.less new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less/src/foo.less @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-less/src/index.js b/packages/father-build/src/fixtures/build/rollup-less/src/index.js new file mode 100755 index 000000000..eb9155cfc --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-less/src/index.js @@ -0,0 +1,3 @@ +import './foo.less'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-multiple-entry/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-multiple-entry/.fatherrc.js new file mode 100755 index 000000000..c49c9b152 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-multiple-entry/.fatherrc.js @@ -0,0 +1,8 @@ + +export default { + entry: [ + './src/foo.js', + './src/bar.js', + ], + esm: { type: 'rollup' }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-multiple-entry/expected/bar.esm.js b/packages/father-build/src/fixtures/build/rollup-multiple-entry/expected/bar.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-multiple-entry/expected/bar.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/rollup-multiple-entry/expected/foo.esm.js b/packages/father-build/src/fixtures/build/rollup-multiple-entry/expected/foo.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-multiple-entry/expected/foo.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-multiple-entry/src/bar.js b/packages/father-build/src/fixtures/build/rollup-multiple-entry/src/bar.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-multiple-entry/src/bar.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/rollup-multiple-entry/src/foo.js b/packages/father-build/src/fixtures/build/rollup-multiple-entry/src/foo.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-multiple-entry/src/foo.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-node-resolve/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-node-resolve/.fatherrc.js new file mode 100755 index 000000000..5d6b9128e --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-node-resolve/.fatherrc.js @@ -0,0 +1,9 @@ + +export default { + umd: { + minFile: false, + }, + nodeResolveOpts: { + browser: true, + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-node-resolve/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-node-resolve/expected/index.umd.js new file mode 100755 index 000000000..5e9006d51 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-node-resolve/expected/index.umd.js @@ -0,0 +1,10 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + var browser = 'hello browser'; + + console.log(browser); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-node-resolve/package.json b/packages/father-build/src/fixtures/build/rollup-node-resolve/package.json new file mode 100755 index 000000000..040bc3a1e --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-node-resolve/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "foo": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-node-resolve/src/index.js b/packages/father-build/src/fixtures/build/rollup-node-resolve/src/index.js new file mode 100755 index 000000000..909687930 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-node-resolve/src/index.js @@ -0,0 +1,3 @@ +import hello from 'foo'; + +console.log(hello); diff --git a/packages/father-build/src/fixtures/build/rollup-normal/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-normal/.fatherrc.js new file mode 100755 index 000000000..2ae3de8e2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + cjs: { type: 'rollup' }, + esm: { type: 'rollup' }, + umd: {}, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-normal/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.esm.js new file mode 100755 index 000000000..ea63e10f2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.esm.js @@ -0,0 +1,7 @@ +import 'bar'; + +function foo () { + return 'foo'; +} + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/rollup-normal/expected/index.js b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.js new file mode 100755 index 000000000..c50247820 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.js @@ -0,0 +1,9 @@ +'use strict'; + +require('bar'); + +function foo () { + return 'foo'; +} + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/rollup-normal/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.umd.js new file mode 100755 index 000000000..ca82ca23f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.umd.js @@ -0,0 +1,12 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(['bar'], factory) : + factory(); +}((function () { 'use strict'; + + function foo () { + return 'foo'; + } + + console.log(foo()); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-normal/expected/index.umd.min.js b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.umd.min.js new file mode 100755 index 000000000..c654cc12f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/expected/index.umd.min.js @@ -0,0 +1 @@ +!function(n){"function"==typeof define&&define.amd?define(["bar"],n):n()}((function(){"use strict";console.log("foo")})); diff --git a/packages/father-build/src/fixtures/build/rollup-normal/package.json b/packages/father-build/src/fixtures/build/rollup-normal/package.json new file mode 100755 index 000000000..5ca44beaa --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/package.json @@ -0,0 +1,5 @@ +{ + "peerDependencies": { + "bar": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-normal/src/foo.js b/packages/father-build/src/fixtures/build/rollup-normal/src/foo.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/src/foo.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-normal/src/index.js b/packages/father-build/src/fixtures/build/rollup-normal/src/index.js new file mode 100755 index 000000000..9d80d06dc --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-normal/src/index.js @@ -0,0 +1,4 @@ +import 'bar'; +import foo from './foo'; + +console.log(foo()); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/.fatherrc.js new file mode 100755 index 000000000..1bc453016 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/.fatherrc.js @@ -0,0 +1,29 @@ + +export default { + entry: [ + 'src/index.js', + 'src/foo.js', + 'src/bar.js', + ], + umd: { + }, + cjs: { type: 'rollup' }, + esm: { type: 'rollup' }, + file: 'dva', + overridesByEntry: { + 'src/foo.js': { + file: 'dva.foo', + cjs: { type: 'rollup', file: 'dva.foo.cjs' }, + esm: { type: 'rollup', file: 'dva.foo.esm' }, + }, + 'src/bar.js': { + cjs: false, + esm: false, + umd: { file: 'dva.bar' }, + }, + 'src/index.js': { + cjs: false, + esm: false, + }, + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.bar.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.bar.js new file mode 100755 index 000000000..70ba81f61 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.bar.js @@ -0,0 +1,8 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + console.log('bar'); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.bar.min.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.bar.min.js new file mode 100755 index 000000000..7f57ce5a8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.bar.min.js @@ -0,0 +1 @@ +!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){"use strict";console.log("bar")})); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.esm.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.esm.js new file mode 100755 index 000000000..8cc7aa3e9 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.esm.js @@ -0,0 +1 @@ +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.cjs.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.cjs.js new file mode 100755 index 000000000..aece69e8b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.cjs.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.esm.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.esm.js new file mode 100755 index 000000000..81afa3157 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.esm.js @@ -0,0 +1 @@ +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.umd.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.umd.js new file mode 100755 index 000000000..62e3a909f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.umd.js @@ -0,0 +1,8 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + console.log('foo'); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.umd.min.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.umd.min.js new file mode 100755 index 000000000..e383c2dd0 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.foo.umd.min.js @@ -0,0 +1 @@ +!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){"use strict";console.log("foo")})); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.js new file mode 100755 index 000000000..2b1938520 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.umd.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.umd.js new file mode 100755 index 000000000..fd2bf1e89 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.umd.js @@ -0,0 +1,8 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + console.log('index'); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.umd.min.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.umd.min.js new file mode 100755 index 000000000..a15d21f33 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/expected/dva.umd.min.js @@ -0,0 +1 @@ +!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){"use strict";console.log("index")})); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/bar.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/bar.js new file mode 100755 index 000000000..9638d025d --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/bar.js @@ -0,0 +1,2 @@ + +console.log('bar'); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/foo.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/foo.js new file mode 100755 index 000000000..695557eab --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/foo.js @@ -0,0 +1,2 @@ + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/index.js b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/index.js new file mode 100755 index 000000000..112a16294 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-outputFilename-with-overrides/src/index.js @@ -0,0 +1,2 @@ + +console.log('index'); diff --git a/packages/father-build/src/fixtures/build/rollup-replace/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-replace/.fatherrc.js new file mode 100755 index 000000000..5be9fca42 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-replace/.fatherrc.js @@ -0,0 +1,7 @@ + +export default { + esm: { type: 'rollup' }, + replace: { + VERSION: JSON.stringify(require('./package').version), + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-replace/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-replace/expected/index.esm.js new file mode 100755 index 000000000..3bbfad94d --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-replace/expected/index.esm.js @@ -0,0 +1 @@ +console.log("0.1.0"); diff --git a/packages/father-build/src/fixtures/build/rollup-replace/package.json b/packages/father-build/src/fixtures/build/rollup-replace/package.json new file mode 100755 index 000000000..6a3252ea8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-replace/package.json @@ -0,0 +1,3 @@ +{ + "version": "0.1.0" +} diff --git a/packages/father-build/src/fixtures/build/rollup-replace/src/index.js b/packages/father-build/src/fixtures/build/rollup-replace/src/index.js new file mode 100755 index 000000000..2c9bf5559 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-replace/src/index.js @@ -0,0 +1,2 @@ + +console.log(VERSION); diff --git a/packages/father-build/src/fixtures/build/rollup-resolve-jsx/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/.fatherrc.js new file mode 100755 index 000000000..8b9450222 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-resolve-jsx/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/expected/index.esm.js new file mode 100755 index 000000000..949fb857b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/expected/index.esm.js @@ -0,0 +1,11 @@ +import React from 'react'; + +var Foo = (function () { + return /*#__PURE__*/React.createElement("h1", null, "Foo"); +}); + +var index = (function () { + return /*#__PURE__*/React.createElement(Foo, null); +}); + +export default index; diff --git a/packages/father-build/src/fixtures/build/rollup-resolve-jsx/package.json b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/package.json new file mode 100755 index 000000000..55ef290f1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "react": "16" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-resolve-jsx/src/Foo.jsx b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/src/Foo.jsx new file mode 100755 index 000000000..b518bbcb2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/src/Foo.jsx @@ -0,0 +1,2 @@ + +export default () =>

Foo

; diff --git a/packages/father-build/src/fixtures/build/rollup-resolve-jsx/src/index.js b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/src/index.js new file mode 100755 index 000000000..f61210cf6 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-resolve-jsx/src/index.js @@ -0,0 +1,3 @@ +import Foo from './Foo'; + +export default () => ; diff --git a/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/.fatherrc.js new file mode 100755 index 000000000..b3cf64724 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + runtimeHelpers: true, + esm: { type: 'rollup' }, + cjs: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/expected/index.esm.js new file mode 100755 index 000000000..1814cb26f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/expected/index.esm.js @@ -0,0 +1,17 @@ +import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck'; +import _createClass from '@babel/runtime/helpers/esm/createClass'; + +var A = /*#__PURE__*/function () { + function A() { + _classCallCheck(this, A); + } + + _createClass(A, [{ + key: "foo", + value: function foo() {} + }]); + + return A; +}(); + +new A().foo(); diff --git a/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/expected/index.js b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/expected/index.js new file mode 100755 index 000000000..73d0a72df --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/expected/index.js @@ -0,0 +1,38 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +var A = /*#__PURE__*/function () { + function A() { + _classCallCheck(this, A); + } + + _createClass(A, [{ + key: "foo", + value: function foo() {} + }]); + + return A; +}(); + +new A().foo(); diff --git a/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/package.json b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/package.json new file mode 100755 index 000000000..689bf9cfb --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@babel/runtime": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/src/index.js b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/src/index.js new file mode 100755 index 000000000..0cff149b2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-runtimeHelpers/src/index.js @@ -0,0 +1,6 @@ + +class A { + foo() {} +} + +(new A()).foo(); diff --git a/packages/father-build/src/fixtures/build/rollup-sass/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-sass/.fatherrc.js new file mode 100755 index 000000000..2f10183a3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-sass/.fatherrc.js @@ -0,0 +1,4 @@ + +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-sass/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-sass/expected/index.esm.js new file mode 100755 index 000000000..12763bf9a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-sass/expected/index.esm.js @@ -0,0 +1,31 @@ +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} + +var css_248z = ".a {\n color: green; }\n"; +styleInject(css_248z); + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-sass/src/foo.scss b/packages/father-build/src/fixtures/build/rollup-sass/src/foo.scss new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-sass/src/foo.scss @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-sass/src/index.js b/packages/father-build/src/fixtures/build/rollup-sass/src/index.js new file mode 100755 index 000000000..28c5d8eb5 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-sass/src/index.js @@ -0,0 +1,3 @@ +import './foo.scss'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-svgr/.umirc.library.js b/packages/father-build/src/fixtures/build/rollup-svgr/.umirc.library.js new file mode 100755 index 000000000..030fee174 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-svgr/.umirc.library.js @@ -0,0 +1,3 @@ +export default { + esm: { type: 'rollup' }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-svgr/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-svgr/expected/index.esm.js new file mode 100755 index 000000000..fbcd847e0 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-svgr/expected/index.esm.js @@ -0,0 +1,22 @@ +import React, { createElement } from 'react'; + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +var _ref = /*#__PURE__*/createElement("defs", null, /*#__PURE__*/createElement("style", null)); + +var _ref2 = /*#__PURE__*/createElement("path", { + d: "M656 512h160c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16H656c-8.8 0-16 7.2-16 16v22H346V320h86c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h86v378c0 17.7 14.3 32 32 32h314v22c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16H656c-8.8 0-16 7.2-16 16v22H346V474h294v22c0 8.8 7.2 16 16 16z" +}); + +function SvgMenu(props) { + return /*#__PURE__*/createElement("svg", _extends({ + className: "menu_svg__icon", + viewBox: "0 0 1024 1024", + width: 200, + height: 200 + }, props), _ref, _ref2); +} + +var svgUrl = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20standalone%3D%22no%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20t%3D%221558949630117%22%20class%3D%22icon%22%20style%3D%22%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20%20%20%20%20p-id%3D%2233994%22%20%20%20%20%20width%3D%22200%22%20height%3D%22200%22%3E%20%20%3Cdefs%3E%20%20%20%20%3Cstyle%20type%3D%22text%2Fcss%22%3E%3C%2Fstyle%3E%20%20%3C%2Fdefs%3E%20%20%3Cpath%20%20%20%20d%3D%22M656%20512h160c8.8%200%2016-7.2%2016-16v-96c0-8.8-7.2-16-16-16H656c-8.8%200-16%207.2-16%2016v22H346V320h86c8.8%200%2016-7.2%2016-16v-96c0-8.8-7.2-16-16-16H208c-8.8%200-16%207.2-16%2016v96c0%208.8%207.2%2016%2016%2016h86v378c0%2017.7%2014.3%2032%2032%2032h314v22c0%208.8%207.2%2016%2016%2016h160c8.8%200%2016-7.2%2016-16v-96c0-8.8-7.2-16-16-16H656c-8.8%200-16%207.2-16%2016v22H346V474h294v22c0%208.8%207.2%2016%2016%2016z%22%20%20%20%20p-id%3D%2233995%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E"; + +console.log(svgUrl, /*#__PURE__*/React.createElement(SvgMenu, null)); diff --git a/packages/father-build/src/fixtures/build/rollup-svgr/package.json b/packages/father-build/src/fixtures/build/rollup-svgr/package.json new file mode 100755 index 000000000..55ef290f1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-svgr/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "react": "16" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-svgr/src/index.jsx b/packages/father-build/src/fixtures/build/rollup-svgr/src/index.jsx new file mode 100755 index 000000000..769d90a58 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-svgr/src/index.jsx @@ -0,0 +1,3 @@ +import svgUrl, { ReactComponent as MenuComponent } from './menu.svg'; + +console.log(svgUrl, ); diff --git a/packages/father-build/src/fixtures/build/rollup-svgr/src/menu.svg b/packages/father-build/src/fixtures/build/rollup-svgr/src/menu.svg new file mode 100755 index 000000000..bd7bb1417 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-svgr/src/menu.svg @@ -0,0 +1,12 @@ + + + + + + + diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/.fatherrc.ts b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/.fatherrc.ts new file mode 100755 index 000000000..35309e6f8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/.fatherrc.ts @@ -0,0 +1,7 @@ +export default { + cjs: 'rollup', + esm: 'rollup', + typescriptOpts: { + useTsconfigDeclarationDir: true, + }, +}; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/index.esm.js new file mode 100755 index 000000000..a0ca5bfdf --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/index.esm.js @@ -0,0 +1,5 @@ +function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} + +export default foo; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/index.js b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/index.js new file mode 100755 index 000000000..39a5ac989 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/index.js @@ -0,0 +1,7 @@ +'use strict'; + +function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} + +module.exports = foo; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/type/index.d.ts b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/type/index.d.ts new file mode 100755 index 000000000..9eea9c0f1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/expected/type/index.d.ts @@ -0,0 +1,5 @@ +interface IOpts { + foo: boolean; +} +export default function foo(opts: IOpts): string; +export {}; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/src/index.ts b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/src/index.ts new file mode 100755 index 000000000..3a0363ce2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/src/index.ts @@ -0,0 +1,7 @@ +interface IOpts { + foo: boolean; +} + +export default function foo(opts: IOpts): string { + return opts.foo ? 'foo' : 'bar'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/tsconfig.json b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/tsconfig.json new file mode 100755 index 000000000..59dd44386 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "esnext", + "moduleResolution": "node", + "jsx": "preserve", + "esModuleInterop": true, + "declarationDir": "dist/type" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/typings.d.ts b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/typings.d.ts new file mode 100755 index 000000000..211708df8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript-declarationDir/typings.d.ts @@ -0,0 +1,7 @@ +declare module '*.less' { + interface IClassNames { + [className: string]: string; + } + const classNames: IClassNames; + export = classNames; +} diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/.fatherrc.ts b/packages/father-build/src/fixtures/build/rollup-typescript/.fatherrc.ts new file mode 100755 index 000000000..3e130204e --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/.fatherrc.ts @@ -0,0 +1,4 @@ +export default { + cjs: 'rollup', + esm: 'rollup', +}; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.d.ts b/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.d.ts new file mode 100755 index 000000000..9eea9c0f1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.d.ts @@ -0,0 +1,5 @@ +interface IOpts { + foo: boolean; +} +export default function foo(opts: IOpts): string; +export {}; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.esm.js b/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.esm.js new file mode 100755 index 000000000..a0ca5bfdf --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.esm.js @@ -0,0 +1,5 @@ +function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} + +export default foo; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.js b/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.js new file mode 100755 index 000000000..39a5ac989 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/expected/index.js @@ -0,0 +1,7 @@ +'use strict'; + +function foo(opts) { + return opts.foo ? 'foo' : 'bar'; +} + +module.exports = foo; diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/src/index.ts b/packages/father-build/src/fixtures/build/rollup-typescript/src/index.ts new file mode 100755 index 000000000..3a0363ce2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/src/index.ts @@ -0,0 +1,7 @@ +interface IOpts { + foo: boolean; +} + +export default function foo(opts: IOpts): string { + return opts.foo ? 'foo' : 'bar'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/tsconfig.json b/packages/father-build/src/fixtures/build/rollup-typescript/tsconfig.json new file mode 100755 index 000000000..d322bf935 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "esnext", + "moduleResolution": "node", + "jsx": "preserve", + "esModuleInterop": true + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-typescript/typings.d.ts b/packages/father-build/src/fixtures/build/rollup-typescript/typings.d.ts new file mode 100755 index 000000000..211708df8 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-typescript/typings.d.ts @@ -0,0 +1,7 @@ +declare module '*.less' { + interface IClassNames { + [className: string]: string; + } + const classNames: IClassNames; + export = classNames; +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-auto-name/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/.fatherrc.js new file mode 100755 index 000000000..da054b287 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + umd: { + minFile: false + }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-auto-name/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/expected/index.umd.js new file mode 100755 index 000000000..07691b4fa --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/expected/index.umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.fooBar = factory()); +}(this, (function () { 'use strict'; + + function index () { + return 'foo'; + } + + return index; + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-auto-name/package.json b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/package.json new file mode 100755 index 000000000..a02a5e12d --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/package.json @@ -0,0 +1,3 @@ +{ + "name": "@umi/foo-bar" +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-auto-name/src/index.js b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/src/index.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-auto-name/src/index.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/.fatherrc.js new file mode 100755 index 000000000..e1ea4fca3 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/.fatherrc.js @@ -0,0 +1,5 @@ + +export default { + extractCSS: true, + umd: {}, +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.css b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.css new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.css @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.js new file mode 100755 index 000000000..62e3a909f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.js @@ -0,0 +1,8 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + console.log('foo'); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.min.css b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.min.css new file mode 100755 index 000000000..de2080200 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.min.css @@ -0,0 +1 @@ +.a{color:green} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.min.js b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.min.js new file mode 100755 index 000000000..e383c2dd0 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/expected/index.umd.min.js @@ -0,0 +1 @@ +!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){"use strict";console.log("foo")})); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/src/foo.css b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/src/foo.css new file mode 100755 index 000000000..ec0af869a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/src/foo.css @@ -0,0 +1,2 @@ + +.a { color: green; } diff --git a/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/src/index.js b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/src/index.js new file mode 100755 index 000000000..9a761d97a --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-css-extract-minFile/src/index.js @@ -0,0 +1,3 @@ +import './foo.css'; + +console.log('foo'); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-globals/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-umd-globals/.fatherrc.js new file mode 100755 index 000000000..44cc7c460 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-globals/.fatherrc.js @@ -0,0 +1,9 @@ + +export default { + umd: { + minFile: false, + globals: { + foo: '$', + }, + }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-globals/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-globals/expected/index.umd.js new file mode 100755 index 000000000..07054a168 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-globals/expected/index.umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('foo')) : + typeof define === 'function' && define.amd ? define(['foo'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.$)); +}(this, (function (foo) { 'use strict'; + + function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + + var foo__default = /*#__PURE__*/_interopDefaultLegacy(foo); + + foo__default['default'].bar(); + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-globals/package.json b/packages/father-build/src/fixtures/build/rollup-umd-globals/package.json new file mode 100755 index 000000000..7390bd3d2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-globals/package.json @@ -0,0 +1,5 @@ +{ + "peerDependencies": { + "foo": "0.1.0" + } +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-globals/src/index.js b/packages/father-build/src/fixtures/build/rollup-umd-globals/src/index.js new file mode 100755 index 000000000..5a079bee1 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-globals/src/index.js @@ -0,0 +1,3 @@ +import foo from 'foo'; + +foo.bar(); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-name/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-umd-name/.fatherrc.js new file mode 100755 index 000000000..be174297f --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-name/.fatherrc.js @@ -0,0 +1,7 @@ + +export default { + umd: { + minFile: false, + name: 'foo', + }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-name/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-name/expected/index.umd.js new file mode 100755 index 000000000..0d2fbbcec --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-name/expected/index.umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.foo = factory()); +}(this, (function () { 'use strict'; + + function index () { + return 'foo'; + } + + return index; + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-name/src/index.js b/packages/father-build/src/fixtures/build/rollup-umd-name/src/index.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-name/src/index.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-overrides/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-umd-overrides/.fatherrc.js new file mode 100755 index 000000000..242848d42 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-overrides/.fatherrc.js @@ -0,0 +1,18 @@ + +export default { + entry: [ + 'src/index.js', + 'src/fetch.js', + ], + umd: { + minFile: false, + name: 'foo', + }, + overridesByEntry: { + 'src/fetch.js': { + umd: { + name: 'foo.fetch', + }, + }, + }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-overrides/expected/fetch.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-overrides/expected/fetch.umd.js new file mode 100755 index 000000000..42b7f10ee --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-overrides/expected/fetch.umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.foo = global.foo || {}, global.foo.fetch = factory())); +}(this, (function () { 'use strict'; + + function fetch () { + return 'foo.fetch'; + } + + return fetch; + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-overrides/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-overrides/expected/index.umd.js new file mode 100755 index 000000000..0d2fbbcec --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-overrides/expected/index.umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.foo = factory()); +}(this, (function () { 'use strict'; + + function index () { + return 'foo'; + } + + return index; + +}))); diff --git a/packages/father-build/src/fixtures/build/rollup-umd-overrides/src/fetch.js b/packages/father-build/src/fixtures/build/rollup-umd-overrides/src/fetch.js new file mode 100755 index 000000000..3fdd6c676 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-overrides/src/fetch.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo.fetch'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-overrides/src/index.js b/packages/father-build/src/fixtures/build/rollup-umd-overrides/src/index.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-overrides/src/index.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/.fatherrc.js b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/.fatherrc.js new file mode 100755 index 000000000..ff17b2079 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/.fatherrc.js @@ -0,0 +1,8 @@ + +export default { + umd: { + minFile: false, + name: 'foo', + sourcemap: true, + }, +} diff --git a/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/expected/index.umd.js b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/expected/index.umd.js new file mode 100755 index 000000000..04e44df50 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/expected/index.umd.js @@ -0,0 +1,14 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.foo = factory()); +}(this, (function () { 'use strict'; + + function index () { + return 'foo'; + } + + return index; + +}))); +//# sourceMappingURL=index.umd.js.map diff --git a/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/expected/index.umd.js.map b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/expected/index.umd.js.map new file mode 100755 index 000000000..bf6d50af4 --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/expected/index.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.umd.js","sources":["../src/index.js"],"sourcesContent":["\nexport default function () {\n return 'foo';\n}\n"],"names":[],"mappings":";;;;;;EACe,kBAAY;EACzB,SAAO,KAAP;EACD;;;;;;;;"} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/src/index.js b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/src/index.js new file mode 100755 index 000000000..8fcf68e1b --- /dev/null +++ b/packages/father-build/src/fixtures/build/rollup-umd-sourcemap/src/index.js @@ -0,0 +1,4 @@ + +export default function () { + return 'foo'; +} diff --git a/packages/father-build/src/fixtures/build/target-node-version/.fatherrc.js b/packages/father-build/src/fixtures/build/target-node-version/.fatherrc.js new file mode 100755 index 000000000..41a0b5982 --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node-version/.fatherrc.js @@ -0,0 +1,7 @@ + +export default { + cjs: 'babel', + esm: 'babel', + target: 'node', + nodeVersion: 8, +} diff --git a/packages/father-build/src/fixtures/build/target-node-version/expected/es/index.js b/packages/father-build/src/fixtures/build/target-node-version/expected/es/index.js new file mode 100755 index 000000000..ae6a5bdb2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node-version/expected/es/index.js @@ -0,0 +1,4 @@ +const foo = 'bar'; +export default async function () { + return foo; +} \ No newline at end of file diff --git a/packages/father-build/src/fixtures/build/target-node-version/src/index.js b/packages/father-build/src/fixtures/build/target-node-version/src/index.js new file mode 100755 index 000000000..8ab0b3a2d --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node-version/src/index.js @@ -0,0 +1,6 @@ + +const foo = 'bar'; + +export default async function() { + return foo; +} diff --git a/packages/father-build/src/fixtures/build/target-node/.fatherrc.js b/packages/father-build/src/fixtures/build/target-node/.fatherrc.js new file mode 100755 index 000000000..a56516e62 --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node/.fatherrc.js @@ -0,0 +1,6 @@ + +export default { + cjs: 'rollup', + esm: 'rollup', + target: 'node', +} diff --git a/packages/father-build/src/fixtures/build/target-node/expected/index.esm.js b/packages/father-build/src/fixtures/build/target-node/expected/index.esm.js new file mode 100755 index 000000000..3199bfb84 --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node/expected/index.esm.js @@ -0,0 +1,6 @@ +var foo = 'bar'; +function index () { + return foo; +} + +export default index; diff --git a/packages/father-build/src/fixtures/build/target-node/expected/index.js b/packages/father-build/src/fixtures/build/target-node/expected/index.js new file mode 100755 index 000000000..b1ccfd8a2 --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node/expected/index.js @@ -0,0 +1,8 @@ +'use strict'; + +const foo = 'bar'; +function index () { + return foo; +} + +module.exports = index; diff --git a/packages/father-build/src/fixtures/build/target-node/src/index.js b/packages/father-build/src/fixtures/build/target-node/src/index.js new file mode 100755 index 000000000..1354e696b --- /dev/null +++ b/packages/father-build/src/fixtures/build/target-node/src/index.js @@ -0,0 +1,6 @@ + +const foo = 'bar'; + +export default function() { + return foo; +} diff --git a/packages/father-build/src/getBabelConfig.ts b/packages/father-build/src/getBabelConfig.ts new file mode 100755 index 000000000..57ce06949 --- /dev/null +++ b/packages/father-build/src/getBabelConfig.ts @@ -0,0 +1,95 @@ +import { extname } from 'path'; +import { ModuleFormat } from 'rollup'; + +interface IGetBabelConfigOpts { + target: 'browser' | 'node'; + type?: ModuleFormat; + typescript?: boolean; + runtimeHelpers?: boolean; + filePath?: string; + browserFiles?: { + [value: string]: any; + }; + nodeVersion?: number; + nodeFiles?: { + [value: string]: any; + }; + lazy?: boolean; + lessInBabelMode?: boolean|{ + paths?: any[]; + plugins?: any[]; + }; +} + +function transformImportLess2Css() { + return { + name: 'transform-import-less-to-css', + visitor: { + ImportDeclaration(path, source) { + const re = /\.less$/; + if(re.test(path.node.source.value)){ + path.node.source.value = path.node.source.value.replace(re, '.css'); + } + } + } + } +} + +export default function(opts: IGetBabelConfigOpts) { + const { target, typescript, type, runtimeHelpers, filePath, browserFiles, nodeFiles, nodeVersion, lazy, lessInBabelMode } = opts; + let isBrowser = target === 'browser'; + // rollup 场景下不会传入 filePath + if (filePath) { + if (extname(filePath) === '.tsx' || extname(filePath) === '.jsx') { + isBrowser = true; + } else { + if (isBrowser) { + if (nodeFiles.includes(filePath)) isBrowser = false; + } else { + if (browserFiles.includes(filePath)) isBrowser = true; + } + } + } + const targets = isBrowser ? { browsers: ['last 2 versions', 'IE 10'] } : { node: nodeVersion || 6 }; + + return { + opts: { + presets: [ + ...(typescript ? [require.resolve('@babel/preset-typescript')] : []), + [require.resolve('@babel/preset-env'), { + targets, + modules: type === 'esm' ? false : 'auto' + }], + ...(isBrowser ? [require.resolve('@babel/preset-react')] : []), + ], + plugins: [ + ...((type === 'cjs' && lazy && !isBrowser) + ? [[require.resolve('@babel/plugin-transform-modules-commonjs'), { + lazy: true, + }]] + : []), + ...(lessInBabelMode ? [transformImportLess2Css] : []), + require.resolve('babel-plugin-react-require'), + require.resolve('@babel/plugin-syntax-dynamic-import'), + require.resolve('@babel/plugin-proposal-export-default-from'), + require.resolve('@babel/plugin-proposal-export-namespace-from'), + require.resolve('@babel/plugin-proposal-do-expressions'), + require.resolve('@babel/plugin-proposal-nullish-coalescing-operator'), + require.resolve('@babel/plugin-proposal-optional-chaining'), + [require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }], + [require.resolve('@babel/plugin-proposal-class-properties'), { loose: true }], + ...(runtimeHelpers + ? [[require.resolve('@babel/plugin-transform-runtime'), { + useESModules: isBrowser && (type === 'esm'), + version: require('@babel/runtime/package.json').version, + }]] + : []), + ...(process.env.COVERAGE + ? [require.resolve('babel-plugin-istanbul')] + : [] + ) + ], + }, + isBrowser, + }; +} diff --git a/packages/father-build/src/getRollupConfig.ts b/packages/father-build/src/getRollupConfig.ts new file mode 100755 index 000000000..2544c32dc --- /dev/null +++ b/packages/father-build/src/getRollupConfig.ts @@ -0,0 +1,318 @@ +import { existsSync } from 'fs' +import { basename, extname, join } from 'path'; +import { ModuleFormat, RollupOptions } from 'rollup'; +import url from '@rollup/plugin-url'; +import json from '@rollup/plugin-json'; +import replace from '@rollup/plugin-replace'; +import commonjs from '@rollup/plugin-commonjs'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import inject, { RollupInjectOptions } from '@rollup/plugin-inject'; +import babel, { RollupBabelInputPluginOptions } from '@rollup/plugin-babel'; +import postcss from 'rollup-plugin-postcss'; +import { terser } from 'rollup-plugin-terser'; +import typescript2 from 'rollup-plugin-typescript2'; +import { camelCase } from 'lodash'; +import tempDir from 'temp-dir'; +import autoprefixer from 'autoprefixer'; +import NpmImport from 'less-plugin-npm-import'; +import svgr from '@svgr/rollup'; +import getBabelConfig from './getBabelConfig'; +import { IBundleOptions } from './types'; + +interface IGetRollupConfigOpts { + cwd: string; + rootPath: string; + entry: string; + type: ModuleFormat; + importLibToEs?: boolean; + bundleOpts: IBundleOptions; +} + +interface IPkg { + dependencies?: Object; + peerDependencies?: Object; + name?: string; +} + +export default function(opts: IGetRollupConfigOpts): RollupOptions[] { + const { type, entry, cwd, rootPath, importLibToEs, bundleOpts } = opts; + const { + umd, + esm, + cjs, + file, + target = 'browser', + extractCSS = false, + injectCSS = true, + cssModules: modules, + extraPostCSSPlugins = [], + extraBabelPresets = [], + extraBabelPlugins = [], + extraRollupPlugins = [], + autoprefixer: autoprefixerOpts, + include = /node_modules/, + runtimeHelpers: runtimeHelpersOpts, + replace: replaceOpts, + inject: injectOpts, + extraExternals = [], + externalsExclude = [], + nodeVersion, + typescriptOpts, + nodeResolveOpts = {}, + disableTypeCheck, + lessInRollupMode = {}, + sassInRollupMode = {}, + } = bundleOpts; + const entryExt = extname(entry); + const name = file || basename(entry, entryExt); + const isTypeScript = entryExt === '.ts' || entryExt === '.tsx'; + const extensions = ['.js', '.jsx', '.ts', '.tsx', '.es6', '.es', '.mjs']; + + let pkg = {} as IPkg; + try { + pkg = require(join(cwd, 'package.json')); // eslint-disable-line + } catch (e) {} + + // cjs 不给浏览器用,所以无需 runtimeHelpers + const runtimeHelpers = type === 'cjs' ? false : runtimeHelpersOpts; + const babelOpts = { + ...(getBabelConfig({ + type, + target: type === 'esm' ? 'browser' : target, + // watch 模式下有几率走的 babel?原因未知。 + // ref: https://github.com/umijs/father/issues/158 + typescript: true, + runtimeHelpers, + nodeVersion, + }).opts), + // ref: https://github.com/rollup/plugins/tree/master/packages/babel#babelhelpers + babelHelpers: (runtimeHelpers ? 'runtime' : 'bundled') as RollupBabelInputPluginOptions['babelHelpers'], + exclude: /\/node_modules\//, + babelrc: false, + // ref: https://github.com/rollup/rollup-plugin-babel#usage + extensions, + }; + if (importLibToEs && type === 'esm') { + babelOpts.plugins.push(require.resolve('../lib/importLibToEs')); + } + babelOpts.presets.push(...extraBabelPresets); + babelOpts.plugins.push(...extraBabelPlugins); + + // rollup configs + const input = join(cwd, entry); + const format = type; + + // ref: https://rollupjs.org/guide/en#external + // 潜在问题:引用包的子文件时会报 warning,比如 @babel/runtime/helpers/esm/createClass + // 解决方案:可以用 function 处理 + const external = [ + ...Object.keys(pkg.dependencies || {}), + ...Object.keys(pkg.peerDependencies || {}), + ...extraExternals, + ]; + // umd 只要 external peerDependencies + const externalPeerDeps = [ + ...Object.keys(pkg.peerDependencies || {}), + ...extraExternals, + ]; + + function getPkgNameByid(id) { + const splitted = id.split('/'); + // @ 和 @tmp 是为了兼容 umi 的逻辑 + if (id.charAt(0) === '@' && splitted[0] !== '@' && splitted[0] !== '@tmp') { + return splitted + .slice(0, 2) + .join('/'); + } else { + return id.split('/')[0]; + } + } + + function testExternal(pkgs, excludes, id) { + if (excludes.includes(id)) { + return false; + } + return pkgs.includes(getPkgNameByid(id)); + } + + const terserOpts = { + compress: { + pure_getters: true, + unsafe: true, + unsafe_comps: true, + warnings: false, + }, + }; + + function getPlugins(opts = {} as { minCSS: boolean; }) { + const { minCSS } = opts; + return [ + url(), + svgr(), + postcss({ + extract: extractCSS, + inject: injectCSS, + modules, + // modules => all .less will convert into css modules + ...(modules ? { autoModules: false } : {}), + minimize: !!minCSS, + use: { + less: { + plugins: [new NpmImport({ prefix: '~' })], + javascriptEnabled: true, + ...lessInRollupMode + }, + sass: { + ...sassInRollupMode, + }, + stylus: false, + }, + plugins: [autoprefixer({ + // https://github.com/postcss/autoprefixer/issues/776 + remove: false, + ...autoprefixerOpts, + }), ...extraPostCSSPlugins], + }), + ...(injectOpts ? [inject(injectOpts as RollupInjectOptions)] : []), + ...(replaceOpts && Object.keys(replaceOpts || {}).length ? [replace(replaceOpts)] : []), + nodeResolve({ + mainFields: ['module', 'jsnext:main', 'main'], + extensions, + ...nodeResolveOpts, + }), + ...(isTypeScript + ? [ + typescript2({ + cwd, + // @see https://github.com/umijs/father/issues/61#issuecomment-544822774 + clean: true, + cacheRoot: `${tempDir}/.rollup_plugin_typescript2_cache`, + // 支持往上找 tsconfig.json + // 比如 lerna 的场景不需要每个 package 有个 tsconfig.json + tsconfig: [join(cwd, 'tsconfig.json'), join(rootPath, 'tsconfig.json')].find(existsSync), + tsconfigDefaults: { + compilerOptions: { + // Generate declaration files by default + declaration: true, + }, + }, + tsconfigOverride: { + compilerOptions: { + // Support dynamic import + target: 'esnext', + }, + }, + check: !disableTypeCheck, + ...(typescriptOpts || {}), + }), + ] + : []), + babel(babelOpts), + json(), + ...(extraRollupPlugins || []), + ]; + } + + switch (type) { + case 'esm': + return [ + { + input, + output: { + format, + file: join(cwd, `dist/${(esm && (esm as any).file) || `${name}.esm`}.js`), + }, + plugins: [...getPlugins(), ...(esm && (esm as any).minify ? [terser(terserOpts)] : [])], + external: testExternal.bind(null, external, externalsExclude), + }, + ...(esm && (esm as any).mjs + ? [ + { + input, + output: { + format, + file: join(cwd, `dist/${(esm && (esm as any).file) || `${name}`}.mjs`), + }, + plugins: [ + ...getPlugins(), + replace({ + 'process.env.NODE_ENV': JSON.stringify('production'), + }), + terser(terserOpts), + ], + external: testExternal.bind(null, externalPeerDeps, externalsExclude), + }, + ] + : []), + ]; + + case 'cjs': + return [ + { + input, + output: { + format, + file: join(cwd, `dist/${(cjs && (cjs as any).file) || name}.js`), + }, + plugins: [...getPlugins(), ...(cjs && (cjs as any).minify ? [terser(terserOpts)] : [])], + external: testExternal.bind(null, external, externalsExclude), + }, + ]; + + case 'umd': + // Add umd related plugins + const extraUmdPlugins = [ + commonjs({ + include, + // namedExports options has been remove from https://github.com/rollup/plugins/pull/149 + }), + ]; + + return [ + { + input, + output: { + format, + sourcemap: umd && umd.sourcemap, + file: join(cwd, `dist/${(umd && umd.file) || `${name}.umd`}.js`), + globals: umd && umd.globals, + name: (umd && umd.name) || (pkg.name && camelCase(basename(pkg.name))), + }, + plugins: [ + ...getPlugins(), + ...extraUmdPlugins, + replace({ + 'process.env.NODE_ENV': JSON.stringify('development'), + }), + ], + external: testExternal.bind(null, externalPeerDeps, externalsExclude), + }, + ...(umd && umd.minFile === false + ? [] + : [ + { + input, + output: { + format, + sourcemap: umd && umd.sourcemap, + file: join(cwd, `dist/${(umd && umd.file) || `${name}.umd`}.min.js`), + globals: umd && umd.globals, + name: (umd && umd.name) || (pkg.name && camelCase(basename(pkg.name))), + }, + plugins: [ + ...getPlugins({ minCSS: true }), + ...extraUmdPlugins, + replace({ + 'process.env.NODE_ENV': JSON.stringify('production'), + }), + terser(terserOpts), + ], + external: testExternal.bind(null, externalPeerDeps, externalsExclude), + }, + ]), + ]; + + default: + throw new Error(`Unsupported type ${type}`); + } +} diff --git a/packages/father-build/src/getUserConfig.ts b/packages/father-build/src/getUserConfig.ts new file mode 100755 index 000000000..6846f1419 --- /dev/null +++ b/packages/father-build/src/getUserConfig.ts @@ -0,0 +1,71 @@ +import AJV from 'ajv'; +import slash from 'slash2'; +import { relative } from 'path'; +import signale from 'signale'; +import schema from './schema'; +import { getExistFile } from './utils'; +import { IBundleOptions } from './types'; + +function testDefault(obj) { + return obj.default || obj; +} + +export const CONFIG_FILES = [ + '.fatherrc.js', + '.fatherrc.jsx', + '.fatherrc.ts', + '.fatherrc.tsx', + '.umirc.library.js', + '.umirc.library.jsx', + '.umirc.library.ts', + '.umirc.library.tsx', +]; +const CLASSES = { + Function: Function, +}; +const extendAjv = (ajv: AJV.Ajv) => { + ajv.addKeyword('instanceof', { + compile: function(schema: string) { + var Class = CLASSES[schema]; + return function(data: any) { + return data instanceof Class; + }; + } + }); + return ajv; +} +export default function({ cwd }): IBundleOptions { + const configFile = getExistFile({ + cwd, + files: CONFIG_FILES, + returnRelative: false, + }); + + if (configFile) { + if (configFile.includes('.umirc.library.')) { + signale.warn(`.umirc.library.js is deprecated, please use .fatherrc.js instead.`); + } + + const userConfig = testDefault(require(configFile)); // eslint-disable-line + const userConfigs = Array.isArray(userConfig) ? userConfig : [userConfig]; + userConfigs.forEach(userConfig => { + const ajv = extendAjv(new AJV({ allErrors: true })); + const isValid = ajv.validate(schema, userConfig); + if (!isValid) { + const errors = ajv.errors.map(({ dataPath, message }, index) => { + return `${index + 1}. ${dataPath}${dataPath ? ' ' : ''}${message}`; + }); + throw new Error( + ` +Invalid options in ${slash(relative(cwd, configFile))} + +${errors.join('\n')} +`.trim(), + ); + } + }); + return userConfig; + } else { + return {}; + } +} diff --git a/packages/father-build/src/importLibToEs.js b/packages/father-build/src/importLibToEs.js new file mode 100755 index 000000000..e7d278a64 --- /dev/null +++ b/packages/father-build/src/importLibToEs.js @@ -0,0 +1,26 @@ +import { join, dirname } from 'path'; +import fs from 'fs'; + +const cwd = process.cwd(); + +function replacePath(path) { + if (path.node.source && /\/lib\//.test(path.node.source.value)) { + const esModule = path.node.source.value.replace('/lib/', '/es/'); + const esPath = dirname(join(cwd, `node_modules/${esModule}`)); + if (fs.existsSync(esPath)) { + console.log(`[es build] replace ${path.node.source.value} with ${esModule}`); + path.node.source.value = esModule; + } + } +} + +function replaceLib() { + return { + visitor: { + ImportDeclaration: replacePath, + ExportNamedDeclaration: replacePath, + }, + }; +} + +export default replaceLib; diff --git a/packages/father-build/src/index.ts b/packages/father-build/src/index.ts new file mode 100755 index 000000000..1bff2b7bf --- /dev/null +++ b/packages/father-build/src/index.ts @@ -0,0 +1,3 @@ + +import build from './build'; +export default build; diff --git a/packages/father-build/src/normalizeBundleOpts.test.ts b/packages/father-build/src/normalizeBundleOpts.test.ts new file mode 100755 index 000000000..54bfdbe23 --- /dev/null +++ b/packages/father-build/src/normalizeBundleOpts.test.ts @@ -0,0 +1,53 @@ +import normalizeBundleOpts from './normalizeBundleOpts'; + +test('normal', () => { + expect( + normalizeBundleOpts('a', { + umd: { name: 'foo' }, + overridesByEntry: { + a: { umd: { name: 'bar' } }, + }, + }), + ).toEqual({ + umd: { name: 'bar' }, + }); +}); + +test('ignore ./ prefix in entry', () => { + expect( + normalizeBundleOpts('./a', { + umd: { name: 'foo' }, + overridesByEntry: { + a: { umd: { name: 'bar' } }, + }, + }), + ).toEqual({ + umd: { name: 'bar' }, + }); +}); + +test('ignore ./ prefix in overridesByEntry', () => { + expect( + normalizeBundleOpts('a', { + umd: { name: 'foo' }, + overridesByEntry: { + './a': { umd: { name: 'bar' } }, + }, + }), + ).toEqual({ + umd: { name: 'bar' }, + }); +}); + +test('deep merge', () => { + expect( + normalizeBundleOpts('a', { + umd: { minFile: false, name: 'foo' }, + overridesByEntry: { + a: { umd: { name: 'bar' } }, + }, + }), + ).toEqual({ + umd: { minFile: false, name: 'bar' }, + }); +}); diff --git a/packages/father-build/src/normalizeBundleOpts.ts b/packages/father-build/src/normalizeBundleOpts.ts new file mode 100755 index 000000000..1767ff9ce --- /dev/null +++ b/packages/father-build/src/normalizeBundleOpts.ts @@ -0,0 +1,24 @@ +import { cloneDeep, merge } from 'lodash'; +import { IBundleOptions } from './types'; + +function stripDotSlashPrefix(path) { + return path.replace(/^\.\//, ''); +} + +export default function(entry: string, opts: IBundleOptions): IBundleOptions { + let clone = cloneDeep(opts); + const stripedEntry = stripDotSlashPrefix(entry); + if (clone.overridesByEntry) { + Object.keys(clone.overridesByEntry).forEach(key => { + const stripedKey = stripDotSlashPrefix(key); + if (stripedKey !== key) { + clone.overridesByEntry[stripedKey] = clone.overridesByEntry[key]; + } + }); + if (clone.overridesByEntry[stripedEntry]) { + clone = merge(clone, clone.overridesByEntry[stripedEntry]); + } + delete clone.overridesByEntry; + } + return clone; +} diff --git a/packages/father-build/src/randomColor.ts b/packages/father-build/src/randomColor.ts new file mode 100755 index 000000000..bf44d2527 --- /dev/null +++ b/packages/father-build/src/randomColor.ts @@ -0,0 +1,34 @@ +import chalk from 'chalk'; + +const colors = [ + 'red', + 'green', + 'yellow', + 'blue', + 'magenta', + 'cyan', + 'gray', + 'redBright', + 'greenBright', + 'yellowBright', + 'blueBright', + 'magentaBright', + 'cyanBright', +]; + +let index = 0; +const cache = {}; + +export default function (pkg) { + if (!cache[pkg]) { + const color = colors[index]; + let str = chalk[color].bold(pkg); + cache[pkg] = str; + if (index === colors.length - 1) { + index = 0; + } else { + index += 1; + } + } + return cache[pkg]; +} diff --git a/packages/father-build/src/registerBabel.ts b/packages/father-build/src/registerBabel.ts new file mode 100755 index 000000000..b2db93e80 --- /dev/null +++ b/packages/father-build/src/registerBabel.ts @@ -0,0 +1,23 @@ +import { join } from 'path'; +import slash from 'slash2'; +import getBabelConfig from './getBabelConfig'; + +interface IRegisterBabelOpts { + cwd: string; + only: string[]; +} + +export default function(opts: IRegisterBabelOpts) { + const { cwd, only } = opts; + const { opts: babelConfig } = getBabelConfig({ + target: 'node', + typescript: true, + }); + require('@babel/register')({ + ...babelConfig, + extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'], + only: only.map(file => slash(join(cwd, file))), + babelrc: false, + cache: false, + }); +} diff --git a/packages/father-build/src/rollup.ts b/packages/father-build/src/rollup.ts new file mode 100755 index 000000000..6c24ca218 --- /dev/null +++ b/packages/father-build/src/rollup.ts @@ -0,0 +1,66 @@ +import { ModuleFormat, rollup, watch } from 'rollup'; +import signale from 'signale'; +import getRollupConfig from './getRollupConfig'; +import { Dispose, IBundleOptions } from './types'; +import normalizeBundleOpts from './normalizeBundleOpts'; + +interface IRollupOpts { + cwd: string; + rootPath?: string; + entry: string | string[]; + type: ModuleFormat; + log: (string) => void; + bundleOpts: IBundleOptions; + watch?: boolean; + dispose?: Dispose[]; + importLibToEs?: boolean; +} + +async function build(entry: string, opts: IRollupOpts) { + const { cwd, rootPath, type, log, bundleOpts, importLibToEs, dispose } = opts; + const rollupConfigs = getRollupConfig({ + cwd, + rootPath:rootPath || cwd, + type, + entry, + importLibToEs, + bundleOpts: normalizeBundleOpts(entry, bundleOpts), + }); + + for (const rollupConfig of rollupConfigs) { + if (opts.watch) { + const watcher = watch([ + { + ...rollupConfig, + watch: {}, + }, + ]); + watcher.on('event', event => { + if (event.error) { + signale.error(event.error); + } else if (event.code === 'START') { + log(`[${type}] Rebuild since file changed`); + } + }); + process.once('SIGINT', () => { + watcher.close(); + }); + dispose?.push(() => watcher.close()); + } else { + const { output, ...input } = rollupConfig; + const bundle = await rollup(input); // eslint-disable-line + await bundle.write(output); // eslint-disable-line + } + } +} + +export default async function(opts: IRollupOpts) { + if (Array.isArray(opts.entry)) { + const { entry: entries } = opts; + for (const entry of entries) { + await build(entry, opts); + } + } else { + await build(opts.entry, opts); + } +} diff --git a/packages/father-build/src/schema.test.ts b/packages/father-build/src/schema.test.ts new file mode 100755 index 000000000..88ef8267c --- /dev/null +++ b/packages/father-build/src/schema.test.ts @@ -0,0 +1,38 @@ +import AJV from 'ajv'; +import schema from './schema'; + +const ajv = new AJV(); + +const successValidates = { + entry: ['a', ['a']], + file: ['a'], + esm: [false, true, { type: 'rollup' }, { type: 'babel' }, { file: 'a' }, { mjs: true }], + cjs: [false, true, { type: 'rollup' }, { type: 'babel' }, { file: 'a' }], + umd: [{ globals: {} }, { file: 'a' }, { name: 'a' }, { minFile: false }, { minFile: true }, { sourcemap: true }], + extraBabelPlugins: [[]], + extraBabelPresets: [[]], + extraPostCSSPlugins: [[]], + lessInRollupMode: [{}], + cssModules: [true, false, {}], + autoprefixer: [{}], + include: ['node_modules', /node_modules/], + nodeResolveOpts: [{}], + runtimeHelpers: [true, false], + target: ['node', 'browser'], + overridesByEntry: [{}], + doc: [{}], + typescriptOpts: [{}], + pkgs: [[]], +}; + +Object.keys(successValidates).forEach(key => { + test(key, () => { + successValidates[key].forEach(item => { + expect( + ajv.validate(schema, { + [key]: item, + }), + ).toEqual(true); + }); + }); +}); diff --git a/packages/father-build/src/schema.ts b/packages/father-build/src/schema.ts new file mode 100755 index 000000000..235faf05e --- /dev/null +++ b/packages/father-build/src/schema.ts @@ -0,0 +1,168 @@ +const noEmptyStr = { type: 'string', minLength: 1 }; + +export default { + type: 'object', + additionalProperties: false, + properties: { + entry: { + oneOf: [noEmptyStr, { type: 'array', items: noEmptyStr }], + }, + file: { type: 'string' }, + esm: { + oneOf: [ + noEmptyStr, + { type: 'boolean' }, + { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + pattern: '^(rollup|babel)$', + }, + file: noEmptyStr, + mjs: { type: 'boolean' }, + minify: { type: 'boolean' }, + importLibToEs: { + type: 'boolean', + }, + }, + }, + ], + }, + cjs: { + oneOf: [ + noEmptyStr, + { type: 'boolean' }, + { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + pattern: '^(rollup|babel)$', + }, + file: noEmptyStr, + minify: { type: 'boolean' }, + lazy: { type: 'boolean' }, + }, + }, + ], + }, + umd: { + oneOf: [ + { type: 'boolean' }, + { + type: 'object', + additionalProperties: false, + properties: { + globals: { type: 'object' }, + file: noEmptyStr, + name: noEmptyStr, + minFile: { type: 'boolean' }, + sourcemap: { + oneOf: [ + { type: 'boolean' }, + { type: 'string', pattern: '^(inline|hidden)$', }, + ] + }, + }, + }, + ], + }, + extraBabelPlugins: { + type: 'array', + }, + extraBabelPresets: { + type: 'array', + }, + extraPostCSSPlugins: { + type: 'array', + }, + extraRollupPlugins: { + type: 'array', + }, + extraExternals: { + type: 'array', + }, + externalsExclude: { + type: 'array', + }, + cssModules: { + oneOf: [{ type: 'boolean' }, { type: 'object' }], + }, + extractCSS: { + type: 'boolean', + }, + injectCSS: { + oneOf: [{ type: 'boolean' }, { instanceof: 'Function' }], + }, + autoprefixer: { + type: 'object', + }, + include: { + oneOf: [ + { type: 'string' }, + { type: 'object' }, + { type: 'array' }, + ] + }, + runtimeHelpers: { + type: 'boolean', + }, + overridesByEntry: { + type: 'object', + }, + nodeResolveOpts: { + type: 'object', + }, + target: noEmptyStr, + doc: { + type: 'object', + }, + replace: { + type: 'object', + }, + inject: { + type: 'object', + }, + lessInRollupMode: { + type: 'object' + }, + sassInRollupMode: { + type: 'object' + }, + lessInBabelMode: { + oneOf: [ + { type: 'boolean' }, + { type: 'object' }, + ], + }, + browserFiles: { + type: 'array', + }, + nodeFiles: { + type: 'array', + }, + nodeVersion: { + type: 'number', + }, + disableTypeCheck: { + type: 'boolean', + }, + preCommit: { + type: 'object', + additionalProperties: false, + properties: { + eslint: { type: 'boolean' }, + prettier: { type: 'boolean' }, + }, + }, + typescriptOpts: { + type: 'object', + }, + pkgs: { + type: 'array', + }, + }, +}; diff --git a/packages/father-build/src/types.d.ts b/packages/father-build/src/types.d.ts new file mode 100755 index 000000000..dbc4d9c1d --- /dev/null +++ b/packages/father-build/src/types.d.ts @@ -0,0 +1,96 @@ +export type BundleType = 'rollup' | 'babel'; + +interface IBundleTypeOutput { + type: BundleType; + file?: string; +} + +export interface ICjs extends IBundleTypeOutput { + minify?: boolean; + lazy?: boolean; +} + +interface IEsm extends IBundleTypeOutput { + mjs?: boolean; + minify?: boolean; + importLibToEs?: boolean; +} + +interface IStringObject { + [prop: string]: string; +} + +interface IUmd { + globals?: IStringObject; + name?: string; + minFile?: boolean; + file?: string; + sourcemap?: boolean; +} + +export interface IBundleOptions { + entry?: string | string[]; + file?: string; + esm?: BundleType | IEsm | false; + cjs?: BundleType | ICjs | false; + umd?: IUmd | false; + extraBabelPlugins?: any[]; + extraBabelPresets?: any[]; + extraPostCSSPlugins?: any[]; + extraRollupPlugins?: any[]; + extraExternals?: string[]; + externalsExclude?: string[]; + cssModules?: boolean | Object; + extractCSS?: boolean; + injectCSS?: boolean | ((varname: string, filename: string) => string); + inject?: Object; + autoprefixer?: Object; + include?: string | RegExp; + runtimeHelpers?: boolean; + target?: 'node' | 'browser'; + overridesByEntry?: { + [entry: string]: any; + }; + replace?: { + [value: string]: any; + }; + browserFiles?: { + [value: string]: any; + }; + nodeFiles?: { + [value: string]: any; + }; + nodeVersion?: number; + disableTypeCheck?: boolean; + preCommit?: { + eslint?: boolean; + prettier?: boolean; + }; + lessInBabelMode?: boolean | { + paths?: any[]; + plugins?: any[]; + }; + typescriptOpts?: { + [value: string]: any; + }; + nodeResolveOpts?: { + [value: string]: any; + }; + lessInRollupMode?: { + [opt: string]: any + }; + sassInRollupMode?: { + [opt: string]: any + }; + pkgs?: string[]; +} + +export interface IOpts { + cwd: string; + watch?: boolean; + buildArgs?: IBundleOptions; + rootConfig?: IBundleOptions; + rootPath?: string; +} + +export type Dispose = () => void; diff --git a/packages/father-build/src/utils.ts b/packages/father-build/src/utils.ts new file mode 100755 index 000000000..c00bcb91c --- /dev/null +++ b/packages/father-build/src/utils.ts @@ -0,0 +1,11 @@ +import { existsSync } from 'fs'; +import { join } from 'path'; + +export function getExistFile({ cwd, files, returnRelative }) { + for (const file of files) { + const absFilePath = join(cwd, file); + if (existsSync(absFilePath)) { + return returnRelative ? file : absFilePath; + } + } +} diff --git a/packages/father-build/template/tsconfig.json b/packages/father-build/template/tsconfig.json new file mode 100755 index 000000000..9a8969019 --- /dev/null +++ b/packages/father-build/template/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "module": "esnext", + "target": "esnext", + "moduleResolution": "node", + "jsx": "react" + }, + "include": ["./src", "./typings/"], + "typings": "./typings/index.d.ts", + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "tslint:latest", + "tslint-config-prettier" + ] +} diff --git a/packages/plugin-export/.npmignore b/packages/plugin-export/.npmignore deleted file mode 100644 index 461574b2f..000000000 --- a/packages/plugin-export/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -node_modules -*.log -docs -__tests__ -tsconfig.json -src -.fatherrc.ts \ No newline at end of file diff --git a/packages/plugin-export/package.json b/packages/plugin-export/package.json deleted file mode 100644 index c737c1623..000000000 --- a/packages/plugin-export/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@nocobase/plugin-export", - "version": "0.4.0-alpha.7", - "main": "lib/index.js", - "license": "MIT", - "devDependencies": { - "@types/node-xlsx": "^0.15.1" - }, - "dependencies": { - "@nocobase/actions": "^0.4.0-alpha.7", - "@nocobase/database": "^0.4.0-alpha.7", - "@nocobase/resourcer": "^0.4.0-alpha.7", - "node-xlsx": "^0.16.1" - }, - "peerDependencies": { - "@nocobase/plugin-collections": "*", - "@nocobase/plugin-permissions": "*" - } -} diff --git a/packages/plugin-export/src/actions/export.ts b/packages/plugin-export/src/actions/export.ts deleted file mode 100644 index ae4509757..000000000 --- a/packages/plugin-export/src/actions/export.ts +++ /dev/null @@ -1,50 +0,0 @@ -import xlsx from 'node-xlsx'; -import { actions } from '@nocobase/actions'; -import render from '../renders'; - -async function _export(ctx, next) { - await actions.common.list(ctx, async () => { - const { - db, - action: { - params: { - resourceName - } - }, - body, - } = ctx; - - const table = db.getTable(resourceName); - const tableOptions = table.getOptions(); - - const fields = body.rows.length - ? Object.keys(body.rows[0].get()) - .map(key => tableOptions.fields.find(({ name }) => name === key)) - .filter(item => item && !item.developerMode) - .sort((a, b) => a.sort - b.sort) - : []; - - const { rows, ranges } = render({ - fields, - data: body.rows - }, ctx); - - ctx.body = xlsx.build([{ - name: tableOptions.title, - data: rows, - options: { - '!merges': ranges - } - }]); - - ctx.set({ - 'Content-Type': 'application/octet-stream', - // to avoid "invalid character" error in header (RFC) - 'Content-Disposition': `attachment; filename=${encodeURI(tableOptions.title)}.xlsx` - }); - }); - - await next(); -} - -export default _export; diff --git a/packages/plugin-export/src/renders/index.ts b/packages/plugin-export/src/renders/index.ts deleted file mode 100644 index e5e104faf..000000000 --- a/packages/plugin-export/src/renders/index.ts +++ /dev/null @@ -1,162 +0,0 @@ -import * as renders from './renders'; - -function getInterfaceRender(name: string): Function { - return renders[name] || renders._; -} - -function renderHeader(params, ctx) { - const { - fields, - headers = [], - rowIndex = 0 - } = params; - - let { colIndex = 0 } = params; - - if (!headers[rowIndex]) { - headers.push([]); - } - const row = headers[rowIndex]; - - fields.forEach((field, i) => { - const nextColIndex = colIndex + i; - row.push({ - field, - rowIndex, - colIndex: nextColIndex - }); - if (field.interface === 'subTable') { - const subTable = ctx.db.getTable(field.target); - const subFields = subTable.getOptions().fields.filter(field => Boolean(field.__index)); - renderHeader({ - fields: subFields, - headers, - rowIndex: rowIndex + 1, - colIndex: nextColIndex - }, ctx); - colIndex += subFields.length; - } - }); - - Object.assign(params, { headers }); -} - -function renderRows({ fields, data }, ctx) { - return data.reduce((result, row) => { - const thisRow = []; - const rowIndex = 0; - let colOffset = 0; - fields.forEach((field, i) => { - if (!thisRow[rowIndex]) { - thisRow.push([]); - } - const cells = thisRow[rowIndex]; - if (field.interface !== 'subTable') { - const render = getInterfaceRender(field.interface); - cells.push({ - value: render(field, row), - rowIndex: result.length + rowIndex, - colIndex: i + colOffset - }); - return; - } - - const subTable = ctx.db.getTable(field.target); - const subFields = subTable.getOptions().fields.filter(item => Boolean(item.__index)); - const subRows = renderRows({ fields: subFields, data: row.get(field.name) || [] }, ctx); - - // const { rows: subRowGroups } = subTableRows; - subRows.forEach((cells, j) => { - const subRowIndex = rowIndex + j; - if (!thisRow[subRowIndex]) { - thisRow.push([]); - } - const subCells = thisRow[subRowIndex]; - subCells.push(...cells.map(cell => ({ - ...cell, - rowIndex: result.length + subRowIndex, - colIndex: cell.colIndex + i - }))); - }); - colOffset += subFields.length; - }); - - thisRow.forEach((cells) => { - cells.forEach(cell => { - const relRowIndex = cell.rowIndex - result.length; - Object.assign(cell, { - rowSpan: relRowIndex >= thisRow.length - 1 - || thisRow[relRowIndex + 1].find(item => item.colIndex === cell.colIndex) - ? 1 - : thisRow.length - relRowIndex - }); - }); - }); - - return result.concat(thisRow); - }, []); -} - -export default function({ fields, data }, ctx) { - const headers = []; - renderHeader({ - fields, - headers - }, ctx); - const ranges = []; - // 计算全表最大的列索引(由于无论如何最大列都是单个单元格,所以等价于长度) - const maxColIndex = Math.max(...headers.map(row => row[row.length - 1].colIndex)); - // 遍历所有单元格,计算需要合并的坐标范围 - headers.forEach((row, rowIndex) => { - row.forEach((cell, cellIndex) => { - // 跨行合并的行数为 - cell.rowSpan = cell.rowIndex >= headers.length - 1 - || headers[cell.rowIndex + 1].find(item => item.colIndex === cell.colIndex) - ? 1 - : headers.length - cell.rowIndex; - - const nextCell = headers.slice(0, rowIndex + 1) - .map(r => r.find(item => item.colIndex > cell.colIndex)) - .filter(c => Boolean(c)) - .reduce((min, c) => min && Math.min(min.colIndex, c.colIndex) === min.colIndex ? min : c, null); - cell.colSpan = nextCell - ? nextCell.colIndex - cell.colIndex - : maxColIndex - cell.colIndex + 1; - - if (cell.rowSpan > 1 || cell.colSpan > 1) { - ranges.push({ - s: { c: cell.colIndex, r: cell.rowIndex }, - e: { c: cell.colIndex + cell.colSpan - 1, r: cell.rowIndex + cell.rowSpan - 1 } - }); - } - }); - }); - - const rows = renderRows({ fields, data }, ctx) - .map(row => { - const cells = Array(maxColIndex).fill(null); - row.forEach(cell => { - cells.splice(cell.colIndex, 1, cell.value); - if (cell.rowSpan > 1) { - ranges.push({ - s: { c: cell.colIndex, r: cell.rowIndex + headers.length }, - e: { c: cell.colIndex, r: cell.rowIndex + cell.rowSpan - 1 + headers.length } - }); - } - }); - return cells; - }); - - return { - rows: [ - ...headers.map(row => { - // 补齐无数据单元格,以供合并 - const cells = Array(maxColIndex).fill(null); - row.forEach(cell => cells.splice(cell.colIndex, 1, cell.field.title)) - return cells; - }), - ...rows - ], - ranges - }; -} diff --git a/packages/plugin-export/src/renders/renders.ts b/packages/plugin-export/src/renders/renders.ts deleted file mode 100644 index a8da3a0e3..000000000 --- a/packages/plugin-export/src/renders/renders.ts +++ /dev/null @@ -1,60 +0,0 @@ -import moment from 'moment'; - -export function _(field, row) { - return row.get(field.name); -} - -export function datetime(field, row) { - const value = row.get(field.name); - return moment(value).format(field.showTime ? `${field.dateFormat} ${field.timeFormat}` : field.dateFormat); -} - -export function percent(field, row) { - const value = row.get(field.name); - return value && `${value}%`; -} - -export function boolean(field, row) { - const value = row.get(field.name); - // TODO(feature): i18n - return value ? '是' : '否'; -} - -export function select(field, row) { - const value = row.get(field.name); - const option = field.dataSource.find(item => item.value === value); - return option && option.label; -} - -export function multipleSelect(field, row) { - const values = row.get(field.name); - return values && values.map(value => { - const option = field.dataSource.find(item => item.value === value); - return option && option.label; - }); -} - -export const radio = select; - -export const checkboxes = multipleSelect; - -export function subTable(field, row) { - // TODO: need title field to be defined - return (row.get(field.name) || []).map(item => item[field.sourceKey]); -} - -export function linkTo(field, row) { - return (row.get(field.name) || []).map(item => item[field.labelField]); -} - -export function attachment(field, row) { - return (row.get(field.name) || []).map(item => item[field.url]).join(' '); -} - -export function chinaRegion(field, row) { - const value = row.get(field.name); - const values = (Array.isArray(value) ? value : [value]).sort((a, b) => - a.level !== b.level ? a.level - b.level : a.sort - b.sort, - ); - return values.map(item => item.name).join('/'); -} diff --git a/packages/plugin-export/src/server.ts b/packages/plugin-export/src/server.ts deleted file mode 100644 index 42c4db145..000000000 --- a/packages/plugin-export/src/server.ts +++ /dev/null @@ -1,28 +0,0 @@ -import Resourcer from '@nocobase/resourcer'; -import _export from './actions/export'; - -export const ACTION_NAME_EXPORT = 'export'; - -export default async function (options = {}) { - const resourcer: Resourcer = this.resourcer; - - resourcer.registerActionHandler(ACTION_NAME_EXPORT, _export); - - // TODO(temp): 继承 list 权限的临时写法 - resourcer.use(async (ctx, next) => { - if (ctx.action.params.actionName === ACTION_NAME_EXPORT) { - ctx.action.mergeParams({ - actionName: 'list' - }); - - console.log('action name in export has been rewritten to:', ctx.action.params.actionName); - - const permissionPlugin = ctx.app.getPluginInstance('@nocobase/plugin-permissions'); - if (permissionPlugin) { - return permissionPlugin.middleware(ctx, next); - } - } - - await next(); - }); -} diff --git a/packages/plugin-file-manager/package.json b/packages/plugin-file-manager/package.json index b8ba3d58a..6d19b596e 100644 --- a/packages/plugin-file-manager/package.json +++ b/packages/plugin-file-manager/package.json @@ -12,7 +12,6 @@ "koa-mount": "^4.0.0", "koa-static": "^5.0.0", "mime-match": "^1.0.2", - "mkdirp": "^1.0.4", "multer": "^1.4.2" }, "devDependencies": { diff --git a/packages/plugin-pages/src/actions/views_v2.ts b/packages/plugin-pages/src/actions/views_v2.ts index 4d50f3bb8..d104c7f11 100644 --- a/packages/plugin-pages/src/actions/views_v2.ts +++ b/packages/plugin-pages/src/actions/views_v2.ts @@ -62,13 +62,7 @@ export const getInfo = async (ctx: actions.Context, next) => { }); if (view && view.type === 'form') { - const count = await Field.count({ - where: { - name: 'status', - collection_name: view.collection_name, - } - }); - const statusable = !!count;//!!ctx.db.getTable(view.collection_name).getField('status'); + const statusable = !!ctx.db.getTable(view.collection_name).getField('status'); if (statusable) { view.setDataValue('statusable', statusable); } diff --git a/packages/plugin-pages/src/server.ts b/packages/plugin-pages/src/server.ts index c2f2b02be..7d486ac91 100644 --- a/packages/plugin-pages/src/server.ts +++ b/packages/plugin-pages/src/server.ts @@ -114,37 +114,6 @@ export default async function (options = {}) { } }); - resourcer.use(async (ctx, next) => { - await next(); - const { actionName, resourceName } = ctx.action.params; - if (actionName === 'get' && resourceName === 'views_v2') { - // console.log('ctx.body', ctx.body) - const View = database.getModel('views_v2'); - const view = ctx.body; - const details = view.get(`options.x-${view.type}-props.details`) || []; - for (const detail of details) { - if (!(detail.view && detail.view.id)) { - continue; - } - const detailView = await View.findOne(View.parseApiJson({ - filter: { - id: detail.view.id, - }, - fields: { - appends: ['collection', 'targetField', 'targetView'], - }, - })); - if (!detailView) { - continue; - } - detail.view = detailView; - } - if (details.length) { - view.set(`options.x-${view.type}-props.details`, details); - } - } - }); - resourcer.registerActionHandler('getCollection', getCollection); resourcer.registerActionHandler('getView', getView); resourcer.registerActionHandler('getPageInfo', getPageInfo); diff --git a/public/CNAME b/public/CNAME deleted file mode 100644 index 1764f3c94..000000000 --- a/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -docs.nocobase.com diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100755 index 000000000..d64e1af89 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "moduleResolution": "node", + "allowJs": true, + "module": "commonjs", + "target": "ES6" + } +} \ No newline at end of file diff --git a/tsconfig.jest.json b/tsconfig.jest.json new file mode 100755 index 000000000..06724af57 --- /dev/null +++ b/tsconfig.jest.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "jsx": "react", + "sourceMap": true, + "target": "ES6", + "paths": { + "@nocobase/*": [ + "./packages/*/src" + ] + } + }, + "exclude": [ + "./packages/*/esm", + "./packages/*/lib" + ] +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json old mode 100644 new mode 100755 index 0f9d501d4..b6a4b413c --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,23 @@ { "compilerOptions": { - "jsx": "react", - "lib": [ "es5", "es6" ], - "module": "commonjs", - "target": "es6", - "allowJs": true, - "allowSyntheticDefaultImports": true, - "declaration": true, - "resolveJsonModule": true, "esModuleInterop": true, + "moduleResolution": "node", + "jsx": "react", + "module": "commonjs", + "target": "ES6", + "allowJs": false, + "noUnusedLocals": false, + "removeComments": true, + "preserveConstEnums": true, "sourceMap": true, - "removeComments": false, - "baseUrl": "./", + "declaration": true, + "experimentalDecorators": true, + "downlevelIteration": true, + "baseUrl": ".", "paths": { + "@nocobase/*": [ + "./packages/*" + ] } - }, - "exclude": [ - "dotenv.js", - "jest.config.js", - "node_modules" - ] + } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b9e5654f3..6c82b69ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ahooksjs/use-request@^2.0.0", "@ahooksjs/use-request@^2.8.6": + version "2.8.6" + resolved "https://registry.npmjs.org/@ahooksjs/use-request/-/use-request-2.8.6.tgz#974d4e19c5f8f08c5d0bcfb03bb00a05d0de920b" + integrity sha512-oOxr55Vym5/yf7c7qs8l8PPrHf5zAKGvWDqpaXI3bhDADigFU7FID1WOivG8DggQ6DBmjXvffj7IC8ii+iJLhA== + dependencies: + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + "@ant-design/colors@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" @@ -14,7 +22,7 @@ resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c" integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== -"@ant-design/icons@^4.6.2": +"@ant-design/icons@^4.0.0", "@ant-design/icons@^4.1.0", "@ant-design/icons@^4.6.2": version "4.6.2" resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz#290f2e8cde505ab081fda63e511e82d3c48be982" integrity sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A== @@ -50,10 +58,31 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": - version "7.13.15" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" - integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8", "@babel/compat-data@^7.14.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" + integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== + +"@babel/core@7.12.10": + version "7.12.10" + resolved "https://registry.nlark.com/@babel/core/download/@babel/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha1-t5ouG59w7T2Eu/ttjE74JfYGvM0= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" "@babel/core@7.12.3": version "7.12.3" @@ -77,20 +106,40 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.13.15" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz#a6d40917df027487b54312202a06812c4f7792d0" - integrity sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ== +"@babel/core@7.4.5": + version "7.4.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.1.2", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.7.5": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz#47299ff3ec8d111b493f1a9d04bf88c04e728d88" + integrity sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.13" - "@babel/helper-module-transforms" "^7.13.14" - "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.15" + "@babel/generator" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.0" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.0" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.14" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -98,12 +147,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.12.1", "@babel/generator@^7.13.9", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2": - version "7.13.9" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== +"@babel/generator@^7.12.1", "@babel/generator@^7.12.10", "@babel/generator@^7.14.0", "@babel/generator@^7.4.0", "@babel/generator@^7.4.4", "@babel/generator@^7.7.2": + version "7.14.1" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz#1f99331babd65700183628da186f36f63d615c93" + integrity sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ== dependencies: - "@babel/types" "^7.13.0" + "@babel/types" "^7.14.1" jsesc "^2.5.1" source-map "^0.5.0" @@ -122,25 +171,26 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8": - version "7.13.13" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5" - integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ== +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.13.8": + version "7.13.16" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" + integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== dependencies: - "@babel/compat-data" "^7.13.12" + "@babel/compat-data" "^7.13.15" "@babel/helper-validator-option" "^7.12.17" browserslist "^4.14.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0": - version "7.13.11" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.4.4": + version "7.14.1" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz#1fe11b376f3c41650ad9fedc665b0068722ea76c" + integrity sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg== dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.12" "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-create-regexp-features-plugin@^7.12.13": @@ -189,40 +239,40 @@ "@babel/types" "^7.12.13" "@babel/helper-hoist-variables@^7.13.0": - version "7.13.0" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" - integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== + version "7.13.16" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" + integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== dependencies: - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.16" -"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": +"@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14": - version "7.13.14" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" - integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz#8fcf78be220156f22633ee204ea81f73f826a8ad" + integrity sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw== dependencies: "@babel/helper-module-imports" "^7.13.12" "@babel/helper-replace-supers" "^7.13.12" "@babel/helper-simple-access" "^7.13.12" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.0" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.13" - "@babel/types" "^7.13.14" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" @@ -236,7 +286,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== -"@babel/helper-remap-async-to-generator@^7.13.0": +"@babel/helper-remap-async-to-generator@^7.1.0", "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== @@ -255,7 +305,7 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" -"@babel/helper-simple-access@^7.12.1", "@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": +"@babel/helper-simple-access@^7.12.1", "@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== @@ -276,10 +326,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": version "7.12.17" @@ -296,28 +346,28 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helpers@^7.12.1", "@babel/helpers@^7.13.10": - version "7.13.10" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== +"@babel/helpers@^7.12.1", "@babel/helpers@^7.12.5", "@babel/helpers@^7.14.0", "@babel/helpers@^7.4.4": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" + integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== dependencies: "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.0" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.13.15", "@babel/parser@^7.4.3": - version "7.13.15" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8" - integrity sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.14.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.5": + version "7.14.1" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz#1bd644b5db3f5797c4479d89ec1817fe02b84c47" + integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" @@ -328,7 +378,16 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.13.12" -"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.13.15": +"@babel/plugin-proposal-async-generator-functions@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.13.15", "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.13.15" resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz#80e549df273a3b3050431b148c892491df1bcc5b" integrity sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA== @@ -345,7 +404,15 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0": +"@babel/plugin-proposal-class-properties@7.4.4": + version "7.4.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" + integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== @@ -353,6 +420,14 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-class-static-block@^7.13.11": + version "7.13.11" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz#6fcbba4a962702c17e5371a0c7b39afde186d703" + integrity sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-class-static-block" "^7.12.13" + "@babel/plugin-proposal-decorators@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" @@ -362,6 +437,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-decorators" "^7.12.1" +"@babel/plugin-proposal-decorators@7.4.4": + version "7.4.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" + integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.2.0" + "@babel/plugin-proposal-do-expressions@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.12.1.tgz#8d7f1bc532d8168147555c26e3db922cc0dfd2f8" @@ -370,6 +454,22 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-do-expressions" "^7.12.1" +"@babel/plugin-proposal-do-expressions@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.2.0.tgz#7abf56d27125f2b040c9cb0ab03119cf117128a9" + integrity sha512-2bWN48zQHf/W5T8XvemGQJSi8hzhIo7y4kv/RiA08UcMLQ73lkTknhlaFGf1HjCJzG8FGopgsq6pSe1C+10fPg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-do-expressions" "^7.2.0" + +"@babel/plugin-proposal-do-expressions@^7.0.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.14.0.tgz#8df85ab8d16437cd97ad1f6905d71f27b5f59721" + integrity sha512-a/H0V6MvPbj4iki1XQstRQhHGuUF27tyqrmLmzDTYhYdasz6rdcyf8dhGBZbMnuxKsYV5pPqUkc+xdzDUweRQw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-do-expressions" "^7.12.13" + "@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.13.8": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" @@ -386,6 +486,22 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-default-from" "^7.12.1" +"@babel/plugin-proposal-export-default-from@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz#737b0da44b9254b6152fe29bb99c64e5691f6f68" + integrity sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.2.0" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.13.tgz#f110284108a9b2b96f01b15b3be9e54c2610a989" + integrity sha512-idIsBT+DGXdOHL82U+8bwX4goHm/z10g8sGGrQroh+HCRcm7mDv/luaGdWJQMTuCX2FsdXS7X0Nyyzp4znAPJA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-default-from" "^7.12.13" + "@babel/plugin-proposal-export-namespace-from@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" @@ -394,6 +510,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.2.0.tgz#308fd4d04ff257fc3e4be090550840eeabad5dd9" + integrity sha512-DZUxbHYxQ5fUFIkMEnh75ogEdBLPfL+mQUqrO2hNY2LGm+tqFnxE924+mhAcCOh/8za8AaZsWHbq6bBoS3TAzA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-export-namespace-from" "^7.2.0" + "@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" @@ -402,7 +526,15 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.13.8": +"@babel/plugin-proposal-function-bind@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.2.0.tgz#94dc2cdc505cafc4e225c0014335a01648056bf7" + integrity sha512-qOFJ/eX1Is78sywwTxDcsntLOdb5ZlHVVqUz5xznq8ldAfOVIyZzp1JE2rzHnaksZIhrqMrwIpQL/qcEprnVbw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-function-bind" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.13.8", "@babel/plugin-proposal-json-strings@^7.2.0": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== @@ -426,6 +558,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@7.4.4": + version "7.4.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz#41c360d59481d88e0ce3a3f837df10121a769b39" + integrity sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" @@ -442,7 +582,15 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.13.8": +"@babel/plugin-proposal-object-rest-spread@7.4.4": + version "7.4.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.13.8", "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== @@ -453,7 +601,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.13.0" -"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.13.8": +"@babel/plugin-proposal-optional-catch-binding@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.13.8", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== @@ -470,6 +626,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz#ae454f4c21c6c2ce8cb2397dc332ae8b420c5441" + integrity sha512-ea3Q6edZC/55wEBVZAEz42v528VulyO0eir+7uky/sT4XRcdkWJcFi1aPtitTlwUzGnECWJNExWww1SStt+yWw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.2.0" + "@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" @@ -479,6 +643,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-proposal-pipeline-operator@7.3.2": + version "7.3.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.3.2.tgz#cc6be43c8455422f2faca39b9355558f0bff5a3f" + integrity sha512-wuzx8U/KZLJYoqU6joiaKY0PixHuYZ3Vxys+wPahNAZEEm+EDb1eTc19DuJob3BdxYSD9PWPbwyoRbhkdoYErg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-pipeline-operator" "^7.3.0" + "@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" @@ -487,6 +659,16 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" + integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-create-class-features-plugin" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" + "@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" @@ -495,7 +677,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -516,20 +698,34 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-decorators@^7.12.1": +"@babel/plugin-syntax-class-static-block@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" + integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-decorators@^7.12.1", "@babel/plugin-syntax-decorators@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-do-expressions@^7.12.1": +"@babel/plugin-syntax-do-expressions@^7.12.1", "@babel/plugin-syntax-do-expressions@^7.12.13", "@babel/plugin-syntax-do-expressions@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.12.13.tgz#ccc56d7badecf21a4c47a9f63ef0eeb9582f0306" integrity sha512-xm52bNA0O8QPH4rBXXJ/VLaQ6UGocUS3/fbgZO5z+KDUU7y8iFy8cnIwuRS/NNGjs18sOquzJfH0EasQv+F1oQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-dynamic-import@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import@7.8.3", "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -537,20 +733,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.12.1": +"@babel/plugin-syntax-export-default-from@^7.12.1", "@babel/plugin-syntax-export-default-from@^7.12.13", "@babel/plugin-syntax-export-default-from@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.13.tgz#3c807d37efaf0a806f1deb556ccb3b2f562ae9c2" integrity sha512-gVry0zqoums0hA+EniCYK3gABhjYSLX1dVuwYpPw9DrLNA4/GovXySHVg4FGRsZht09ON/5C2NVx3keq+qqVGQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": +"@babel/plugin-syntax-export-namespace-from@^7.2.0", "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-function-bind@^7.2.0": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.12.13.tgz#21e32e233c10258b0437ab8f9188ea9d8bddc0e5" + integrity sha512-8tkZMgbO5s/WkVnl04rBvULapZeXOHkaEW+w7oSzmEKwD6hDCtaAKouhgpoMa3uo8zC1HFpjlVh85PUVqvAxHw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -558,7 +761,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -579,7 +782,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.2.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -593,27 +796,41 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.2.0", "@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-pipeline-operator@^7.3.0": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.12.13.tgz#a6a01b9bd1b695945783ed8a6b66696ff179981c" + integrity sha512-IHs5FTRPJv7M7K0IurpuCTU1ILnhAXDi+YW8dIddJywIDWEYAaV90pSk1RnHRAyExn8szPER1SaraZdZLxKOGw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" + integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" @@ -628,14 +845,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0": +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0", "@babel/plugin-transform-arrow-functions@^7.2.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.13.0": +"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.13.0", "@babel/plugin-transform-async-to-generator@^7.4.4": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== @@ -644,21 +861,21 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" -"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13", "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== +"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.14.1", "@babel/plugin-transform-block-scoping@^7.4.4": + version "7.14.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz#ac1b3a8e3d8cbb31efc6b9be2f74eb9823b74ab2" + integrity sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.13.0": +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.13.0", "@babel/plugin-transform-classes@^7.4.4": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== @@ -671,17 +888,24 @@ "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.13.0": +"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.13.0", "@babel/plugin-transform-computed-properties@^7.2.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== +"@babel/plugin-transform-destructuring@7.4.4": + version "7.4.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.13.17", "@babel/plugin-transform-destructuring@^7.4.4": + version "7.13.17" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" + integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -693,14 +917,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": +"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13", "@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": +"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13", "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== @@ -708,14 +932,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.13.0": +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.13.0", "@babel/plugin-transform-for-of@^7.4.4": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": +"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13", "@babel/plugin-transform-function-name@^7.4.4": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== @@ -723,26 +947,26 @@ "@babel/helper-function-name" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": +"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13", "@babel/plugin-transform-literals@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13", "@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.13.0": - version "7.13.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.14.0", "@babel/plugin-transform-modules-amd@^7.2.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz#589494b5b290ff76cf7f59c798011f6d77026553" + integrity sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" @@ -756,17 +980,17 @@ "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.7.2": - version "7.13.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.14.0", "@babel/plugin-transform-modules-commonjs@^7.4.4", "@babel/plugin-transform-modules-commonjs@^7.7.2": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" + integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.13.8": +"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.13.8", "@babel/plugin-transform-modules-systemjs@^7.4.4": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== @@ -777,29 +1001,29 @@ "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.13.0": - version "7.13.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== +"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.14.0", "@babel/plugin-transform-modules-umd@^7.2.0": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" + integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13", "@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.13" -"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": +"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13", "@babel/plugin-transform-new-target@^7.4.4": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13", "@babel/plugin-transform-object-super@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== @@ -807,14 +1031,14 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.13.0": +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.13.0", "@babel/plugin-transform-parameters@^7.4.4": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13", "@babel/plugin-transform-property-literals@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== @@ -828,7 +1052,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== @@ -842,21 +1066,21 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.12.17" -"@babel/plugin-transform-react-jsx-self@^7.12.1": +"@babel/plugin-transform-react-jsx-self@^7.0.0", "@babel/plugin-transform-react-jsx-self@^7.12.1": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-react-jsx-source@^7.12.1": +"@babel/plugin-transform-react-jsx-source@^7.0.0", "@babel/plugin-transform-react-jsx-source@^7.12.1": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb" integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz#1df5dfaf0f4b784b43e96da6f28d630e775f68b3" integrity sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA== @@ -875,14 +1099,14 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.13.15": +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.13.15", "@babel/plugin-transform-regenerator@^7.4.5": version "7.13.15" resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": +"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13", "@babel/plugin-transform-reserved-words@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== @@ -899,14 +1123,24 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": +"@babel/plugin-transform-runtime@7.4.4": + version "7.4.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" + integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13", "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.13.0": +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.13.0", "@babel/plugin-transform-spread@^7.2.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== @@ -914,28 +1148,28 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": +"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13", "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.13.0": +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.13.0", "@babel/plugin-transform-template-literals@^7.4.4": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": +"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13", "@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-typescript@^7.12.1": +"@babel/plugin-transform-typescript@^7.12.1", "@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.3.2": version "7.13.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== @@ -951,7 +1185,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": +"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13", "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== @@ -1031,18 +1265,73 @@ core-js-compat "^3.6.2" semver "^5.5.0" -"@babel/preset-env@^7.9.5": - version "7.13.15" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.15.tgz#c8a6eb584f96ecba183d3d414a83553a599f478f" - integrity sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA== +"@babel/preset-env@7.4.5": + version "7.4.5" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" + integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-compilation-targets" "^7.13.13" + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.4.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.4.4" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.4" + "@babel/plugin-transform-classes" "^7.4.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.4" + "@babel/plugin-transform-function-name" "^7.4.4" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.4.4" + "@babel/plugin-transform-modules-systemjs" "^7.4.4" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" + "@babel/plugin-transform-new-target" "^7.4.4" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.4" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.5" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.4.4" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/types" "^7.4.4" + browserslist "^4.6.0" + core-js-compat "^3.1.1" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-env@^7.1.0", "@babel/preset-env@^7.9.5": + version "7.14.1" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz#b55914e2e68885ea03f69600b2d3537e54574a93" + integrity sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ== + dependencies: + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" "@babel/plugin-proposal-async-generator-functions" "^7.13.15" "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-class-static-block" "^7.13.11" "@babel/plugin-proposal-dynamic-import" "^7.13.8" "@babel/plugin-proposal-export-namespace-from" "^7.12.13" "@babel/plugin-proposal-json-strings" "^7.13.8" @@ -1053,9 +1342,11 @@ "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" "@babel/plugin-proposal-optional-chaining" "^7.13.12" "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-private-property-in-object" "^7.14.0" "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.12.13" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -1065,14 +1356,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" "@babel/plugin-syntax-top-level-await" "^7.12.13" "@babel/plugin-transform-arrow-functions" "^7.13.0" "@babel/plugin-transform-async-to-generator" "^7.13.0" "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.14.1" "@babel/plugin-transform-classes" "^7.13.0" "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.17" "@babel/plugin-transform-dotall-regex" "^7.12.13" "@babel/plugin-transform-duplicate-keys" "^7.12.13" "@babel/plugin-transform-exponentiation-operator" "^7.12.13" @@ -1080,10 +1372,10 @@ "@babel/plugin-transform-function-name" "^7.12.13" "@babel/plugin-transform-literals" "^7.12.13" "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/plugin-transform-modules-amd" "^7.14.0" + "@babel/plugin-transform-modules-commonjs" "^7.14.0" "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-modules-umd" "^7.14.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" "@babel/plugin-transform-new-target" "^7.12.13" "@babel/plugin-transform-object-super" "^7.12.13" @@ -1099,7 +1391,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.13" "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.14" + "@babel/types" "^7.14.1" babel-plugin-polyfill-corejs2 "^0.2.0" babel-plugin-polyfill-corejs3 "^0.2.0" babel-plugin-polyfill-regenerator "^0.2.0" @@ -1117,6 +1409,17 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/preset-react@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" @@ -1130,7 +1433,7 @@ "@babel/plugin-transform-react-jsx-source" "^7.12.1" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-react@^7.9.4": +"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.9.4": version "7.13.13" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" integrity sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA== @@ -1150,6 +1453,23 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-typescript" "^7.12.1" +"@babel/preset-typescript@7.3.3": + version "7.3.3" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" + integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.3.2" + +"@babel/preset-typescript@^7.1.0": + version "7.13.0" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/register@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/register/-/register-7.12.1.tgz#cdb087bdfc4f7241c03231f22e15d211acf21438" @@ -1168,14 +1488,21 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": - version "7.13.10" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" - integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== +"@babel/runtime@7.4.5": + version "7.4.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.1.5", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3", "@babel/template@^7.4.0": +"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.12.7", "@babel/template@^7.3.3", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.12.13" resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -1184,27 +1511,26 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.2": - version "7.13.15" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7" - integrity sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz#cea0dc8ae7e2b1dec65f512f39f3483e8cc95aef" + integrity sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" + "@babel/generator" "^7.14.0" "@babel/helper-function-name" "^7.12.13" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.15" - "@babel/types" "^7.13.14" + "@babel/parser" "^7.14.0" + "@babel/types" "^7.14.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.2": - version "7.13.14" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" - integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ== +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.2": + version "7.14.1" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz#095bd12f1c08ab63eff6e8f7745fa7c9cc15a9db" + integrity sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" + "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1235,10 +1561,10 @@ resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== -"@eslint/eslintrc@^0.4.0": - version "0.4.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" - integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -1324,6 +1650,151 @@ unique-filename "^1.1.1" which "^1.3.1" +"@formatjs/intl-displaynames@^1.2.0": + version "1.2.10" + resolved "https://registry.nlark.com/@formatjs/intl-displaynames/download/@formatjs/intl-displaynames-1.2.10.tgz#bb9625cca90b099978cd967c6a98aaf4e23fc878" + integrity sha1-u5YlzKkLCZl4zZZ8apiq9OI/yHg= + dependencies: + "@formatjs/intl-utils" "^2.3.0" + +"@formatjs/intl-listformat@^1.4.1": + version "1.4.8" + resolved "https://registry.nlark.com/@formatjs/intl-listformat/download/@formatjs/intl-listformat-1.4.8.tgz#70b81005e7dcf74329cb5b314a940ce5fce36cd0" + integrity sha1-cLgQBefc90Mpy1sxSpQM5fzjbNA= + dependencies: + "@formatjs/intl-utils" "^2.3.0" + +"@formatjs/intl-pluralrules@^1.5.0": + version "1.5.9" + resolved "https://registry.nlark.com/@formatjs/intl-pluralrules/download/@formatjs/intl-pluralrules-1.5.9.tgz#c363c833c0ccde11eb508de4c09d3eaa232e819a" + integrity sha1-w2PIM8DM3hHrUI3kwJ0+qiMugZo= + dependencies: + "@formatjs/intl-utils" "^2.3.0" + +"@formatjs/intl-relativetimeformat@^4.5.7", "@formatjs/intl-relativetimeformat@^4.5.9": + version "4.5.16" + resolved "https://registry.nlark.com/@formatjs/intl-relativetimeformat/download/@formatjs/intl-relativetimeformat-4.5.16.tgz#7449cef3213dd66d25924ca41f125f87b58df95a" + integrity sha1-dEnO8yE91m0lkkykHxJfh7WN+Vo= + dependencies: + "@formatjs/intl-utils" "^2.3.0" + +"@formatjs/intl-unified-numberformat@^3.2.0": + version "3.3.7" + resolved "https://registry.npm.taobao.org/@formatjs/intl-unified-numberformat/download/@formatjs/intl-unified-numberformat-3.3.7.tgz#9995a24568908188e716d81a1de5b702b2ee00e2" + integrity sha1-mZWiRWiQgYjnFtgaHeW3ArLuAOI= + dependencies: + "@formatjs/intl-utils" "^2.3.0" + +"@formatjs/intl-utils@^2.2.0", "@formatjs/intl-utils@^2.3.0": + version "2.3.0" + resolved "https://registry.npm.taobao.org/@formatjs/intl-utils/download/@formatjs/intl-utils-2.3.0.tgz#2dc8c57044de0340eb53a7ba602e59abf80dc799" + integrity sha1-LcjFcETeA0DrU6e6YC5Zq/gNx5k= + +"@formily/antd@^2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/antd/download/@formily/antd-2.0.0-beta.54.tgz?cache=0&sync_timestamp=1621567341104&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40formily%2Fantd%2Fdownload%2F%40formily%2Fantd-2.0.0-beta.54.tgz#6f0c7b5067300b80e600679e4b68f5a72ce0892e" + integrity sha1-bwx7UGcwC4DmAGeeS2j1pyzgiS4= + dependencies: + "@ant-design/icons" "^4.0.0" + "@formily/core" "2.0.0-beta.54" + "@formily/json-schema" "2.0.0-beta.54" + "@formily/react" "2.0.0-beta.54" + "@formily/reactive" "2.0.0-beta.54" + "@formily/reactive-react" "2.0.0-beta.54" + "@formily/shared" "2.0.0-beta.54" + "@juggle/resize-observer" "^3.3.1" + classnames "^2.2.6" + react-sortable-hoc "^1.11.0" + react-sticky-box "^0.9.3" + +"@formily/core@2.0.0-beta.54", "@formily/core@^2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/core/download/@formily/core-2.0.0-beta.54.tgz?cache=0&sync_timestamp=1621567340334&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40formily%2Fcore%2Fdownload%2F%40formily%2Fcore-2.0.0-beta.54.tgz#c8326be956e129445f3418dad73f55bfe4609aef" + integrity sha1-yDJr6VbhKURfNBja1z9Vv+Rgmu8= + dependencies: + "@formily/reactive" "2.0.0-beta.54" + "@formily/shared" "2.0.0-beta.54" + "@formily/validator" "2.0.0-beta.54" + +"@formily/json-schema@2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/json-schema/download/@formily/json-schema-2.0.0-beta.54.tgz#48a1eb3d5e3355bde4c738311b8586df6b7419ae" + integrity sha1-SKHrPV4zVb3kxzgxG4WG32t0Ga4= + dependencies: + "@formily/core" "2.0.0-beta.54" + "@formily/reactive" "2.0.0-beta.54" + "@formily/shared" "2.0.0-beta.54" + +"@formily/path@2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/path/download/@formily/path-2.0.0-beta.54.tgz#4338be0ddaed492bbdf6de69034edb3f7c23f1b0" + integrity sha1-Qzi+DdrtSSu99t5pA07bP3wj8bA= + +"@formily/react@2.0.0-beta.54", "@formily/react@^2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/react/download/@formily/react-2.0.0-beta.54.tgz?cache=0&sync_timestamp=1621567340942&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40formily%2Freact%2Fdownload%2F%40formily%2Freact-2.0.0-beta.54.tgz#214692aff8e7a3bdc647ddc333ae0193a6195c8f" + integrity sha1-IUaSr/jno73GR93DM64Bk6YZXI8= + dependencies: + "@formily/core" "2.0.0-beta.54" + "@formily/json-schema" "2.0.0-beta.54" + "@formily/reactive" "2.0.0-beta.54" + "@formily/reactive-react" "2.0.0-beta.54" + "@formily/shared" "2.0.0-beta.54" + "@formily/validator" "2.0.0-beta.54" + hoist-non-react-statics "^3.3.2" + +"@formily/reactive-react@2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/reactive-react/download/@formily/reactive-react-2.0.0-beta.54.tgz#ad87af9687419fe0430f76c6218bf8362c8b80f0" + integrity sha1-rYevlodBn+BDD3bGIYv4NiyLgPA= + dependencies: + "@formily/reactive" "2.0.0-beta.54" + hoist-non-react-statics "^3.3.2" + +"@formily/reactive@2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/reactive/download/@formily/reactive-2.0.0-beta.54.tgz#5eb14a1c53e64c96b2cbb9a9e0a9defc58869f1d" + integrity sha1-XrFKHFPmTJayy7mp4Kne/FiGnx0= + +"@formily/shared@2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/shared/download/@formily/shared-2.0.0-beta.54.tgz?cache=0&sync_timestamp=1621567340787&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40formily%2Fshared%2Fdownload%2F%40formily%2Fshared-2.0.0-beta.54.tgz#ff28d7d77e820fea7d6b10e4ec63e3850eb955b6" + integrity sha1-/yjX136CD+p9axDk7GPjhQ65VbY= + dependencies: + "@formily/path" "2.0.0-beta.54" + camel-case "^4.1.1" + lower-case "^2.0.1" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.1" + upper-case "^2.0.1" + +"@formily/validator@2.0.0-beta.54": + version "2.0.0-beta.54" + resolved "https://registry.nlark.com/@formily/validator/download/@formily/validator-2.0.0-beta.54.tgz?cache=0&sync_timestamp=1621567340525&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40formily%2Fvalidator%2Fdownload%2F%40formily%2Fvalidator-2.0.0-beta.54.tgz#a499e5f379c0cb5fce964a3bfce4b97998efdd82" + integrity sha1-pJnl83nAy1/Olko7/OS5eZjv3YI= + dependencies: + "@formily/shared" "2.0.0-beta.54" + +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.2" + resolved "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" + integrity sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ== + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.6.0" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1340,6 +1811,15 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + "@jest/console@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" @@ -1352,6 +1832,40 @@ jest-util "^26.6.2" slash "^3.0.0" +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + "@jest/core@^26.6.3": version "26.6.3" resolved "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" @@ -1386,6 +1900,16 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + "@jest/environment@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" @@ -1396,6 +1920,15 @@ "@types/node" "*" jest-mock "^26.6.2" +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + "@jest/fake-timers@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" @@ -1417,6 +1950,33 @@ "@jest/types" "^26.6.2" expect "^26.6.2" +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + "@jest/reporters@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" @@ -1449,6 +2009,15 @@ optionalDependencies: node-notifier "^8.0.0" +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + "@jest/source-map@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" @@ -1458,6 +2027,15 @@ graceful-fs "^4.2.4" source-map "^0.6.0" +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@jest/test-result@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" @@ -1468,6 +2046,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + "@jest/test-sequencer@^26.6.3": version "26.6.3" resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" @@ -1479,6 +2067,28 @@ jest-runner "^26.6.3" jest-runtime "^26.6.3" +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" @@ -1500,6 +2110,15 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" @@ -1511,7 +2130,24 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@koa/router@^9.3.1": +"@juggle/resize-observer@^3.3.1": + version "3.3.1" + resolved "https://registry.nlark.com/@juggle/resize-observer/download/@juggle/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" + integrity sha1-tQp4FwnIHhBwEAQhQ0DyVHWhcaA= + +"@koa/cors@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz#618bb073438cfdbd3ebd0e648a76e33b84f3a3b2" + integrity sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q== + dependencies: + vary "^1.1.2" + +"@koa/multer@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@koa/multer/-/multer-3.0.0.tgz#439777949f28097d7b329c0b4ce3048074c862f8" + integrity sha512-y+OQBmex5D1jIl723gAEUYcAWPEicIXppaAKw/zCMfpllQ08ZNweDPwoCLxEoatqd5pCu2XG6V8dl67JRq3RJw== + +"@koa/router@^9.4.0": version "9.4.0" resolved "https://registry.npmjs.org/@koa/router/-/router-9.4.0.tgz#734b64c0ae566eb5af752df71e4143edc4748e48" integrity sha512-dOOXgzqaDoHu5qqMEPLKEgLz5CeIA7q8+1W62mCvFVCOqeC71UoTGJ4u1xUSOpIl2J1x2pqrNULkFteUeZW3/A== @@ -2220,6 +2856,21 @@ stringify-entities "^3.0.1" stringify-object "^3.3.0" +"@mapbox/node-pre-gyp@^1.0.0": + version "1.0.4" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.4.tgz#6c76e7a40138eac39e1a4dc869a083e43e236c00" + integrity sha512-M669Qo4nRT7iDmQEjQYC7RU8Z6dpz9UmSbkJ1OFEja3uevCdLKh7IZZki7L1TZj02kRyl82snXFY8QqkyfowrQ== + dependencies: + detect-libc "^1.0.3" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.1" + nopt "^5.0.0" + npmlog "^4.1.2" + rimraf "^3.0.2" + semver "^7.3.4" + tar "^6.1.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -2228,11 +2879,32 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + "@octokit/auth-token@^2.4.0": version "2.4.5" resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" @@ -2249,10 +2921,10 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-6.0.0.tgz#7da8d7d5a72d3282c1a3ff9f951c8133a707480d" - integrity sha512-CnDdK7ivHkBtJYzWzZm7gEkanA7gKH6a09Eguz7flHw//GacPJLmkHA3f3N++MJmlxD1Fl+mB7B32EEpSCwztQ== +"@octokit/openapi-types@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.0.0.tgz#0f6992db9854af15eca77d71ab0ec7fad2f20411" + integrity sha512-gV/8DJhAL/04zjTI95a7FhQwS6jlEE0W/7xeYAzuArD0KVAVWDLP2f3vi98hs3HLTczxXdRK/mF0tRoQPpolEw== "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" @@ -2339,93 +3011,16 @@ "@types/node" ">= 8" "@octokit/types@^6.0.3", "@octokit/types@^6.7.1": - version "6.13.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.13.0.tgz#779e5b7566c8dde68f2f6273861dd2f0409480d0" - integrity sha512-W2J9qlVIU11jMwKHUp5/rbVUeErqelCsO5vW5PKNb7wAXQVUz87Rc+imjlEvpvbH8yUb+KHmv8NEjVZdsdpyxA== + version "6.14.2" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.14.2.tgz#64c9457f38fb8522bdbba3c8cc814590a2d61bf5" + integrity sha512-wiQtW9ZSy4OvgQ09iQOdyXYNN60GqjCL/UdMsepDr1Gr0QzpW6irIKbH3REuAHXAhxkEk9/F2a3Gcs1P6kW5jA== dependencies: - "@octokit/openapi-types" "^6.0.0" + "@octokit/openapi-types" "^7.0.0" -"@opencensus/core@0.0.9": - version "0.0.9" - resolved "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz#b16f775435ee309433e4126af194d37313fc93b3" - integrity sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q== - dependencies: - continuation-local-storage "^3.2.1" - log-driver "^1.2.7" - semver "^5.5.0" - shimmer "^1.2.0" - uuid "^3.2.1" - -"@opencensus/core@^0.0.8": - version "0.0.8" - resolved "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz#df01f200c2d2fbfe14dae129a1a86fb87286db92" - integrity sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ== - dependencies: - continuation-local-storage "^3.2.1" - log-driver "^1.2.7" - semver "^5.5.0" - shimmer "^1.2.0" - uuid "^3.2.1" - -"@opencensus/propagation-b3@0.0.8": - version "0.0.8" - resolved "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz#0751e6fd75f09400d9d3c419001e9e15a0df68e9" - integrity sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A== - dependencies: - "@opencensus/core" "^0.0.8" - uuid "^3.2.1" - -"@pm2/agent@~1.0.8": - version "1.0.8" - resolved "https://registry.npmjs.org/@pm2/agent/-/agent-1.0.8.tgz#cd15d84dbfc95427e6fccce72bc165b79f1d8579" - integrity sha512-r8mud8BhBz+a2yjlgtk+PBXUR5EQ9UKSJCs232OxfCmuBr1MZw0Mo+Kfog6WJ8OmVk99r1so9yTUK4IyrgGcMQ== - dependencies: - async "~3.2.0" - chalk "~3.0.0" - dayjs "~1.8.24" - debug "~4.3.1" - eventemitter2 "~5.0.1" - fclone "~1.0.11" - nssocket "0.6.0" - pm2-axon "~4.0.1" - pm2-axon-rpc "~0.7.0" - proxy-agent "~4.0.1" - semver "~7.2.0" - ws "~7.2.0" - -"@pm2/io@~5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz#623cbcaf6fe39375f20ac2e75497477a1b1ec5c5" - integrity sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw== - dependencies: - "@opencensus/core" "0.0.9" - "@opencensus/propagation-b3" "0.0.8" - async "~2.6.1" - debug "~4.3.1" - eventemitter2 "^6.3.1" - require-in-the-middle "^5.0.0" - semver "6.3.0" - shimmer "^1.2.0" - signal-exit "^3.0.3" - tslib "1.9.3" - -"@pm2/js-api@~0.6.7": - version "0.6.7" - resolved "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz#ed28c3b7b6d26f03f826318754fdc5468afa589f" - integrity sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw== - dependencies: - async "^2.6.3" - axios "^0.21.0" - debug "~4.3.1" - eventemitter2 "^6.3.1" - ws "^7.0.0" - -"@pm2/pm2-version-check@latest": - version "1.0.4" - resolved "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz#cf97fbb14b0eca95430ca05eedccbd2683806e43" - integrity sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA== - dependencies: - debug "^4.3.1" +"@qixian.cs/path-to-regexp@^6.1.0": + version "6.1.0" + resolved "https://registry.npm.taobao.org/@qixian.cs/path-to-regexp/download/@qixian.cs/path-to-regexp-6.1.0.tgz#6b84ad01596332aba95fa29d2e70104698cd5c45" + integrity sha1-a4StAVljMqupX6KdLnAQRpjNXEU= "@rollup/plugin-babel@5.2.1": version "5.2.1" @@ -2643,7 +3238,7 @@ dependencies: "@types/node" "*" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": version "7.1.14" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -2676,11 +3271,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/bcrypt@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-3.0.1.tgz#9c767594e31aa1c4ce78d23aa4351984403ca28f" - integrity sha512-SwBrq5wb6jXP0o3O3jStdPWbKpimTImfdFD/OZE3uW+jhGpds/l5wMX9lfYOTDOa5Bod2QmOgo9ln+tMp2XP/w== - "@types/body-parser@*": version "1.19.0" resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" @@ -2701,11 +3291,6 @@ resolved "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== -"@types/cookiejar@*": - version "2.1.2" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" - integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== - "@types/cookies@*": version "0.7.6" resolved "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.6.tgz#71212c5391a976d3bae57d4b09fac20fc6bda504" @@ -2716,11 +3301,6 @@ "@types/keygrip" "*" "@types/node" "*" -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/estree@*": version "0.0.47" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" @@ -2765,6 +3345,13 @@ dependencies: "@types/node" "*" +"@types/gulp-plumber@^0.0.32": + version "0.0.32" + resolved "https://registry.npmjs.org/@types/gulp-plumber/-/gulp-plumber-0.0.32.tgz#81467e0af4592a86239220ba743718c81846fc6a" + integrity sha512-upPVrIjFivRIHS80b6ApIYafvyToiH/AoCR1r2b2ObKrbRY8C2bF+vFwQ72lSu6jLnLIKHkmAW5CWPXczUz3Wg== + dependencies: + "@types/node" "*" + "@types/hast@^2.0.0": version "2.3.1" resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" @@ -2777,6 +3364,14 @@ resolved "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== +"@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1": + version "3.3.1" + resolved "https://registry.npm.taobao.org/@types/hoist-non-react-statics/download/@types/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha1-ESSq/lEYy1kZd66xzqrtEHDrA58= + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/http-assert@*": version "1.5.1" resolved "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" @@ -2787,6 +3382,16 @@ resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== +"@types/invariant@^2.2.31": + version "2.2.34" + resolved "https://registry.npm.taobao.org/@types/invariant/download/@types/invariant-2.2.34.tgz#05e4f79f465c2007884374d4795452f995720bbe" + integrity sha1-BeT3n0ZcIAeIQ3TUeVRS+ZVyC74= + +"@types/isomorphic-fetch@^0.0.35": + version "0.0.35" + resolved "https://registry.npm.taobao.org/@types/isomorphic-fetch/download/@types/isomorphic-fetch-0.0.35.tgz#c1c0d402daac324582b6186b91f8905340ea3361" + integrity sha1-wcDUAtqsMkWCthhrkfiQU0DqM2E= + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" @@ -2799,6 +3404,14 @@ dependencies: "@types/istanbul-lib-coverage" "*" +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + "@types/istanbul-reports@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" @@ -2806,13 +3419,17 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^26.0.4": - version "26.0.22" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6" - integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw== +"@types/jest@^24.0.18": + version "24.9.1" + resolved "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" + integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" + jest-diff "^24.3.0" + +"@types/js-cookie@^2.2.6": + version "2.2.6" + resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" + integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== "@types/json-schema@^7.0.3": version "7.0.7" @@ -2829,13 +3446,6 @@ resolved "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== -"@types/koa-bodyparser@^4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/@types/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz#54ecd662c45f3a4fa9de849528de5fc8ab269ba5" - integrity sha512-aB/vwwq4G9FAtKzqZ2p8UHTscXxZvICFKVjuckqxCtkX1Ro7F5KHkTCUqTRZFBgDoEkmeca+bFLI1bIsdPPZTA== - dependencies: - "@types/koa" "*" - "@types/koa-compose@*": version "3.2.5" resolved "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" @@ -2843,14 +3453,7 @@ dependencies: "@types/koa" "*" -"@types/koa-mount@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/koa-mount/-/koa-mount-4.0.0.tgz#aa0505763c0d20bf4a16cdec0d9ccd2f4f2d2a86" - integrity sha512-56iBULArwY3uKLl28eRFchZ2v0diEoJzJbDaHH/ehgruF/s2/KMHyWsKcIhvDJ3tGdKu9oZNQvxaMg++1IKFdA== - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@^2.11.6": +"@types/koa@*", "@types/koa@^2.13.1": version "2.13.1" resolved "https://registry.npmjs.org/@types/koa/-/koa-2.13.1.tgz#e29877a6b5ad3744ab1024f6ec75b8cbf6ec45db" integrity sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q== @@ -2864,17 +3467,10 @@ "@types/koa-compose" "*" "@types/node" "*" -"@types/koa__router@^8.0.2": - version "8.0.4" - resolved "https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.4.tgz#0b754a5e5be3262fc649afc7e93800f30cfc5fe0" - integrity sha512-SXpZy6ICU/bsTZbNhg7QMNUQuNE7ka94zeLPHXhej2QZ09u2tz5S3WlBRB85HLSUosUZFbIRgfrFtu+PSIAUVA== - dependencies: - "@types/koa" "*" - -"@types/lodash@^4.14.158": - version "4.14.168" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" - integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== +"@types/lodash@^4.14.169": + version "4.14.169" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.169.tgz#83c217688f07a4d9ef8f28a3ebd1d318f6ff4cbb" + integrity sha512-DvmZHoHTFJ8zhVYwCLWbQ7uAbYQEk52Ev2/ZiQ7Y7gQGeV9pjBqjnQpECMHfKS1rCYAhMI7LHVxwyZLZinJgdw== "@types/mathjax@^0.0.36": version "0.0.36" @@ -2903,10 +3499,39 @@ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== -"@types/node@*", "@types/node@>= 8", "@types/node@^14.0.23", "@types/node@^14.14.28": - version "14.14.39" - resolved "https://registry.npmjs.org/@types/node/-/node-14.14.39.tgz#9ef394d4eb52953d2890e4839393c309aa25d2d1" - integrity sha512-Qipn7rfTxGEDqZiezH+wxqWYR8vcXq5LRpZrETD19Gs4o8LbklbmqotSUsMU+s5G3PJwMRDfNEYoxrcBwIxOuw== +"@types/mockjs@^1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/@types/mockjs/-/mockjs-1.0.3.tgz#bd8ee3c7cbbd9a18788ab677b9e4f97c8d0bb0bf" + integrity sha512-OlwyyyoY81P8f7FU0zILUPxqQQ3/W+CwbqI6dWvOxaH8w948fAl1+hOG9C9ZgJcwzG+aloJcsastY4c4p91R1Q== + +"@types/multer@^1.4.5": + version "1.4.5" + resolved "https://registry.npmjs.org/@types/multer/-/multer-1.4.5.tgz#db0557562307e9adb6661a9500c334cd7ddd0cd9" + integrity sha512-9b/0a8JyrR0r2nQhL73JR86obWL7cogfX12augvlrvcpciCo/hkvEsgu80Z4S2g2DHGVXHr8pUIi1VhqFJ8Ufw== + dependencies: + "@types/express" "*" + +"@types/node-schedule@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-1.3.1.tgz#6785ea71b12b0b8899c3fce0650b2ef5a7ea9d1e" + integrity sha512-xAY/ZATrThUkMElSDfOk+5uXprCrV6c6GQ5gTw3U04qPS6NofE1dhOUW+yrOF2UyrUiAax/Zc4WtagrbPAN3Tw== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>= 8": + version "15.0.2" + resolved "https://registry.npmjs.org/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" + integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== + +"@types/node@^12.6.8": + version "12.20.12" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.12.tgz#fd9c1c2cfab536a2383ed1ef70f94adea743a226" + integrity sha512-KQZ1al2hKOONAs2MFv+yTQP1LkDWMrRJ9YCVRalXltOfXsBmH5IownLxQaiq0lnAHwAViLnh2aTYqrPcRGEbgg== + +"@types/node@^14.14.28": + version "14.14.44" + resolved "https://registry.npmjs.org/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2948,20 +3573,30 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/react-dom@^16.9.8": - version "16.9.12" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz#55cd6b17e73922edb9545e5355a0016c1734e6f4" - integrity sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA== - dependencies: - "@types/react" "^16" - -"@types/react-dom@^17.0.3": +"@types/react-dom@^16.9.8", "@types/react-dom@^17.0.0", "@types/react-dom@^17.0.3": version "17.0.3" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.3.tgz#7fdf37b8af9d6d40127137865bb3fff8871d7ee1" integrity sha512-4NnJbCeWE+8YBzupn/YrJxZ8VnjcJq5iR1laqQ1vkpQgBiA7bwk0Rp24fxsdNinzJY2U+HHS4dJJDPdoMjdJ7w== dependencies: "@types/react" "*" +"@types/react-helmet@^6.1.0": + version "6.1.1" + resolved "https://registry.npm.taobao.org/@types/react-helmet/download/@types/react-helmet-6.1.1.tgz#4fde22cbcaa1b461642e1d719cc6162d95acb110" + integrity sha1-T94iy8qhtGFkLh1xnMYWLZWssRA= + dependencies: + "@types/react" "*" + +"@types/react-redux@^7.1.0", "@types/react-redux@^7.1.16": + version "7.1.16" + resolved "https://registry.npm.taobao.org/@types/react-redux/download/@types/react-redux-7.1.16.tgz#0fbd04c2500c12105494c83d4a3e45c084e3cb21" + integrity sha1-D70EwlAMEhBUlMg9Sj5FwITjyyE= + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + "@types/react-router-config@5.0.2", "@types/react-router-config@^5.0.2": version "5.0.2" resolved "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.2.tgz#4d3b52e71ed363a1976a12321e67b09a99ad6d10" @@ -2971,7 +3606,7 @@ "@types/react" "*" "@types/react-router" "*" -"@types/react-router-dom@5.1.7": +"@types/react-router-dom@5.1.7", "@types/react-router-dom@^5.1.2": version "5.1.7" resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271" integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg== @@ -2981,9 +3616,9 @@ "@types/react-router" "*" "@types/react-router@*": - version "5.1.13" - resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.13.tgz#051c0d229bd48ad90558a1db500708127cc512f7" - integrity sha512-ZIuaO9Yrln54X6elg8q2Ivp6iK6p4syPsefEYAhRDAoqNh48C8VYUmB9RkXjKSQAJSJV0mbIFCX7I4vZDcHrjg== + version "5.1.14" + resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.14.tgz#e0442f4eb4c446541ad7435d44a97f8fe6df40da" + integrity sha512-LAJpqYUaCTMT2anZheoidiIymt8MuX286zoVFPM3DVb23aQBH0mAkFvzpd4LKqiolV8bBtZWT5Qp7hClCNDENw== dependencies: "@types/history" "*" "@types/react" "*" @@ -2996,19 +3631,10 @@ "@types/history" "*" "@types/react" "*" -"@types/react@*", "@types/react@^17.0.3": - version "17.0.3" - resolved "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz#ba6e215368501ac3826951eef2904574c262cc79" - integrity sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^16", "@types/react@^16.9.43": - version "16.14.5" - resolved "https://registry.npmjs.org/@types/react/-/react-16.14.5.tgz#2c39b5cadefaf4829818f9219e5e093325979f4d" - integrity sha512-YRRv9DNZhaVTVRh9Wmmit7Y0UFhEVqXqCSw3uazRWMxa2x85hWQZ5BN24i7GXZbaclaLXEcodEeIHsjBA8eAMw== +"@types/react@*", "@types/react@^16.9.43", "@types/react@^17.0.0": + version "17.0.5" + resolved "https://registry.npmjs.org/@types/react/-/react-17.0.5.tgz#3d887570c4489011f75a3fc8f965bf87d09a1bea" + integrity sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3041,26 +3667,16 @@ "@types/mime" "^1" "@types/node" "*" +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== -"@types/superagent@*": - version "4.1.10" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.10.tgz#5e2cc721edf58f64fe9b819f326ee74803adee86" - integrity sha512-xAgkb2CMWUMCyVc/3+7iQfOEBE75NvuZeezvmixbUw3nmENf2tCnQkW5yQLTYqvXUQ+R6EXxdqKKbal2zM5V/g== - dependencies: - "@types/cookiejar" "*" - "@types/node" "*" - -"@types/supertest@^2.0.10": - version "2.0.11" - resolved "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz#2e70f69f220bc77b4f660d72c2e1a4231f44a77d" - integrity sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q== - dependencies: - "@types/superagent" "*" - "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": version "2.0.3" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" @@ -3071,6 +3687,13 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== +"@types/yargs@^13.0.0": + version "13.0.11" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" + integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^15.0.0": version "15.0.13" resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" @@ -3078,129 +3701,139 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^3.6.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" - integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== +"@typescript-eslint/eslint-plugin@^4.9.1": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.1.tgz#6bcdbaa4548553ab861b4e5f34936ead1349a543" + integrity sha512-kVTAghWDDhsvQ602tHBc6WmQkdaYbkcTwZu+7l24jtJiYvm9l+/y/b2BZANEezxPDiX5MK2ZecE+9BFi/YJryw== dependencies: - "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/experimental-utils" "4.22.1" + "@typescript-eslint/scope-manager" "4.22.1" debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" - integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== +"@typescript-eslint/experimental-utils@4.22.1": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.1.tgz#3938a5c89b27dc9a39b5de63a62ab1623ab27497" + integrity sha512-svYlHecSMCQGDO2qN1v477ax/IDQwWhc7PRBiwAdAMJE7GXk5stF4Z9R/8wbRkuX/5e9dHqbIWxjeOjckK3wLQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" + "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/typescript-estree" "4.22.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^3.6.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" - integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== +"@typescript-eslint/parser@^4.8.2": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.1.tgz#a95bda0fd01d994a15fc3e99dc984294f25c19cc" + integrity sha512-l+sUJFInWhuMxA6rtirzjooh8cM/AATAe3amvIkqKFeMzkn85V+eLzb1RyuXkHak4dLfYzOmF6DXPyflJvjQnw== dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "3.10.1" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/types@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" - integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== - -"@typescript-eslint/typescript-estree@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== - dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" + "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/typescript-estree" "4.22.1" debug "^4.1.1" - glob "^7.1.6" + +"@typescript-eslint/scope-manager@4.22.1": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.1.tgz#5bb357f94f9cd8b94e6be43dd637eb73b8f355b4" + integrity sha512-d5bAiPBiessSmNi8Amq/RuLslvcumxLmyhf1/Xa9IuaoFJ0YtshlJKxhlbY7l2JdEk3wS0EnmnfeJWSvADOe0g== + dependencies: + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/visitor-keys" "4.22.1" + +"@typescript-eslint/types@4.22.1": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.1.tgz#bf99c6cec0b4a23d53a61894816927f2adad856a" + integrity sha512-2HTkbkdAeI3OOcWbqA8hWf/7z9c6gkmnWNGz0dKSLYLWywUlkOAQ2XcjhlKLj5xBFDf8FgAOF5aQbnLRvgNbCw== + +"@typescript-eslint/typescript-estree@4.22.1": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.1.tgz#dca379eead8cdfd4edc04805e83af6d148c164f9" + integrity sha512-p3We0pAPacT+onSGM+sPR+M9CblVqdA9F1JEdIqRVlxK5Qth4ochXQgIyb9daBomyQKAXbygxp1aXQRV0GC79A== + dependencies: + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/visitor-keys" "4.22.1" + debug "^4.1.1" + globby "^11.0.1" is-glob "^4.0.1" - lodash "^4.17.15" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== +"@typescript-eslint/visitor-keys@4.22.1": + version "4.22.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.1.tgz#6045ae25a11662c671f90b3a403d682dfca0b7a6" + integrity sha512-WPkOrIRm+WCLZxXQHCi+WG8T2MMTUFR70rWjdWYddLT7cEfb2P4a3O/J2U1FBVsSFTocXLCoXWY6MZGejeStvQ== dependencies: - eslint-visitor-keys "^1.1.0" + "@typescript-eslint/types" "4.22.1" + eslint-visitor-keys "^2.0.0" -"@umijs/ast@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/ast/-/ast-3.4.8.tgz#90c3748181b870263f6c51c05866ae79d187fa5e" - integrity sha512-3JAAdrZXcE78rODzhoK9yABlJK59DGscx3c0iNwbvdK0ylyYgmb7+Qm9dbEQn4kYeKX5ximV4CD5X8IljzicIA== +"@umijs/ast@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/ast/-/ast-3.4.15.tgz#5448f5095e85488d36b031fc3d7ff87752403b04" + integrity sha512-VsIRa9xvyoCEnoAp4etg5SEFueUa82xL+RcLG/TqFXLPXbk3WFaFSbcXUhvJnuwGWxJgNG+5RdwEDy/Ji+EzCg== dependencies: - "@umijs/utils" "3.4.8" + "@umijs/utils" "3.4.15" -"@umijs/babel-plugin-auto-css-modules@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/babel-plugin-auto-css-modules/-/babel-plugin-auto-css-modules-3.4.8.tgz#941f97f15ebb09ffc48aa53cbe57bd55e443529b" - integrity sha512-TQkIQHPPVEJR2OdEiCv+OQDKLV6bYNOkvvlmTuqQ5eDvruOrvJ4Rb5dmwrwXphUhwxkS3S92vgBYMDFVVCT27A== +"@umijs/babel-plugin-auto-css-modules@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/babel-plugin-auto-css-modules/-/babel-plugin-auto-css-modules-3.4.15.tgz#56cadb67785f83e3b22d0adedf9738c6c50d1f34" + integrity sha512-5XQQrYm2ADrg+Vo3atwLPodbkoZWoMZqvwgP9V+rKEfL3BjZzhH5hRRvJjOF33PcztS32/sRWQUuQdjKi4EXfw== -"@umijs/babel-plugin-import-to-await-require@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/babel-plugin-import-to-await-require/-/babel-plugin-import-to-await-require-3.4.8.tgz#3dc7678b508c204ff753bc24b26118bd795d2feb" - integrity sha512-sLxNW7MKdXOcKsdSF1RLyk9+cpt59zvdVN2uSRyChXf/KpwoHcSEgNi5E77I/ehLDnZumKzl1HDL9ifSWXDhkw== +"@umijs/babel-plugin-import-to-await-require@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/babel-plugin-import-to-await-require/-/babel-plugin-import-to-await-require-3.4.15.tgz#96ac13ad87fe7fc3a73acd6008d6714801d4056b" + integrity sha512-EBVteGNgDVRL2RJewDtA6vXOSdIBgX9Qe3fCnD+IuFhK6ph072ZhGX9vWXxGZAMiNHBbb7Ccfv8aiG7dGyxhMA== dependencies: - "@umijs/utils" "3.4.8" + "@umijs/utils" "3.4.15" -"@umijs/babel-plugin-lock-core-js-3@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/babel-plugin-lock-core-js-3/-/babel-plugin-lock-core-js-3-3.4.8.tgz#ca2ff9b39961f8c8ffee16ca1f327855cf49e7aa" - integrity sha512-XsurU0oKwlTa34PAOPfJouKVZklHU7TBt/AJOj9JB+7ulGZnqTl+OL7Tlxw5sUs4USJTS4PBhnyng9i46nI2DQ== +"@umijs/babel-plugin-lock-core-js-3@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/babel-plugin-lock-core-js-3/-/babel-plugin-lock-core-js-3-3.4.15.tgz#e4f757b40fe75e6a1d7675f270c49ef95c868108" + integrity sha512-w9AJ/jHOhzx7n0dt5NF62QmgEzlhjQhN8WR4zyYbkHZyQI/mYuy4elFPjostZLvyY6JLej9wu8b05BLFPpurGw== dependencies: - "@umijs/utils" "3.4.8" + "@umijs/utils" "3.4.15" core-js "3.6.5" -"@umijs/babel-plugin-no-anonymous-default-export@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/babel-plugin-no-anonymous-default-export/-/babel-plugin-no-anonymous-default-export-3.4.8.tgz#de5500557d7e3efde607cbf503b09871a41981b9" - integrity sha512-ZqfedGneKcxAcZLCsC4W4lDjcZoy2qJVDqsjQBFUj+Txwq2BTwRFBWnsxCdKnBw3dQ4jYuAiG57idhpsCy4v2w== +"@umijs/babel-plugin-no-anonymous-default-export@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/babel-plugin-no-anonymous-default-export/-/babel-plugin-no-anonymous-default-export-3.4.15.tgz#debcba77b99244d4a4f51f179907f5d696a34fb9" + integrity sha512-578Lhk6+SawWzD0heVOy4BKko+pl6yK1lZEqLZqwRpLGeZrKeMXkK7NVaKqN3I8aTz7i82mDw2IYx4r05Rnr7A== dependencies: - "@umijs/utils" "3.4.8" + "@umijs/utils" "3.4.15" -"@umijs/babel-preset-umi@3.4.8", "@umijs/babel-preset-umi@3.x": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/babel-preset-umi/-/babel-preset-umi-3.4.8.tgz#45f9ae1de109145f17206e7ea96a0075da8849e0" - integrity sha512-ZIWOOplileF8nfTMb1PlZW9w22HcYW0kYX9DdyPFTglV2jAXHkipEUSLlMRhJCLhdNMlmQaiRg50jfoTF33ZmQ== +"@umijs/babel-preset-umi@3.4.15", "@umijs/babel-preset-umi@3.x": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/babel-preset-umi/-/babel-preset-umi-3.4.15.tgz#2df308c52afceac17a82777773cc90a6d9e5441a" + integrity sha512-4FmQwJzxZrp72XNcZszH2GGJwF5yIY9N9qxelaCkbkr7asAWgzbte7z/pEkbuO1+ulJvyZrjeES3XZljzqziQw== dependencies: "@babel/runtime" "7.12.5" - "@umijs/babel-plugin-auto-css-modules" "3.4.8" - "@umijs/babel-plugin-import-to-await-require" "3.4.8" - "@umijs/babel-plugin-lock-core-js-3" "3.4.8" - "@umijs/babel-plugin-no-anonymous-default-export" "3.4.8" + "@umijs/babel-plugin-auto-css-modules" "3.4.15" + "@umijs/babel-plugin-import-to-await-require" "3.4.15" + "@umijs/babel-plugin-lock-core-js-3" "3.4.15" + "@umijs/babel-plugin-no-anonymous-default-export" "3.4.15" -"@umijs/bundler-utils@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/bundler-utils/-/bundler-utils-3.4.8.tgz#5f3746e84c2cb9061606e672fc8d3cd2fd55178a" - integrity sha512-R1iIOO3PeGiPaFF5yZ9E9KMn6vXH41b80saWjcAS2nTzb2edo4+HGZSdTYK8SbLHzQQzcaoGy9AUTi2bMDtAtw== +"@umijs/bundler-utils@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/bundler-utils/-/bundler-utils-3.4.15.tgz#52f726bd89a68bb65b0bc7ccd319b7872fc4c929" + integrity sha512-0oDMuqXSfk5H/lBfI4tQM2ui4JKp/VeVWxabrI/kafE6Wu2/I2/t6kJuonpz+KauJR/u9mnfGiPksLApGKFIww== dependencies: - "@umijs/babel-preset-umi" "3.4.8" - "@umijs/types" "3.4.8" - "@umijs/utils" "3.4.8" + "@umijs/babel-preset-umi" "3.4.15" + "@umijs/types" "3.4.15" + "@umijs/utils" "3.4.15" -"@umijs/bundler-webpack@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-3.4.8.tgz#8cc50d948d5b346e0f4cb8fe74329b4fa09acc7a" - integrity sha512-u5/or/rD1/yl2N7pFTbDfoOlYKOKpq67Pyy6hjxOJ6zvo+T3Ntc2iBGDtJ27KBSfhNyYULEaTkHSg7Q7yLM0Eg== +"@umijs/bundler-webpack@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-3.4.15.tgz#2e5cd16155ef863544b6f4087bef4640f8bb51fa" + integrity sha512-KL1cXaMJV/zkFelSY/XKVtl2rWmw4GLNZpFvuSgIyMNS2FN03JNQyoV24Fsc/bVlZjSSjBU5MsULGIVLI3J58Q== dependencies: - "@umijs/bundler-utils" "3.4.8" - "@umijs/deps" "0.8.1" - "@umijs/types" "3.4.8" - "@umijs/utils" "3.4.8" + "@umijs/bundler-utils" "3.4.15" + "@umijs/deps" "3.4.15" + "@umijs/types" "3.4.15" + "@umijs/utils" "3.4.15" jest-worker "26.6.2" node-libs-browser "2.2.1" normalize-url "1.9.1" @@ -3212,20 +3845,20 @@ terser "5.6.0" webpack-chain "6.5.1" -"@umijs/core@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/core/-/core-3.4.8.tgz#72f6a45f6a9dbf9d988698246fb9a07d739ef529" - integrity sha512-UQY1VrAUQBGYjXMFsFou0TBBWrhlhPXYcgAM/2RSD10RZhTynoTiwAmkwDGU2R0gTtsf4GJO+3sDO4Qng2PbQw== +"@umijs/core@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/core/-/core-3.4.15.tgz#35be2447d7de146e002f4d707746cf317e603f81" + integrity sha512-8tG+CH/hIFiJklgusvHtEZ8rfoL7RL4aS0lI2i6RAdx2TEWoXmygUM299pzRUXWCBJ/+DkK5Rq6zAkhGsJ3J0Q== dependencies: - "@umijs/ast" "3.4.8" - "@umijs/babel-preset-umi" "3.4.8" - "@umijs/deps" "0.8.1" - "@umijs/utils" "3.4.8" + "@umijs/ast" "3.4.15" + "@umijs/babel-preset-umi" "3.4.15" + "@umijs/deps" "3.4.15" + "@umijs/utils" "3.4.15" -"@umijs/deps@0.8.1": - version "0.8.1" - resolved "https://registry.npmjs.org/@umijs/deps/-/deps-0.8.1.tgz#b20f9b3b2cf67ba85306e2c1f6c720c687c5ce95" - integrity sha512-BfvWUblKdBzSyTWiX4Z4SmCu7yno5ypJquSx05ruPnZ9ZTxZIs4g+9Z3ow4yIvCBK/fFbRcBs4Os4fIPW3kmhg== +"@umijs/deps@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/deps/-/deps-3.4.15.tgz#6dbdf2196597b7d73a3fb3f3eba636e23b05fa12" + integrity sha512-Mle/dmjqFALHQAhK84WACL78zFPiEbFgy3AE98OAvf16ua7jqUYDclOtfLri5TLnbUQ2BGbQmGqIG7j+Y6JlzQ== dependencies: "@bloomberg/record-tuple-polyfill" "0.0.3" chokidar "3.5.1" @@ -3233,12 +3866,17 @@ jest-worker "24.9.0" prettier "2.2.1" -"@umijs/plugin-analytics@^0.2.2": +"@umijs/plugin-access@2.3.3": + version "2.3.3" + resolved "https://registry.npm.taobao.org/@umijs/plugin-access/download/@umijs/plugin-access-2.3.3.tgz#3206ef8dd0707dbbd35fa0e2acf0fc964b807e3d" + integrity sha1-MgbvjdBwfbvTX6DirPD8lkuAfj0= + +"@umijs/plugin-analytics@0.2.2", "@umijs/plugin-analytics@^0.2.2": version "0.2.2" resolved "https://registry.npmjs.org/@umijs/plugin-analytics/-/plugin-analytics-0.2.2.tgz#575fd231d4327ea13413217aa1b5fc6bdd89465e" integrity sha512-dVDzUfgIdEwdCC6a5IsMYpIPI+bEZjBEqIhAvw9dic6Vk77w9RxQxyRfW11dDmdXLAwWphp22NntQNt1ejZPtg== -"@umijs/plugin-antd@^0.9.1": +"@umijs/plugin-antd@0.9.1", "@umijs/plugin-antd@^0.9.1": version "0.9.1" resolved "https://registry.npmjs.org/@umijs/plugin-antd/-/plugin-antd-0.9.1.tgz#a5a146a80879565b59cc2dd33d7b158685cf2bb2" integrity sha512-MG+RifLIovPRvf5qPUfTIRqkiq1QBaKCE/pP3mM72DwAkDh6ZXn8oql/8tqFR3k1+m3XUbDEiOCH+Zx+eNiFew== @@ -3246,21 +3884,94 @@ antd "^4.1.3" antd-mobile "^2.3.1" -"@umijs/preset-built-in@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/preset-built-in/-/preset-built-in-3.4.8.tgz#76e297094f34cbeedbd7148f0fbd661104ee1a3d" - integrity sha512-/Fzmh9FwNA0PMKwFN20VhhHkOUqzfeX0imNaigGjqC72AF36sLkGLk9IbT5dqdEsC0OJSs+1rpk7n8fWoqf95A== +"@umijs/plugin-crossorigin@1.2.0": + version "1.2.0" + resolved "https://registry.npm.taobao.org/@umijs/plugin-crossorigin/download/@umijs/plugin-crossorigin-1.2.0.tgz#bf9ec0ccd76cf04e178c63fda813b06e93280131" + integrity sha1-v57AzNds8E4XjGP9qBOwbpMoATE= + +"@umijs/plugin-dva@0.12.1": + version "0.12.1" + resolved "https://registry.nlark.com/@umijs/plugin-dva/download/@umijs/plugin-dva-0.12.1.tgz#2b01778a92af558286f34c60994bd1460aca8af9" + integrity sha1-KwF3ipKvVYKG80xgmUvRRgrKivk= + dependencies: + babel-plugin-dva-hmr "^0.4.2" + dva "^2.6.0-beta.20" + dva-immer "^0.5.2" + dva-loading "^3.0.20" + +"@umijs/plugin-helmet@1.1.3": + version "1.1.3" + resolved "https://registry.nlark.com/@umijs/plugin-helmet/download/@umijs/plugin-helmet-1.1.3.tgz?cache=0&sync_timestamp=1618888378429&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40umijs%2Fplugin-helmet%2Fdownload%2F%40umijs%2Fplugin-helmet-1.1.3.tgz#d66e257fa90d6c20f56b6d744a746d3f3e40a880" + integrity sha1-1m4lf6kNbCD1a210SnRtPz5AqIA= + dependencies: + "@types/react-helmet" "^6.1.0" + react-helmet "^6.1.0" + +"@umijs/plugin-initial-state@2.3.0": + version "2.3.0" + resolved "https://registry.npm.taobao.org/@umijs/plugin-initial-state/download/@umijs/plugin-initial-state-2.3.0.tgz#b0afc6cf8446bddb0ed2c2fa4271c4cff993d688" + integrity sha1-sK/Gz4RGvdsO0sL6QnHEz/mT1og= + +"@umijs/plugin-layout@0.15.0": + version "0.15.0" + resolved "https://registry.nlark.com/@umijs/plugin-layout/download/@umijs/plugin-layout-0.15.0.tgz#9b1722145c439e8973e62667dcaa3c71d112509f" + integrity sha1-mxciFFxDnolz5iZn3Ko8cdESUJ8= + dependencies: + "@umijs/route-utils" "^1.0.7" + antd "^4.1.2" + lodash "^4.17.15" + path-to-regexp "1.x" + +"@umijs/plugin-locale@0.11.2": + version "0.11.2" + resolved "https://registry.nlark.com/@umijs/plugin-locale/download/@umijs/plugin-locale-0.11.2.tgz?cache=0&sync_timestamp=1618930998141&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40umijs%2Fplugin-locale%2Fdownload%2F%40umijs%2Fplugin-locale-0.11.2.tgz#281db607916febb18d204b41c2b58fc5c0b7ecc7" + integrity sha1-KB22B5Fv67GNIEtBwrWPxcC37Mc= + dependencies: + "@ant-design/icons" "^4.1.0" + "@formatjs/intl-pluralrules" "^1.5.0" + "@formatjs/intl-relativetimeformat" "^4.5.7" + intl "1.2.5" + moment "^2.29.1" + react-intl "3.12.1" + warning "^4.0.3" + +"@umijs/plugin-model@2.5.7": + version "2.5.7" + resolved "https://registry.nlark.com/@umijs/plugin-model/download/@umijs/plugin-model-2.5.7.tgz?cache=0&sync_timestamp=1618888379352&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40umijs%2Fplugin-model%2Fdownload%2F%40umijs%2Fplugin-model-2.5.7.tgz#1472dde968603a56e2b8c1d2d88540f3e0bcfd61" + integrity sha1-FHLd6WhgOlbiuMHS2IVA8+C8/WE= + dependencies: + fast-deep-equal "3.1.1" + +"@umijs/plugin-request@2.5.2": + version "2.5.2" + resolved "https://registry.npm.taobao.org/@umijs/plugin-request/download/@umijs/plugin-request-2.5.2.tgz#8fb20654b8b45f4b57a8c0f7829e128c47c0be71" + integrity sha1-j7IGVLi0X0tXqMD3gp4SjEfAvnE= + dependencies: + "@ahooksjs/use-request" "^2.0.0" + umi-request "^1.2.14" + +"@umijs/plugin-test@1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@umijs/plugin-test/download/@umijs/plugin-test-1.0.0.tgz#6438ab9619395b6dd4ffb9e3f546c6564a31dd31" + integrity sha1-ZDirlhk5W23U/7nj9UbGVkox3TE= + dependencies: + "@umijs/test" "^3.0.7" + +"@umijs/preset-built-in@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/preset-built-in/-/preset-built-in-3.4.15.tgz#28e1b2def2159e0d661fd72be54eae9906852d0b" + integrity sha512-QbrgYQU5A4KlVqaOx+mOtNwa5DcLC2pGFWrT3xinlgu14gmOvpbH85JLkMpnUI/4KCgx8jOWXNOpV5Y6BO1m6A== dependencies: "@types/react-router-config" "5.0.2" - "@umijs/babel-preset-umi" "3.4.8" - "@umijs/bundler-webpack" "3.4.8" - "@umijs/deps" "0.8.1" - "@umijs/renderer-mpa" "3.4.8" - "@umijs/renderer-react" "3.4.8" - "@umijs/runtime" "3.4.8" - "@umijs/server" "3.4.8" - "@umijs/types" "3.4.8" - "@umijs/utils" "3.4.8" + "@umijs/babel-preset-umi" "3.4.15" + "@umijs/bundler-webpack" "3.4.15" + "@umijs/deps" "3.4.15" + "@umijs/renderer-mpa" "3.4.15" + "@umijs/renderer-react" "3.4.15" + "@umijs/runtime" "3.4.15" + "@umijs/server" "3.4.15" + "@umijs/types" "3.4.15" + "@umijs/utils" "3.4.15" es5-imcompatible-versions "^0.1.62" history-with-query "4.10.4" react-refresh "0.9.0" @@ -3269,10 +3980,10 @@ react-router-dom "5.2.0" regenerator-runtime "0.13.5" -"@umijs/preset-dumi@1.1.13": - version "1.1.13" - resolved "https://registry.npmjs.org/@umijs/preset-dumi/-/preset-dumi-1.1.13.tgz#c21d33144b351c65558a90d6c054d12c0a16d184" - integrity sha512-WjSH5MIWDNo4Apg2NOm+0kCbmqrIWCJWGb7WheSb95ETYHBPiYgLIYHUyPrVCTlZKkG2x6NdxneShC/qlF4nKg== +"@umijs/preset-dumi@1.1.17": + version "1.1.17" + resolved "https://registry.npmjs.org/@umijs/preset-dumi/-/preset-dumi-1.1.17.tgz#4f829ae1f45724bc7720830d97403981779bfc07" + integrity sha512-g/dV2ZbcFKWGwsQUFj5QdDEmmoUcxr84JUxQuGU/XO2SfixdbOM3rLr8j9kKH/qGOEa8CAZKsDCe0HCQaVdelg== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" @@ -3288,7 +3999,7 @@ copy-text-to-clipboard "^2.2.0" deepmerge "^4.2.2" dumi-assets-types "1.0.0" - dumi-theme-default "1.0.13" + dumi-theme-default "1.1.0" enhanced-resolve "^4.1.1" github-slugger "^1.3.0" hast-util-has-property "^1.0.4" @@ -3317,30 +4028,58 @@ unist-util-visit "^2.0.1" unist-util-visit-parents "^3.0.1" -"@umijs/renderer-mpa@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/renderer-mpa/-/renderer-mpa-3.4.8.tgz#e00f77f976c0406dd0b213d8b75841fbc154d8c0" - integrity sha512-E7GrzFPtXXoAoR0R4Xqt3ztFL+VIfv+a4ammFdouxxWkONnmZ+ede+V2TEzEK3+89Eu2eryWqmx5rIKu1aWaUg== +"@umijs/preset-react@1.x": + version "1.8.7" + resolved "https://registry.nlark.com/@umijs/preset-react/download/@umijs/preset-react-1.8.7.tgz#8d48ddaadfebdaf38911b60474bc109540e6da81" + integrity sha1-jUjdqt/r2vOJEbYEdLwQlUDm2oE= + dependencies: + "@umijs/plugin-access" "2.3.3" + "@umijs/plugin-analytics" "0.2.2" + "@umijs/plugin-antd" "0.9.1" + "@umijs/plugin-crossorigin" "1.2.0" + "@umijs/plugin-dva" "0.12.1" + "@umijs/plugin-helmet" "1.1.3" + "@umijs/plugin-initial-state" "2.3.0" + "@umijs/plugin-layout" "0.15.0" + "@umijs/plugin-locale" "0.11.2" + "@umijs/plugin-model" "2.5.7" + "@umijs/plugin-request" "2.5.2" + "@umijs/plugin-test" "1.0.0" + +"@umijs/renderer-mpa@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/renderer-mpa/-/renderer-mpa-3.4.15.tgz#107b89dee8b721adadccc230b460fba0620965a6" + integrity sha512-qJxFtZBj2eVoCie4kVchtFbgMkwZ75xd6zYwYygKeXn1cYkdKv/dUGnDI6IQA+E2czxuIz0Qt+P13WUhrfRcmw== dependencies: "@types/react" "^16.9.43" "@types/react-dom" "^16.9.8" - "@umijs/runtime" "3.4.8" + "@umijs/runtime" "3.4.15" -"@umijs/renderer-react@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/renderer-react/-/renderer-react-3.4.8.tgz#848365fb3010dc53ae89d17cfcef9e7f2374b8ba" - integrity sha512-kMnxOHGCWmpLG464uYCvRshH7R5XvdkjA/1kKGM9y3xUDxK3dm7pV8I+LXZFrTGykH2fI/EShhFaRRDLjwWNUw== +"@umijs/renderer-react@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/renderer-react/-/renderer-react-3.4.15.tgz#fbd3dac7b02533b30c75fb1fe845d2514abb3440" + integrity sha512-VMHVzk1w9c5eWG8IwBumj71yTvhsj5O2jMWd6+6Upln7ewOOjBESUj7eafgZEDTs8iCaU1bl5MDjz8dNv78McA== dependencies: "@types/react" "^16.9.43" "@types/react-dom" "^16.9.8" "@types/react-router-config" "^5.0.2" - "@umijs/runtime" "3.4.8" + "@umijs/runtime" "3.4.15" react-router-config "5.1.1" -"@umijs/runtime@3.4.8", "@umijs/runtime@^3.2.14": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/runtime/-/runtime-3.4.8.tgz#e0de30a6924e8a4fd24db2c532df6222f4318f82" - integrity sha512-MhPL8Rx2HS9ruBrJr1lFjQ5hm2mweQ0cNUZNs5jMZnm8s3v4SpCOlGJFVA3J4OyW1IsD8mAgsSfT7RvD6eh1Kg== +"@umijs/route-utils@^1.0.7": + version "1.0.37" + resolved "https://registry.npm.taobao.org/@umijs/route-utils/download/@umijs/route-utils-1.0.37.tgz#1ceb516980d4754ce2d5959878fe72259091a990" + integrity sha1-HOtRaYDUdUzi1ZWYeP5yJZCRqZA= + dependencies: + "@qixian.cs/path-to-regexp" "^6.1.0" + fast-deep-equal "^3.1.3" + lodash.isequal "^4.5.0" + memoize-one "^5.1.1" + +"@umijs/runtime@3.4.15", "@umijs/runtime@^3.2.14": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/runtime/-/runtime-3.4.15.tgz#430518cb33a9a9088849268086674ffd90a80509" + integrity sha512-OIBSIb9rju3iBcubT0e6MMA6YCqN8BibxYzk9oEGADvuiCxuR/hDhfkO5Vs6DzgI0MVlz8ZrpF9rTKAwPQKkKA== dependencies: "@types/react-router" "5.1.12" "@types/react-router-dom" "5.1.7" @@ -3349,32 +4088,50 @@ react-router-dom "5.2.0" use-subscription "1.5.1" -"@umijs/server@3.4.8": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/server/-/server-3.4.8.tgz#3a43083c0320861d847a0a13b6612336626888a9" - integrity sha512-I/NrWamzxgoxm4DTkKC64HYnOQnZqxSsDaBXUHm/aJSv9mKfLU2wUQpG7LC8Za6tlGL9zq5Kq/oiNpuUdxss6Q== +"@umijs/server@3.4.15": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/server/-/server-3.4.15.tgz#11aba5c3cfdde4741db6d8efcc11911a0171583a" + integrity sha512-wiFJCZ1orGcGM9pBw8E/decjyYAxINEktRg6LqbIs+UGHOnwsXMmCXIME1eIPZBoaOL6Nq+XI64p2FXXjARHsQ== dependencies: - "@umijs/deps" "0.8.1" - "@umijs/utils" "3.4.8" + "@umijs/deps" "3.4.15" + "@umijs/utils" "3.4.15" -"@umijs/types@3.4.8", "@umijs/types@3.x": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/types/-/types-3.4.8.tgz#102ceb5289578dde451d073ab63dc753f98420f8" - integrity sha512-YYbbCtay8GFEnXyEcBAgqIDfLYFnF7VVLVnKXNAO+Y3Tsh0NZIrMyiqpZIj5AMwl77C0BcC1xnI1T4b96LcXzw== +"@umijs/test@^3.0.7", "@umijs/test@^3.4.15": + version "3.4.15" + resolved "https://registry.nlark.com/@umijs/test/download/@umijs/test-3.4.15.tgz?cache=0&sync_timestamp=1620373313420&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40umijs%2Ftest%2Fdownload%2F%40umijs%2Ftest-3.4.15.tgz#c55b4a9591c8130ad62c882b5b32e522c65dcb87" + integrity sha1-xVtKlZHIEwrWLIgrWzLlIsZdy4c= dependencies: - "@umijs/babel-preset-umi" "3.4.8" - "@umijs/core" "3.4.8" - "@umijs/deps" "0.8.1" - "@umijs/server" "3.4.8" - "@umijs/utils" "3.4.8" + "@babel/core" "7.12.10" + "@umijs/babel-preset-umi" "3.4.15" + "@umijs/utils" "3.4.15" + babel-core "7.0.0-bridge.0" + babel-jest "^26.6.3" + core-js "3.8.2" + identity-obj-proxy "3.0.0" + jest "^26.6.3" + jest-cli "^26.6.3" + jest-environment-jsdom-fourteen "1.0.1" + regenerator-runtime "^0.13.7" + whatwg-fetch "^3.5.0" + +"@umijs/types@3.4.15", "@umijs/types@3.x": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/types/-/types-3.4.15.tgz#4556da604f2883def9cc16bf845c165c1eacfe8c" + integrity sha512-r5P1fncae1fhD8ZmCpfX0ULbduiYVO84+HCZf84Nb9ZVkprctPUIOQu7LHEV7Wb/n6CHixLb6ZBKwuFzLDf9gA== + dependencies: + "@umijs/babel-preset-umi" "3.4.15" + "@umijs/core" "3.4.15" + "@umijs/deps" "3.4.15" + "@umijs/server" "3.4.15" + "@umijs/utils" "3.4.15" webpack-chain "6.5.1" -"@umijs/utils@3.4.8", "@umijs/utils@^3.2.28": - version "3.4.8" - resolved "https://registry.npmjs.org/@umijs/utils/-/utils-3.4.8.tgz#770604486a06e9099eba42d4e020176daf9f7480" - integrity sha512-ewVj7M+B3WCRv7yqBBmN/JiiA/copH0cU7uGwIrnfytX86wjyjgq54LJ1Yj9bpw9axbOB+qaU2x+arfU6LLLag== +"@umijs/utils@3.4.15", "@umijs/utils@^3.2.28": + version "3.4.15" + resolved "https://registry.npmjs.org/@umijs/utils/-/utils-3.4.15.tgz#8e610629a294ad7fa55e37d139e439d681528255" + integrity sha512-/pGUVPJNljMLVEMFgSwvbkJ7QVpDOT5/fcfSHNSNNhtbakbhAo/FuFdeFxke5VKCUgEElmgmH5PNjgc/qkXWnQ== dependencies: - "@umijs/deps" "0.8.1" + "@umijs/deps" "3.4.15" "@zkochan/cmd-shim@^3.1.0": version "3.1.0" @@ -3393,7 +4150,7 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.3, abab@^2.0.5: +abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -3431,6 +4188,14 @@ accord@^0.29.0: uglify-js "^2.8.22" when "^3.7.8" +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -3444,20 +4209,35 @@ acorn-jsx@^5.3.1: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn@5.X, acorn@^5.0.3, acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.5: + version "6.4.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.1.0: - version "8.1.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.1.1.tgz#fb0026885b9ac9f48bac1e185e4af472971149ff" - integrity sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g== + version "8.2.4" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" + integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== add-dom-event-listener@^1.1.0: version "1.1.0" @@ -3466,6 +4246,11 @@ add-dom-event-listener@^1.1.0: dependencies: object-assign "4.x" +address@>=0.0.1, address@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -3494,13 +4279,36 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== +ahooks@^2.10.2: + version "2.10.3" + resolved "https://registry.npmjs.org/ahooks/-/ahooks-2.10.3.tgz#5032371ca7874b92ff33b65d190ebaab8006218e" + integrity sha512-PtSklAZkvxTLUog/lg/tpzgXI0Bw1N7ILqZpQFfQZM4gIemvngFo9RQCiYEs4zbQkZUDyPkl2s3tKMZ+o6JgTw== dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" + "@ahooksjs/use-request" "^2.8.6" + "@types/js-cookie" "^2.2.6" + dayjs "^1.9.1" + intersection-observer "^0.7.0" + js-cookie "^2.2.1" + lodash.debounce "^4.0.8" + lodash.isequal "^4.5.0" + lodash.throttle "^4.1.1" + resize-observer-polyfill "^1.5.1" + screenfull "^5.0.0" + +airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== + dependencies: + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" + object.assign "^4.1.0" + object.entries "^1.1.2" + prop-types "^15.7.2" + prop-types-exact "^1.2.0" + react-is "^16.13.1" ajv-errors@^1.0.0: version "1.0.1" @@ -3533,15 +4341,46 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.1.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.1.0.tgz#45d5d3d36c7cdd808930cc3e603cf6200dbeb736" - integrity sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ== + version "8.2.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" + integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" +ali-oss@^6.12.0: + version "6.15.2" + resolved "https://registry.npmjs.org/ali-oss/-/ali-oss-6.15.2.tgz#276c3bdff5f89460ac9feac8d1d2a0bc32a18d6c" + integrity sha512-sLB3a2Q6BvD4fNfHO4a0uuVn+5dlFaWUE/tExFk8bNMTevNGb4hH419kyvTSvKsO8FGLIhyezdi2NVhLHwhPqA== + dependencies: + address "^1.0.0" + agentkeepalive "^3.4.1" + bowser "^1.6.0" + co-defer "^1.0.0" + copy-to "^2.0.1" + dateformat "^2.0.0" + debug "^2.2.0" + destroy "^1.0.4" + end-or-error "^1.0.1" + get-ready "^1.0.0" + humanize-ms "^1.2.0" + is-type-of "^1.0.0" + js-base64 "^2.5.2" + jstoxml "^0.2.3" + merge-descriptors "^1.0.1" + mime "^2.4.5" + mz-modules "^2.1.0" + platform "^1.3.1" + pump "^3.0.0" + sdk-base "^2.0.1" + stream-http "2.8.2" + stream-wormhole "^1.0.4" + urllib "^2.33.1" + utility "^1.8.0" + xml2js "^0.4.16" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -3556,18 +4395,6 @@ alphanum-sort@^1.0.0: resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -amp-message@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz#a78f1c98995087ad36192a41298e4db49e3dfc45" - integrity sha1-p48cmJlQh602GSpBKY5NtJ49/EU= - dependencies: - amp "0.3.1" - -amp@0.3.1, amp@~0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz#6adf8d58a74f361e82c1fa8d389c079e139fc47d" - integrity sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0= - ansi-align@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -3599,12 +4426,12 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -3635,7 +4462,7 @@ ansi-regex@^3.0.0: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.1.0: +ansi-regex@^4.0.0, ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -3698,10 +4525,10 @@ antd-mobile@^2.3.1: rmc-tabs "~1.2.0" rmc-tooltip "~1.0.0" -antd@^4.1.3, antd@^4.15.0: - version "4.15.1" - resolved "https://registry.npmjs.org/antd/-/antd-4.15.1.tgz#1ba1e0108866e1be03d3e8fb351582ade17d88db" - integrity sha512-zTZz8GY9yERNjSnH6xWU3Rw5sC3RtHEs/LOTKcSMTtU3Q5jHXIbAHKd1C6bYLQT6Ru75p+/UyKvJoNip/ax/WQ== +antd@^4.1.2, antd@^4.1.3, antd@^4.15.4: + version "4.15.4" + resolved "https://registry.npmjs.org/antd/-/antd-4.15.4.tgz#43d0a2d821412f5765dc5eec765c817effcae79d" + integrity sha512-1c0ykHGomcd7QhEeRtynxN3i7fb7JBdnEq2/Yqhf7yzMIhGSfZm+h+A2lTqMOMheCVL6q2ie7lxqhtNLq6sWoQ== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons" "^4.6.2" @@ -3720,7 +4547,7 @@ antd@^4.1.3, antd@^4.15.0: rc-dropdown "~3.2.0" rc-field-form "~1.20.0" rc-image "~5.2.4" - rc-input-number "~7.0.1" + rc-input-number "~7.1.0" rc-mentions "~1.5.0" rc-menu "~8.10.0" rc-motion "^2.4.0" @@ -3774,6 +4601,11 @@ append-buffer@^1.0.2: dependencies: buffer-equal "^1.0.0" +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -3847,6 +4679,16 @@ array-differ@^2.0.3: resolved "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -3857,7 +4699,7 @@ array-ify@^1.0.0: resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.1: +array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== @@ -3885,6 +4727,11 @@ array-union@^1.0.2: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -3895,6 +4742,14 @@ array-unique@^0.3.2: resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.find@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" + integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.4" + array.prototype.flat@^1.2.3: version "1.2.4" resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" @@ -3904,6 +4759,16 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3956,35 +4821,30 @@ ast-types@^0.13.2: dependencies: tslib "^2.0.1" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-validator@^3.0.3: - version "3.5.1" - resolved "https://registry.npmjs.org/async-validator/-/async-validator-3.5.1.tgz#cd62b9688b2465f48420e27adb47760ab1b5559f" - integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ== - -async@^2.6.3, async@~2.6.1: - version "2.6.3" - resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -async@~3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + version "3.5.2" + resolved "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" + integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== asynckit@^0.4.0: version "0.4.0" @@ -4037,13 +4897,31 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.21.0: +axios@^0.21.1: version "0.21.1" resolved "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: follow-redirects "^1.10.0" +babel-core@7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-jest@^24.8.0, babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -4058,6 +4936,11 @@ babel-jest@^26.6.3: graceful-fs "^4.2.4" slash "^3.0.0" +babel-plugin-dva-hmr@^0.4.2: + version "0.4.2" + resolved "https://registry.npm.taobao.org/babel-plugin-dva-hmr/download/babel-plugin-dva-hmr-0.4.2.tgz#56cf3d49cc366fb191cd883e27ca42bddfd12735" + integrity sha1-Vs89Scw2b7GRzYg+J8pCvd/RJzU= + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -4065,7 +4948,7 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^5.2.0: +babel-plugin-istanbul@^5.1.0, babel-plugin-istanbul@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== @@ -4086,6 +4969,13 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + babel-plugin-jest-hoist@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" @@ -4096,6 +4986,26 @@ babel-plugin-jest-hoist@^26.6.2: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" +babel-plugin-macros@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz#41f7ead616fc36f6a93180e89697f69f51671181" + integrity sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ== + dependencies: + "@babel/runtime" "^7.4.2" + cosmiconfig "^5.2.0" + resolve "^1.10.0" + +babel-plugin-module-resolver@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" + integrity sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA== + dependencies: + find-babel-config "^1.1.0" + glob "^7.1.2" + pkg-up "^2.0.0" + reselect "^3.0.1" + resolve "^1.4.0" + babel-plugin-polyfill-corejs2@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" @@ -4120,11 +5030,21 @@ babel-plugin-polyfill-regenerator@^0.2.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.2.0" +babel-plugin-react-require@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/babel-plugin-react-require/-/babel-plugin-react-require-3.0.0.tgz#2e4e7b4496b93a654a1c80042276de4e4eeb20e3" + integrity sha1-Lk57RJa5OmVKHIAEInbeTk7rIOM= + babel-plugin-react-require@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/babel-plugin-react-require/-/babel-plugin-react-require-3.1.1.tgz#5c3d2564fa16b1e45212ed52519db147b1596106" integrity sha512-XFz+B0dWx41fnGnugzCWn5rOgrDHb150N5gFhUfO3BgYDCT25o4sofRtd9uUfqUHoRu+t4/r5Cr2RMPIKuCt2g== +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -4143,6 +5063,14 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + babel-preset-jest@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" @@ -4151,6 +5079,34 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" +babel-preset-umi@1.8.4: + version "1.8.4" + resolved "https://registry.npmjs.org/babel-preset-umi/-/babel-preset-umi-1.8.4.tgz#f7db66eca3aa394fda957a51f05dc24d2b77acb6" + integrity sha512-4IU0WuLZTiw7MstZJMwtjyYIGyOhWNUKcpSz1v5T9X8/ka2WXZ3qlkUe8dEb2kBNGrbOdXRw7u8FBEMtexqbow== + dependencies: + "@babel/core" "7.4.5" + "@babel/plugin-proposal-async-generator-functions" "7.2.0" + "@babel/plugin-proposal-class-properties" "7.4.4" + "@babel/plugin-proposal-decorators" "7.4.4" + "@babel/plugin-proposal-do-expressions" "7.2.0" + "@babel/plugin-proposal-export-default-from" "7.2.0" + "@babel/plugin-proposal-export-namespace-from" "7.2.0" + "@babel/plugin-proposal-function-bind" "7.2.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.4.4" + "@babel/plugin-proposal-object-rest-spread" "7.4.4" + "@babel/plugin-proposal-optional-catch-binding" "7.2.0" + "@babel/plugin-proposal-optional-chaining" "7.2.0" + "@babel/plugin-proposal-pipeline-operator" "7.3.2" + "@babel/plugin-syntax-dynamic-import" "7.2.0" + "@babel/plugin-transform-destructuring" "7.4.4" + "@babel/plugin-transform-runtime" "7.4.4" + "@babel/preset-env" "7.4.5" + "@babel/preset-react" "7.0.0" + "@babel/runtime" "7.4.5" + babel-plugin-macros "2.6.1" + babel-plugin-react-require "3.0.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + babel-runtime@6.x, babel-runtime@^6.23.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -4194,6 +5150,14 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bcrypt@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz#f1a2c20f208e2ccdceea4433df0c8b2c54ecdf71" + integrity sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + node-addon-api "^3.1.0" + before-after-hook@^2.0.0: version "2.2.1" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz#73540563558687586b52ed217dad6a802ab1549c" @@ -4204,15 +5168,22 @@ big.js@^5.2.2: resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -blessed@0.1.81: - version "0.1.81" - resolved "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129" - integrity sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk= +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" @@ -4229,16 +5200,16 @@ bn.js@^5.0.0, bn.js@^5.1.1: resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== -bodec@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz#bc851555430f23c9f7650a75ef64c6a94c3418cc" - integrity sha1-vIUVVUMPI8n3ZQp172TGqUw0GMw= - boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +bowser@^1.6.0: + version "1.9.4" + resolved "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== + boxen@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" @@ -4253,20 +5224,6 @@ boxen@^3.0.0: type-fest "^0.3.0" widest-line "^2.0.0" -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -4275,7 +5232,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -4308,6 +5265,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -4369,14 +5333,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.1, browserslist@^4.6.4: - version "4.16.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz#7ebf913487f40caf4637b892b268069951c35d58" - integrity sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.6.0, browserslist@^4.6.1, browserslist@^4.6.4: + version "4.16.6" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: - caniuse-lite "^1.0.30001208" + caniuse-lite "^1.0.30001219" colorette "^1.2.2" - electron-to-chromium "^1.3.712" + electron-to-chromium "^1.3.723" escalade "^3.1.1" node-releases "^1.1.71" @@ -4428,7 +5392,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^3.1.0: +builtin-modules@^3.0.0, builtin-modules@^3.1.0: version "3.2.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== @@ -4443,6 +5407,14 @@ builtins@^1.0.3: resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= +busboy@^0.2.11: + version "0.2.14" + resolved "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" + integrity sha1-bCpiLvz0fFe7vh4qnDetNseSVFM= + dependencies: + dicer "0.2.5" + readable-stream "1.1.x" + byline@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" @@ -4552,6 +5524,14 @@ callsites@^3.0.0: resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" @@ -4618,10 +5598,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001208: - version "1.0.30001208" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9" - integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: + version "1.0.30001223" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz#39b49ff0bfb3ee3587000d2f66c47addc6e14443" + integrity sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA== capture-exit@^2.0.0: version "2.0.0" @@ -4657,14 +5637,6 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@3.0.0, chalk@^3.0.0, chalk@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4677,9 +5649,9 @@ chalk@^1.1.3: supports-color "^2.0.0" chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + version "4.1.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -4714,12 +5686,36 @@ chardet@^0.7.0: resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -charm@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296" - integrity sha1-BsIe7RobBq62dVPNxT4jJ0usIpY= +cheerio-select@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.4.0.tgz#3a16f21e37a2ef0f211d6d1aa4eff054bb22cdc9" + integrity sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew== + dependencies: + css-select "^4.1.2" + css-what "^5.0.0" + domelementtype "^2.2.0" + domhandler "^4.2.0" + domutils "^2.6.0" -chokidar@3.5.1, chokidar@^3.0.2, chokidar@^3.2.2, chokidar@^3.5.1: +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.9" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.9.tgz#a3ae6b7ce7af80675302ff836f628e7cb786a67f" + integrity sha512-QF6XVdrLONO6DXRF5iaolY+odmhj2CLj+xzNod7INPWMi/x9X4SOylH0S/vaPpX+AUU6t04s34SQNh7DbkuCng== + dependencies: + cheerio-select "^1.4.0" + dom-serializer "^1.3.1" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" + +china-division@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/china-division/-/china-division-2.3.1.tgz#a49fa806af01d1852747466ad3c30bf0be988511" + integrity sha512-mOfLagVRZ+lRmbIIZ0sci0+9Sr+uGyPCp9an4Orov2KxLf3DGSB/4qyao/jy3pegW4Weppvh0yzGfs+dAPJA7A== + +chokidar@3.5.1, chokidar@^3.0.2: version "3.5.1" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -4734,15 +5730,39 @@ chokidar@3.5.1, chokidar@^3.0.2, chokidar@^3.2.2, chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.1" +chokidar@^2.0.4: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + ci-info@^1.5.0: version "1.6.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz?cache=0&sync_timestamp=1613628966668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fci-info%2Fdownload%2Fci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc= ci-info@^2.0.0: version "2.0.0" @@ -4777,11 +5797,6 @@ classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classna resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - cli-boxes@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" @@ -4794,28 +5809,6 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-tableau@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz#baa78d83e08a2d7ab79b7dad9406f0254977053f" - integrity sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ== - dependencies: - chalk "3.0.0" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - cli-width@^2.0.0: version "2.2.1" resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -4921,6 +5914,11 @@ co-body@^6.0.0: raw-body "^2.3.3" type-is "^1.6.16" +co-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/co-defer/-/co-defer-1.0.0.tgz#3e4a787a8eed6b0a21ee287c094f7e8de0d3c818" + integrity sha1-Pkp4eo7tawoh7ih8CU9+jeDTyBg= + co@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -5011,7 +6009,7 @@ columnify@^1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -5023,21 +6021,16 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@2.15.1: - version "2.15.1" - resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== +commander@*, commander@>=7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^6.0.0, commander@^6.2.0: - version "6.2.1" - resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -5058,7 +6051,7 @@ component-classes@^1.2.5: dependencies: component-indexof "0.0.3" -component-emitter@^1.2.0, component-emitter@^1.2.1: +component-emitter@^1.2.1, component-emitter@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -5078,7 +6071,7 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -5098,7 +6091,7 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -concat-with-sourcemaps@^1.1.0: +concat-with-sourcemaps@^1.0.5, concat-with-sourcemaps@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== @@ -5125,17 +6118,14 @@ configstore@^4.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +connected-react-router@6.5.2: + version "6.5.2" + resolved "https://registry.npm.taobao.org/connected-react-router/download/connected-react-router-6.5.2.tgz#422af70f86cb276681e20ab4295cf27dd9b6c7e3" + integrity sha1-Qir3D4bLJ2aB4gq0KVzyfdm2x+M= dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" + immutable "^3.8.1" + prop-types "^15.7.2" + seamless-immutable "^7.1.3" console-browserify@^1.1.0: version "1.2.0" @@ -5164,19 +6154,11 @@ content-disposition@~0.5.2: dependencies: safe-buffer "5.1.2" -content-type@^1.0.4: +content-type@^1.0.2, content-type@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - conventional-changelog-angular@^5.0.3: version "5.0.12" resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" @@ -5260,14 +6242,14 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@1.X, convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" -cookiejar@^2.1.0: +cookiejar@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== @@ -5321,19 +6303,29 @@ copy-to@^2.0.1: resolved "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" integrity sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU= -core-js-compat@^3.6.2, core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.10.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.1.tgz#62183a3a77ceeffcc420d907a3e6fc67d9b27f1c" - integrity sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg== +core-js-compat@^3.1.1, core-js-compat@^3.6.2, core-js-compat@^3.9.0, core-js-compat@^3.9.1: + version "3.12.0" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.0.tgz#a031e51fe411085e33cb629bfee2acaa53bc309a" + integrity sha512-vvaN8EOvYBEjrr+MN3vCKrMNc/xdYZI+Rt/uPMROi4T5Hj8Fz6TiPQm2mrB9aZoQVW1lCFHYmMrv99aUct9mkg== dependencies: - browserslist "^4.16.3" + browserslist "^4.16.6" semver "7.0.0" +core-js@3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" + integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== + core-js@3.6.5: version "3.6.5" resolved "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== +core-js@3.8.2: + version "3.8.2" + resolved "https://registry.nlark.com/core-js/download/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044" + integrity sha1-Ch/WcJJG2pyo7/W7DL0V+6mscEQ= + core-js@^1.0.0: version "1.2.7" resolved "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -5344,12 +6336,12 @@ core-js@^2.4.0: resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0, cosmiconfig@^5.1.0: +cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -5409,19 +6401,18 @@ create-react-class@^15.6.0: loose-envify "^1.3.1" object-assign "^4.1.1" -cron@1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz#4ac5e3c55ba8c163d84f3407bde94632da8370ce" - integrity sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg== - dependencies: - moment-timezone "^0.5.x" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-env@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== +cron-parser@^3.1.0: + version "3.5.0" + resolved "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz#b1a9da9514c0310aa7ef99c2f3f1d0f8c235257c" + integrity sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ== dependencies: - cross-spawn "^7.0.1" + is-nan "^1.3.2" + luxon "^1.26.0" cross-spawn@^5.0.1: version "5.1.0" @@ -5443,7 +6434,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5474,10 +6465,12 @@ crypto-random-string@^1.0.0: resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +crypto-random-string@^3.3.0, crypto-random-string@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.1.tgz#13cee94cac8001e4842501608ef779e0ed08f82d" + integrity sha512-5j88ECEn6h17UePrLi6pn1JcLtAiANa3KExyr9y9Z5vo2mv56Gh3I4Aja/B9P9uyMwyxNHAHWv+nE72f30T5Dg== + dependencies: + type-fest "^0.8.1" css-animation@1.x, css-animation@^1.3.2: version "1.6.1" @@ -5549,6 +6542,17 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" +css-select@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.2.tgz#8b52b6714ed3a80d8221ec971c543f3b12653286" + integrity sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw== + dependencies: + boolbase "^1.0.0" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" + css-selector-tokenizer@^0.7.0: version "0.7.3" resolved "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" @@ -5578,6 +6582,21 @@ css-what@^3.2.1: resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-5.0.0.tgz#f0bf4f8bac07582722346ab243f6a35b512cfc47" + integrity sha512-qxyKHQvgKwzwDWC/rGbT821eJalfupxYW2qbSJSAtdSTimsr/MlaGONoNLllaUPZWf8QnbcKM/kPVYUQuEKAFA== + +css@2.X, css@^2.2.1: + version "2.2.4" + resolved "https://registry.npmjs.org/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + cssdb@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" @@ -5651,7 +6670,7 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.1.10: +cssnano@^4.1.10, cssnano@^4.1.8: version "4.1.11" resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== @@ -5668,15 +6687,22 @@ csso@^4.0.2: dependencies: css-tree "^1.1.2" +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4, cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + cssom@^0.4.4: version "0.4.4" resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" cssstyle@^2.3.0: version "2.3.0" @@ -5686,14 +6712,9 @@ cssstyle@^2.3.0: cssom "~0.3.6" csstype@^3.0.2: - version "3.0.7" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" - integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== - -culvert@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz#9502f5f0154a2d5a22a023e79f71cc936fa6ef6f" - integrity sha1-lQL18BVKLVoioCPnn3HMk2+m728= + version "3.0.8" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== currently-unhandled@^0.4.1: version "0.4.1" @@ -5707,6 +6728,14 @@ cyclist@^1.0.1: resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + dargs@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" @@ -5726,6 +6755,15 @@ data-uri-to-buffer@3: resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -5736,19 +6774,33 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" date-fns@^2.15.0: - version "2.21.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.21.0.tgz#4672b8e926d1b37d5353dc14da44b883481ac927" - integrity sha512-lbAFpaKz7QuVxm6m1rmioh4BB2gmLx1r1JMYXU2A/ufT5ly4zEG7HYH4fvS/QfbdyC5rkYyiS30mYz4Q7XCO+w== + version "2.21.3" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.21.3.tgz#8f5f6889d7a96bbcc1f0ea50239b397a83357f9b" + integrity sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw== + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= dateformat@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dayjs@~1.8.24, dayjs@~1.8.25: - version "1.8.36" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz#be36e248467afabf8f5a86bae0de0cdceecced50" - integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw== +dayjs@^1.9.1: + version "1.10.4" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + +debug-fabulous@1.X: + version "1.1.0" + resolved "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg== + dependencies: + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" debug@3.1.0, debug@~3.1.0: version "3.1.0" @@ -5757,13 +6809,27 @@ debug@3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@~4.3.1: +debug@3.X, debug@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" +debug@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5771,13 +6837,6 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.6: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -5818,6 +6877,11 @@ dedent@^0.7.0: resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +dedupe@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/dedupe/-/dedupe-3.0.2.tgz#c7c9d5534167b69dc07bd21d093882abbe88b0a9" + integrity sha512-1BmvzpTdYjyvzTMgd8+A7R9jNJh8GfvVZJqREZpqq7OpePtVFNdw56FjsHFdC35ROSng6y+h4qFYO/VkiKEztg== + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -5843,6 +6907,13 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-user-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6" + integrity sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY= + dependencies: + os-name "~1.0.3" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -5946,6 +7017,16 @@ detect-indent@^5.0.0: resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@2.X, detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -5959,6 +7040,19 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" +dicer@0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" + integrity sha1-WZbAhrszIYyBLAkL3cCc0S+stw8= + dependencies: + readable-stream "1.1.x" + streamsearch "0.1.2" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -5978,6 +7072,13 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +digest-header@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz#11ccf6deec5766ac379744d901c12cba49514be6" + integrity sha1-Ecz23uxXZqw3l0TZAcEsuklRS+Y= + dependencies: + utility "0.1.11" + dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" @@ -5985,6 +7086,18 @@ dir-glob@^2.2.2: dependencies: path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= + doctrine@1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -5993,6 +7106,13 @@ doctrine@1.5.0: esutils "^2.0.2" isarray "^1.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -6001,9 +7121,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-align@1.x, dom-align@^1.7.0: - version "1.12.0" - resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" - integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== + version "1.12.1" + resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz#aedbc2c312983b46ea6b7a4d636617336a490ee9" + integrity sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g== dom-serializer@0: version "0.2.2" @@ -6013,6 +7133,20 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1, dom-serializer@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz#d845a1565d7c041a95e5dab62184ab41e3a519be" + integrity sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha1-DFSL7wSPTR8qlySQAiNgYNqj/YQ= + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -6023,11 +7157,18 @@ domelementtype@1: resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -6035,6 +7176,13 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" + domutils@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -6043,6 +7191,23 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.5.2, domutils@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz#2e15c04185d43fb16ae7057cb76433c6edb938b7" + integrity sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-prop@^4.1.0, dot-prop@^4.2.0: version "4.2.1" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" @@ -6058,9 +7223,9 @@ dot-prop@^5.1.0, dot-prop@^5.2.0: is-obj "^2.0.0" dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + version "8.6.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== dottie@^2.0.0: version "2.0.2" @@ -6072,21 +7237,21 @@ dumi-assets-types@1.0.0: resolved "https://registry.npmjs.org/dumi-assets-types/-/dumi-assets-types-1.0.0.tgz#d5368cb11045b203bf1ef1080e553b2287a2ec81" integrity sha512-7nhSeWM15vybbUAMPLZsdls2jKoHB2UU4P1RM6kLPucuS8eC/HSmufquFqTTYtX4oIDLHGtil/dVtMreNGwhdA== -dumi-theme-default@1.0.13: - version "1.0.13" - resolved "https://registry.npmjs.org/dumi-theme-default/-/dumi-theme-default-1.0.13.tgz#35c0721f7ee70eac7fa893be8c216ab40d594878" - integrity sha512-Z/iOpEDFm6HAh3SVk0XcwBR33lFOYMpdXZLcTSHy7UxVRVmsWmgaCvsFLkGnLL+B8AXW9BkKIq4b1e5xp1VJww== +dumi-theme-default@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/dumi-theme-default/-/dumi-theme-default-1.1.0.tgz#9c38af33d0a1dd98d24c79da0e06d0474aecd0d6" + integrity sha512-dElHtXpkRcSNcg0l3y6U8lWwEQUZOXTt/id6hiRtQnUuRkjwsUqpUBOHj9GFgtSpqeKEPRjemE8ukEYWH7cKJA== dependencies: prism-react-renderer "^1.1.1" prismjs "^1.21.0" rc-tabs "^11.7.1" -dumi@^1.0.12: - version "1.1.13" - resolved "https://registry.npmjs.org/dumi/-/dumi-1.1.13.tgz#514d607691b0ea5ffe227729165ce86e5f66dcc0" - integrity sha512-6OVqFRv3dbE9nagcZasLcGljL9cLKgYZItZJsdhHUvssYRnbSwQsUrDr3TyGUp/jbdQtXOtWv+6dzx6gqHlrgQ== +dumi@^1.1.16: + version "1.1.17" + resolved "https://registry.npmjs.org/dumi/-/dumi-1.1.17.tgz#cc5f26af495fd68114e31015e46cb4c073bfe8f4" + integrity sha512-+9KHCmkbEJWg6hybT+Rl7iruabUy5Jks9xGhTLsF0GQbSvA6pkwTp+VE2lw5GfcJxxQLKSv8rd8pM5n+ctZWNA== dependencies: - "@umijs/preset-dumi" "1.1.13" + "@umijs/preset-dumi" "1.1.17" umi "^3.0.0" duplexer3@^0.1.4: @@ -6109,6 +7274,53 @@ duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +dva-core@2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/dva-core/download/dva-core-2.0.4.tgz#086665d1d5f684e089c5bfac9ba388d91cc9050a" + integrity sha1-CGZl0dX2hOCJxb+sm6OI2RzJBQo= + dependencies: + "@babel/runtime" "^7.0.0" + flatten "^1.0.2" + global "^4.3.2" + invariant "^2.2.1" + is-plain-object "^2.0.3" + redux-saga "^0.16.0" + warning "^3.0.0" + +dva-immer@^0.5.2: + version "0.5.2" + resolved "https://registry.npm.taobao.org/dva-immer/download/dva-immer-0.5.2.tgz?cache=0&sync_timestamp=1618560505895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdva-immer%2Fdownload%2Fdva-immer-0.5.2.tgz#128bd6d96b25f11e6f137807b614b9c58cf03f32" + integrity sha1-EovW2Wsl8R5vE3gHthS5xYzwPzI= + dependencies: + "@babel/runtime" "^7.0.0" + immer "^7.0.5" + +dva-loading@^3.0.20: + version "3.0.22" + resolved "https://registry.npm.taobao.org/dva-loading/download/dva-loading-3.0.22.tgz#c0dd2fb081492752b992d9ce2701b88825186e02" + integrity sha1-wN0vsIFJJ1K5ktnOJwG4iCUYbgI= + dependencies: + "@babel/runtime" "^7.0.0" + +dva@^2.6.0-beta.20: + version "2.6.0-beta.22" + resolved "https://registry.npm.taobao.org/dva/download/dva-2.6.0-beta.22.tgz#3288993ecea70ee9c507d4aa9e0ed8247d4af69c" + integrity sha1-MoiZPs6nDunFB9Sqng7YJH1K9pw= + dependencies: + "@babel/runtime" "^7.0.0" + "@types/isomorphic-fetch" "^0.0.35" + "@types/react-redux" "^7.1.0" + "@types/react-router-dom" "^5.1.2" + connected-react-router "6.5.2" + dva-core "2.0.4" + global "^4.3.2" + history "^4.7.2" + invariant "^2.2.4" + isomorphic-fetch "^2.2.1" + react-redux "^7.1.0" + react-router-dom "^5.1.2" + redux "^4.0.1" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -6117,15 +7329,15 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ee-first@1.1.1: +ee-first@1.1.1, ee-first@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.712: - version "1.3.717" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.717.tgz#78d4c857070755fb58ab64bcc173db1d51cbc25f" - integrity sha512-OfzVPIqD1MkJ7fX+yTl2nKyOE4FReeVfMCzzxQS+Kp43hZYwHwThlGP+EGIZRXJsxCM7dqo8Y65NOX/HP12iXQ== +electron-to-chromium@^1.3.723: + version "1.3.727" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" + integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== elliptic@^6.5.3: version "6.5.4" @@ -6140,13 +7352,6 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - emittery@^0.7.1: version "0.7.2" resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" @@ -6191,6 +7396,11 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +end-or-error@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/end-or-error/-/end-or-error-1.0.1.tgz#dc7a6210fe78d372fee24a8b4899dbd155414dcb" + integrity sha1-3HpiEP5403L+4kqLSJnb0VVBTcs= + enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1: version "4.5.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" @@ -6200,7 +7410,7 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1: memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@2.3.6, enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@^2.3.5: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -6222,6 +7432,70 @@ envinfo@^7.3.1: resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +enzyme-adapter-react-16@^1.14.0: + version "1.15.6" + resolved "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" + integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== + dependencies: + enzyme-adapter-utils "^1.14.0" + enzyme-shallow-equal "^1.0.4" + has "^1.0.3" + object.assign "^4.1.2" + object.values "^1.1.2" + prop-types "^15.7.2" + react-is "^16.13.1" + react-test-renderer "^16.0.0-0" + semver "^5.7.0" + +enzyme-adapter-utils@^1.14.0: + version "1.14.0" + resolved "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" + integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== + dependencies: + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.3" + has "^1.0.3" + object.assign "^4.1.2" + object.fromentries "^2.0.3" + prop-types "^15.7.2" + semver "^5.7.1" + +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" + integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== + dependencies: + has "^1.0.3" + object-is "^1.1.2" + +enzyme@^3.10.0: + version "3.11.0" + resolved "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" + integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== + dependencies: + array.prototype.flat "^1.2.3" + cheerio "^1.0.0-rc.3" + enzyme-shallow-equal "^1.0.1" + function.prototype.name "^1.1.2" + has "^1.0.3" + html-element-map "^1.2.0" + is-boolean-object "^1.0.1" + is-callable "^1.1.5" + is-number-object "^1.0.4" + is-regex "^1.0.5" + is-string "^1.0.5" + is-subset "^0.1.1" + lodash.escape "^4.0.1" + lodash.isequal "^4.5.0" + object-inspect "^1.7.0" + object-is "^1.0.2" + object.assign "^4.1.0" + object.entries "^1.1.1" + object.values "^1.1.1" + raf "^3.4.1" + rst-selector-parser "^2.2.3" + string.prototype.trim "^1.2.1" + err-code@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" @@ -6241,7 +7515,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: +es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: version "1.18.0" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== @@ -6272,10 +7546,28 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + es5-imcompatible-versions@^0.1.62: - version "0.1.67" - resolved "https://registry.npmjs.org/es5-imcompatible-versions/-/es5-imcompatible-versions-0.1.67.tgz#ce7de397dbdb62b926be683282455ac415e06c39" - integrity sha512-L74XSKBby2NFW0Rxf6QhdQ45x0MrxbDmuNicti5arzoK7w2I+A6sxHGIQqPaN5NpoYDO3RTT/I3NZC5oIUskpw== + version "0.1.69" + resolved "https://registry.npmjs.org/es5-imcompatible-versions/-/es5-imcompatible-versions-0.1.69.tgz#6c5e4731decb11f86c1e903b387c62440eb9e950" + integrity sha512-+QW+Q/HBO72pXHiRlWqGXwtxyM83iALRVPV0h/31UnAv5OJ75u1UCn32Kld67BoVMwaBHN2qBGi0SnNmKCkPZA== + +es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" es6-promise@^4.0.3: version "4.2.8" @@ -6289,16 +7581,29 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - escape-html@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -6319,7 +7624,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.8.1: +escodegen@^1.11.0, escodegen@^1.8.1, escodegen@^1.9.1: version "1.14.3" resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -6403,6 +7708,24 @@ eslint-plugin-promise@^4.2.1: resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== +eslint-plugin-react@^7.23.2: + version "7.23.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494" + integrity sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw== + dependencies: + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.3" + object.fromentries "^2.0.4" + object.values "^1.1.3" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.4" + eslint-plugin-standard@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz#0c3bf3a67e853f8bbbc580fb4945fbf16f41b7c5" @@ -6429,17 +7752,17 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint@^7.4.0: - version "7.24.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a" - integrity sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ== + version "7.26.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" + integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.0" + "@eslint/eslintrc" "^0.4.1" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -6519,7 +7842,7 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estree-walker@^0.6.1: +estree-walker@^0.6.0, estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== @@ -6539,20 +7862,13 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter2@5.0.1, eventemitter2@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz#6197a095d5fb6b57e8942f6fd7eaad63a09c9452" - integrity sha1-YZegldX7a1folC9v1+qtY6CclFI= - -eventemitter2@^6.3.1: - version "6.4.4" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" - integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== - -eventemitter2@~0.4.14: - version "0.4.14" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" eventemitter3@^3.1.0: version "3.1.2" @@ -6597,7 +7913,7 @@ execa@^0.7.0: execa@^0.8.0: version "0.8.0" - resolved "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + resolved "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= dependencies: cross-spawn "^5.0.1" @@ -6621,7 +7937,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0, execa@^4.1.0: +execa@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -6659,6 +7975,18 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + expect@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -6671,6 +7999,13 @@ expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -6741,12 +8076,17 @@ fancy-log@^1.3.2: parse-node-version "^1.0.0" time-stamp "^1.0.0" +fast-deep-equal@3.1.1: + version "3.1.1" + resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ= + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -6763,6 +8103,18 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6773,68 +8125,22 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-safe-stringify@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" + integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + fastparse@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== -father-build@^1.19.2: - version "1.19.4" - resolved "https://registry.npmjs.org/father-build/-/father-build-1.19.4.tgz#82d3d0cd584e0aa3eb56880c9820140cce1dac67" - integrity sha512-ub3sqUI6/LsZju0n+AL11VpPvhKZud5XjUpP/gZG4UOeYDPtI4TNWcuniBY9Rvg84OIEBh/WXfpe5p9FF00snA== +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== dependencies: - "@babel/core" "7.12.3" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-proposal-decorators" "7.12.1" - "@babel/plugin-proposal-do-expressions" "7.12.1" - "@babel/plugin-proposal-export-default-from" "7.12.1" - "@babel/plugin-proposal-export-namespace-from" "7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" - "@babel/plugin-proposal-optional-chaining" "7.12.1" - "@babel/plugin-syntax-dynamic-import" "7.8.3" - "@babel/plugin-transform-modules-commonjs" "7.12.1" - "@babel/plugin-transform-runtime" "7.12.1" - "@babel/preset-env" "7.12.1" - "@babel/preset-react" "7.12.1" - "@babel/preset-typescript" "7.12.1" - "@babel/register" "7.12.1" - "@lerna/project" "^3.21.0" - "@rollup/plugin-babel" "5.2.1" - "@rollup/plugin-commonjs" "16.0.0" - "@rollup/plugin-inject" "4.0.2" - "@rollup/plugin-json" "4.1.0" - "@rollup/plugin-node-resolve" "10.0.0" - "@rollup/plugin-replace" "2.3.4" - "@rollup/plugin-url" "5.0.1" - "@svgr/rollup" "5.4.0" - ajv "6.10.0" - autoprefixer "9.6.0" - babel-plugin-istanbul "^5.2.0" - babel-plugin-react-require "3.1.1" - chalk "2.4.2" - chokidar "^3.0.2" - glob "^7.1.4" - gulp-if "2.0.2" - gulp-less "^4.0.1" - gulp-plumber "^1.2.1" - gulp-typescript "5.0.1" - less "3.9.0" - less-plugin-npm-import "2.1.0" - lodash "4.17.19" - rimraf "2.6.3" - rollup "2.33.3" - rollup-plugin-postcss "3.1.8" - rollup-plugin-terser "7.0.2" - rollup-plugin-typescript2 "0.29.0" - signale "1.4.0" - slash2 "2.0.0" - temp-dir "2.0.0" - through2 "3.0.1" - ts-loader "^8.0.7" - typescript "^4.0.5" - update-notifier "3.0.0" - vinyl-fs "3.0.3" - yargs-parser "13.1.2" + reusify "^1.0.4" fault@^1.0.0: version "1.0.4" @@ -6863,11 +8169,6 @@ fbjs@^0.8.3: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -fclone@1.0.11, fclone@~1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640" - integrity sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA= - figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -6880,13 +8181,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -6894,6 +8188,11 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + file-uri-to-path@2: version "2.0.0" resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" @@ -6921,6 +8220,14 @@ filter-obj@^1.1.0: resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= +find-babel-config@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -6996,9 +8303,16 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: readable-stream "^2.3.6" follow-redirects@^1.10.0: - version "1.13.3" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" - integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + version "1.14.0" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz#f5d260f95c5f8c105894491feee5dc8993b402fe" + integrity sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" for-in@^1.0.2: version "1.0.2" @@ -7015,13 +8329,13 @@ fork-stream@^0.0.4: resolved "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" integrity sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA= -form-data@^2.3.1: - version "2.5.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" form-data@~2.3.2: @@ -7038,11 +8352,20 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= -formidable@^1.2.0: +formidable@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== +formstream@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/formstream/-/formstream-1.1.1.tgz#17259d2440c35ca9736db9f45fb3ba3f8669c750" + integrity sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q== + dependencies: + destroy "^1.0.4" + mime "^2.5.2" + pause-stream "~0.0.11" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -7079,6 +8402,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -7102,6 +8432,14 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + fsevents@^2.1.2, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -7125,11 +8463,26 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: + version "1.1.4" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.4.tgz#e4ea839b9d3672ae99d0efd9f38d9191c5eaac83" + integrity sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" + integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== + gauge@~2.7.3: version "2.7.4" resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -7173,7 +8526,7 @@ get-caller-file@^2.0.1: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -7208,6 +8561,11 @@ get-port@^4.2.0: resolved "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== +get-ready@^1.0.0, get-ready@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782" + integrity sha1-+RgX8emt7P6hOlYq38jeiDqzR4I= + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -7256,11 +8614,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-node-fs@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz#49b215e242ebe43aa4c7561bbba499521752080f" - integrity sha1-SbIV4kLr5Dqkx1Ybu6SZUhdSCA8= - git-raw-commits@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" @@ -7288,11 +8641,6 @@ git-semver-tags@^2.0.3: meow "^4.0.0" semver "^6.0.0" -git-sha1@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz#599ac192b71875825e13a445f3a6e05118c2f745" - integrity sha1-WZrBkrcYdYJeE6RF86bgURjC90U= - git-up@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c" @@ -7330,7 +8678,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7359,9 +8707,9 @@ glob-to-regexp@^0.3.0: integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.1.7" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -7377,12 +8725,13 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== +global@^4.3.2: + version "4.4.0" + resolved "https://registry.npm.taobao.org/global/download/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY= dependencies: - ini "1.3.7" + min-document "^2.19.0" + process "^0.11.10" globals@^11.1.0: version "11.12.0" @@ -7403,6 +8752,18 @@ globals@^13.6.0: dependencies: type-fest "^0.20.2" +globby@^11.0.1: + version "11.0.3" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^9.2.0: version "9.2.0" resolved "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -7441,7 +8802,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -7490,6 +8851,23 @@ gulp-plumber@^1.2.1: plugin-error "^0.1.2" through2 "^2.0.3" +gulp-sourcemaps@2.6.5: + version "2.6.5" + resolved "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" + integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg== + dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" + acorn "5.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "1.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom-string "1.X" + through2 "2.X" + gulp-typescript@5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz#96c6565a6eb31e08c2aae1c857b1a079e6226d94" @@ -7532,6 +8910,11 @@ hard-rejection@^2.1.0: resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -7700,9 +9083,9 @@ hast-util-raw@^6.0.0: zwitch "^1.0.0" hast-util-to-html@^7.1.1: - version "7.1.2" - resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.2.tgz#db677f0ee483658cea0eecc9dec30aba42b67111" - integrity sha512-pu73bvORzdF6XZgwl9eID/0RjBb/jtRfoGRRSykpR1+o9rCdiAHpgkSukZsQBRlIqMg6ylAcd7F0F7myJUb09Q== + version "7.1.3" + resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz#9f339ca9bea71246e565fc79ff7dbfe98bb50f5e" + integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw== dependencies: ccount "^1.0.0" comma-separated-tokens "^1.0.0" @@ -7774,7 +9157,7 @@ history-with-query@4.10.4: tiny-warning "^1.0.0" value-equal "^1.0.1" -history@^4.9.0: +history@^4.7.2, history@^4.9.0: version "4.10.1" resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== @@ -7795,7 +9178,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -7831,6 +9214,21 @@ hsla-regex@^1.0.0: resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= +html-element-map@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.0.tgz#fcf226985d7111e6c2b958169312ec750d02f0d3" + integrity sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg== + dependencies: + array-filter "^1.0.0" + call-bind "^1.0.2" + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -7848,6 +9246,16 @@ html-void-elements@^1.0.0: resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-assert@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" @@ -7888,6 +9296,16 @@ http-errors@^1.6.3, http-errors@^1.7.3: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -7940,14 +9358,14 @@ human-signals@^1.1.1: resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -humanize-ms@^1.2.1: +humanize-ms@^1.2.0, humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.15, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7966,6 +9384,13 @@ icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + ieee754@^1.1.4: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -7976,15 +9401,10 @@ iferr@^0.1.5: resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= - ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + version "3.0.4" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" @@ -7993,7 +9413,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1: +ignore@^5.1.1, ignore@^5.1.4: version "5.1.8" resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -8003,7 +9423,17 @@ image-size@~0.5.0: resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= -import-cwd@^2.0.0: +immer@^7.0.5: + version "7.0.15" + resolved "https://registry.nlark.com/immer/download/immer-7.0.15.tgz?cache=0&sync_timestamp=1619363065556&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fimmer%2Fdownload%2Fimmer-7.0.15.tgz#dc3bc6db87401659d2e737c67a21b227c484a4ad" + integrity sha1-3DvG24dAFlnS5zfGeiGyJ8SEpK0= + +immutable@^3.8.1: + version "3.8.2" + resolved "https://registry.npm.taobao.org/immutable/download/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +import-cwd@^2.0.0, import-cwd@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= @@ -8138,12 +9568,7 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@1.3.7: - version "1.3.7" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -8186,6 +9611,52 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +intersection-observer@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.7.0.tgz#ee16bee978db53516ead2f0a8154b09b400bbdc9" + integrity sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg== + +intl-format-cache@^4.2.21: + version "4.3.1" + resolved "https://registry.npm.taobao.org/intl-format-cache/download/intl-format-cache-4.3.1.tgz#484d31a9872161e6c02139349b259a6229ade377" + integrity sha1-SE0xqYchYebAITk0myWaYimt43c= + +intl-messageformat-parser@^3.6.4: + version "3.6.4" + resolved "https://registry.npm.taobao.org/intl-messageformat-parser/download/intl-messageformat-parser-3.6.4.tgz#5199d106d816c3dda26ee0694362a9cf823978fb" + integrity sha1-UZnRBtgWw92ibuBpQ2Kpz4I5ePs= + dependencies: + "@formatjs/intl-unified-numberformat" "^3.2.0" + +intl-messageformat@^7.8.4: + version "7.8.4" + resolved "https://registry.nlark.com/intl-messageformat/download/intl-messageformat-7.8.4.tgz#c29146a06b9cd26662978a4d95fff2b133e3642f" + integrity sha1-wpFGoGuc0mZil4pNlf/ysTPjZC8= + dependencies: + intl-format-cache "^4.2.21" + intl-messageformat-parser "^3.6.4" + +intl@1.2.5: + version "1.2.5" + resolved "https://registry.npm.taobao.org/intl/download/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde" + integrity sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94= + +invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + ip@1.1.5, ip@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -8242,9 +9713,16 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-binary-path@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" is-binary-path@~2.1.0: version "2.1.0" @@ -8253,12 +9731,12 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== +is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-buffer@^1.1.5: version "1.1.6" @@ -8270,15 +9748,15 @@ is-buffer@^2.0.0: resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.2.3: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== is-ci@^1.0.10: version "1.2.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz?cache=0&sync_timestamp=1613632097993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-ci%2Fdownload%2Fis-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw= dependencies: ci-info "^1.5.0" @@ -8289,6 +9767,11 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-class-hotfix@~0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz#a527d31fb23279281dde5f385c77b5de70a72435" + integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ== + is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -8302,9 +9785,9 @@ is-color-stop@^1.0.0: rgba-regex "^1.0.0" is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + version "2.3.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" + integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== dependencies: has "^1.0.3" @@ -8323,9 +9806,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.4" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== is-decimal@^1.0.0: version "1.0.4" @@ -8405,9 +9888,9 @@ is-generator-fn@^2.0.0: integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.8" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" - integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + version "1.0.9" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" + integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== is-glob@^3.1.0: version "3.1.0" @@ -8436,19 +9919,19 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - is-module@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" @@ -8464,15 +9947,10 @@ is-npm@^3.0.0: resolved "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.5" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== is-number@^3.0.0: version "3.0.0" @@ -8503,11 +9981,6 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-path-inside@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -8535,6 +10008,11 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-property@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" @@ -8547,13 +10025,13 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: call-bind "^1.0.2" - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-regexp@^1.0.0: version "1.0.0" @@ -8590,9 +10068,14 @@ is-stream@^2.0.0: integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + version "1.0.6" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" @@ -8608,6 +10091,15 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +is-type-of@^1.0.0: + version "1.2.1" + resolved "https://registry.npmjs.org/is-type-of/-/is-type-of-1.2.1.tgz#e263ec3857aceb4f28c47130ec78db09a920f8c5" + integrity sha512-uK0kyX9LZYhSDS7H2sVJQJop1UnWPWmo5RvR3q2kFH6AUHYs7sOrVg0b4nyBHw29kRRNFofYN/JbHZDlHiItTA== + dependencies: + core-util-is "^1.0.2" + is-class-hotfix "~0.0.6" + isstream "~0.1.2" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -8620,10 +10112,10 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-url@1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" @@ -8645,6 +10137,11 @@ is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -8684,7 +10181,7 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-fetch@^2.1.1: +isomorphic-fetch@^2.1.1, isomorphic-fetch@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= @@ -8697,7 +10194,7 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.5: +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== @@ -8707,7 +10204,7 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.3.0: +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== @@ -8730,6 +10227,15 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -8739,6 +10245,17 @@ istanbul-lib-report@^3.0.0: make-dir "^3.0.0" supports-color "^7.1.0" +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + istanbul-lib-source-maps@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" @@ -8748,6 +10265,13 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + istanbul-reports@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" @@ -8761,6 +10285,15 @@ javascript-stringify@^2.0.1: resolved "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + jest-changed-files@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" @@ -8770,6 +10303,25 @@ jest-changed-files@^26.6.2: execa "^4.0.0" throat "^5.0.0" +jest-cli@^24.8.0, jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + jest-cli@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" @@ -8789,6 +10341,29 @@ jest-cli@^26.6.3: prompts "^2.0.1" yargs "^15.4.1" +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + jest-config@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" @@ -8813,7 +10388,17 @@ jest-config@^26.6.3: micromatch "^4.0.2" pretty-format "^26.6.2" -jest-diff@^26.0.0, jest-diff@^26.6.2: +jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== @@ -8823,6 +10408,13 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -8830,6 +10422,17 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + jest-each@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" @@ -8841,6 +10444,30 @@ jest-each@^26.6.2: jest-util "^26.6.2" pretty-format "^26.6.2" +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/jest-environment-jsdom-fourteen/download/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha1-TNAEL1i0q2ZpUNllMuyy/BiPlvs= + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + jest-environment-jsdom@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" @@ -8854,6 +10481,17 @@ jest-environment-jsdom@^26.6.2: jest-util "^26.6.2" jsdom "^16.4.0" +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jest-environment-node@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" @@ -8866,11 +10504,35 @@ jest-environment-node@^26.6.2: jest-mock "^26.6.2" jest-util "^26.6.2" +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -8892,6 +10554,28 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + jest-jasmine2@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" @@ -8916,6 +10600,14 @@ jest-jasmine2@^26.6.3: pretty-format "^26.6.2" throat "^5.0.0" +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + jest-leak-detector@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" @@ -8924,6 +10616,16 @@ jest-leak-detector@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + jest-matcher-utils@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" @@ -8934,6 +10636,20 @@ jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + jest-message-util@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" @@ -8949,6 +10665,13 @@ jest-message-util@^26.6.2: slash "^3.0.0" stack-utils "^2.0.2" +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + jest-mock@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" @@ -8957,16 +10680,30 @@ jest-mock@^26.6.2: "@jest/types" "^26.6.2" "@types/node" "*" -jest-pnp-resolver@^1.2.2: +jest-pnp-resolver@^1.2.0, jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + jest-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + jest-resolve-dependencies@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" @@ -8976,6 +10713,17 @@ jest-resolve-dependencies@^26.6.3: jest-regex-util "^26.0.0" jest-snapshot "^26.6.2" +jest-resolve@^24.8.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + jest-resolve@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" @@ -8990,6 +10738,31 @@ jest-resolve@^26.6.2: resolve "^1.18.1" slash "^3.0.0" +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + jest-runner@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" @@ -9016,6 +10789,35 @@ jest-runner@^26.6.3: source-map-support "^0.5.6" throat "^5.0.0" +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + jest-runtime@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" @@ -9049,6 +10851,11 @@ jest-runtime@^26.6.3: strip-bom "^4.0.0" yargs "^15.4.1" +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -9057,6 +10864,25 @@ jest-serializer@^26.6.2: "@types/node" "*" graceful-fs "^4.2.4" +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + jest-snapshot@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" @@ -9079,6 +10905,24 @@ jest-snapshot@^26.6.2: pretty-format "^26.6.2" semver "^7.3.2" +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + jest-util@^26.1.0, jest-util@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" @@ -9091,6 +10935,18 @@ jest-util@^26.1.0, jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + jest-validate@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" @@ -9103,6 +10959,19 @@ jest-validate@^26.6.2: leven "^3.1.0" pretty-format "^26.6.2" +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + jest-watcher@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" @@ -9116,7 +10985,7 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@24.9.0: +jest-worker@24.9.0, jest-worker@^24.6.0, jest-worker@^24.9.0: version "24.9.0" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== @@ -9133,7 +11002,15 @@ jest-worker@26.6.2, jest-worker@^26.2.1, jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^26.1.0: +jest@^24.8.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +jest@^26.6.3: version "26.6.3" resolved "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== @@ -9142,15 +11019,20 @@ jest@^26.1.0: import-local "^3.0.2" jest-cli "^26.6.3" -js-git@^0.7.8: - version "0.7.8" - resolved "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz#52fa655ab61877d6f1079efc6534b554f31e5444" - integrity sha1-UvplWrYYd9bxB578ZTS1VPMeVEQ= - dependencies: - bodec "^0.1.0" - culvert "^0.1.2" - git-sha1 "^0.1.2" - pako "^0.2.5" +js-base64@^2.5.2: + version "2.6.4" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -9170,6 +11052,70 @@ jsbn@~0.1.0: resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.npm.taobao.org/jsdom/download/jsdom-14.1.0.tgz?cache=0&sync_timestamp=1618169864586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsdom%2Fdownload%2Fjsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha1-kWRjtglJVrCmwXgslOOAzTDhmBs= + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + jsdom@^16.0.0, jsdom@^16.4.0: version "16.5.3" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.5.3.tgz#13a755b3950eb938b4482c407238ddf16f0d2136" @@ -9252,6 +11198,14 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json-templates@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/json-templates/-/json-templates-4.1.0.tgz#5b8e9a9f0f77d5107214b77f06412ae9b884c278" + integrity sha512-Xjcnphott7Kj09zTSvszDVMXNa6utrQjXR25oxFMGKRNuX9wYQsJgKeQWVAxHE26I8lPUriIJ9nba1fCCBiI4Q== + dependencies: + dedupe "^3.0.2" + object-path "^0.11.4" + json2mq@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" @@ -9259,13 +11213,18 @@ json2mq@^0.2.0: dependencies: string-convert "^0.2.0" -json5@2.x, json5@^2.1.2: +json5@2.x, json5@^2.1.0, json5@^2.1.2: version "2.2.0" resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== dependencies: minimist "^1.2.5" +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + json5@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -9295,6 +11254,24 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jstoxml@^0.2.3: + version "0.2.4" + resolved "https://registry.npmjs.org/jstoxml/-/jstoxml-0.2.4.tgz#ff3fb67856883a032953c7ce8ce7486210f48447" + integrity sha1-/z+2eFaIOgMpU8fOjOdIYhD0hEc= + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +just-has@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/just-has/-/just-has-1.0.0.tgz#7b0b5b4a1513e6684063521de74622c7629111cd" + integrity sha512-VxEMStctzOh3nQWZTq0vZrQe/B9oi75rhL4lcgYm5qrTX2enp38KMiKjkefdRR2ca01jlRHi62mNjme8G/TgvQ== + katex@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz#2fb1c665dbd2b043edcf8a1f5c555f46beaa0cb9" @@ -9355,6 +11332,13 @@ kleur@^3.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +ko-sleep@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/ko-sleep/-/ko-sleep-1.0.3.tgz#28a2a0a1485e8b7f415ff488dee17d24788ab082" + integrity sha1-KKKgoUhei39BX/SI3uF9JHiKsII= + dependencies: + ms "^2.0.0" + koa-bodyparser@^4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz#274c778555ff48fa221ee7f36a9fbdbace22759a" @@ -9383,6 +11367,31 @@ koa-convert@^1.2.0: co "^4.6.0" koa-compose "^3.0.0" +koa-mount@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/koa-mount/-/koa-mount-4.0.0.tgz#e0265e58198e1a14ef889514c607254ff386329c" + integrity sha512-rm71jaA/P+6HeCpoRhmCv8KVBIi0tfGuO/dMKicbQnQW/YJntJ6MnnspkodoA4QstMVEZArsCphmd0bJEtoMjQ== + dependencies: + debug "^4.0.1" + koa-compose "^4.1.0" + +koa-send@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" + integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== + dependencies: + debug "^4.1.1" + http-errors "^1.7.3" + resolve-path "^1.4.0" + +koa-static@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" + integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== + dependencies: + debug "^3.1.0" + koa-send "^5.0.0" + koa@^2.13.0: version "2.13.1" resolved "https://registry.npmjs.org/koa/-/koa-2.13.1.tgz#6275172875b27bcfe1d454356a5b6b9f5a9b1051" @@ -9424,11 +11433,6 @@ lazy-cache@^1.0.3: resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lazy@~1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690" - integrity sha1-2qBoIGKCVCwIgojpdcKXwa53tpA= - lazystream@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -9443,6 +11447,11 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + lerna@^3.22.0: version "3.22.1" resolved "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" @@ -9533,42 +11542,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^10.0.7: - version "10.5.4" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" - integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - commander "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - -listr2@^3.2.2: - version "3.6.2" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.6.2.tgz#7260159f9108523eaa430d4a674db65b6c2d08cc" - integrity sha512-B2vlu7Zx/2OAMVUovJ7Tv1kQ2v2oXd0nZKzkSAcRCej269d8gkS/gupDEdNl23KQ3ZjVD8hQmifrrBFbx8F9LA== - dependencies: - chalk "^4.1.0" - cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" - log-update "^4.0.0" - p-map "^4.0.0" - rxjs "^6.6.7" - through "^2.3.8" - wrap-ansi "^7.0.0" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -9682,16 +11655,31 @@ lodash.defaults@^4.0.1: resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= -lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= + +lodash.flatten@^4.2.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -9742,6 +11730,11 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -9757,33 +11750,15 @@ lodash@4.17.19: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== -lodash@4.x, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.2.1, lodash@^4.7.0: +lodash@4.x, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.2.1, lodash@^4.7.0: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" +long-timeout@0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" + integrity sha1-lyHXiLR+C8taJMLivuGg2lXatRQ= long@^4.0.0: version "4.0.0" @@ -9815,6 +11790,13 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lower-case@^2.0.1, lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -9847,6 +11829,18 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + +luxon@^1.26.0: + version "1.26.0" + resolved "https://registry.npmjs.org/luxon/-/luxon-1.26.0.tgz#d3692361fda51473948252061d0f8561df02b578" + integrity sha512-+V5QIQ5f6CDXQpWNICELwjwuHdqeJM1UenlZWx5ujcRMc9venvluCjFb4t5NYLhb6IhkbMVOxzVuOqkgMxee2A== + lz-string@^1.4.4: version "1.4.4" resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" @@ -9857,7 +11851,7 @@ macos-release@^2.2.0: resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== -magic-string@^0.25.5, magic-string@^0.25.7: +magic-string@^0.25.2, magic-string@^0.25.5, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -9879,7 +11873,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -9950,13 +11944,13 @@ markdown-table@^2.0.0: repeat-string "^1.0.0" mathjax-full@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.1.2.tgz#53ac5b38252379d515d60e99092672b42725bf6a" - integrity sha512-jFCwRFdFwIOa8J7r6VZT0AIv9ZwbLQ9aPc9YZp695NTvv7XKU2NunJodA+zDWzElIFJ7mTsImyfe5R3QyRNZjw== + version "3.1.4" + resolved "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.1.4.tgz#ec9c51abf55b427e0fd54760ca9478d439406e59" + integrity sha512-80lZZci7vqQQV2wdLcnFUtI7z5Aru0RL03wPw8JM6kFPmX4CA/SYfnlQQ1WIIBU+0p0YoxJ6Z3gAUcVzvDArhw== dependencies: esm "^3.2.25" mj-context-menu "^0.6.1" - speech-rule-engine "^3.1.1" + speech-rule-engine "^3.2.0" md5.js@^1.3.4: version "1.3.5" @@ -10103,6 +12097,25 @@ media-typer@0.3.0: resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +memoize-one@^5.1.1: + version "5.2.1" + resolved "https://registry.nlark.com/memoize-one/download/memoize-one-5.2.1.tgz?cache=0&sync_timestamp=1619230242747&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmemoize-one%2Fdownload%2Fmemoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" + integrity sha1-gzeqPEM1WBg57AHD1ZQJDOvo8A4= + +memoizee@0.4.X: + version "0.4.15" + resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + memory-fs@^0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" @@ -10159,6 +12172,11 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-descriptors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + merge-stream@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -10171,12 +12189,12 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -methods@^1.1.1, methods@^1.1.2: +methods@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -10289,6 +12307,13 @@ mime-db@1.47.0: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== +mime-match@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz#3f87c31e9af1a5fd485fb9db134428b23bbb7ba8" + integrity sha1-P4fDHprxpf1IX7nbE0Qosju7e6g= + dependencies: + wildcard "^1.1.0" + mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.30" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" @@ -10301,7 +12326,7 @@ mime@^1.4.1: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4: +mime@^2.4.4, mime@^2.4.5, mime@^2.4.6, mime@^2.5.2: version "2.5.2" resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== @@ -10321,6 +12346,13 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -10376,7 +12408,7 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -10389,6 +12421,13 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0: + version "3.1.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -10396,6 +12435,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -10432,7 +12479,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@1.0.4, mkdirp@1.x: +mkdirp@*, mkdirp@1.x, mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -10444,28 +12491,35 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" +mockjs@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/mockjs/-/mockjs-1.1.0.tgz#e6a0c378e91906dbaff20911cc0273b3c7d75b06" + integrity sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ== + dependencies: + commander "*" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -module-details-from-path@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" - integrity sha1-EUyUlnPiqKNenTV4hSeqN7Z52is= - -moment-timezone@^0.5.31, moment-timezone@^0.5.x: +moment-timezone@^0.5.31: version "0.5.33" resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.24.0, moment@^2.25.3, moment@^2.26.0: +"moment@>= 2.9.0", moment@^2.24.0, moment@^2.25.3, moment@^2.26.0, moment@^2.29.1: version "2.29.1" resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +moo@^0.5.0: + version "0.5.1" + resolved "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -10493,6 +12547,20 @@ ms@^2.0.0, ms@^2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +multer@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz#2f1f4d12dbaeeba74cb37e623f234bf4d3d2057a" + integrity sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg== + dependencies: + append-field "^1.0.0" + busboy "^0.2.11" + concat-stream "^1.5.2" + mkdirp "^0.5.1" + object-assign "^4.1.1" + on-finished "^2.3.0" + type-is "^1.6.4" + xtend "^4.0.0" + multimatch@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" @@ -10527,7 +12595,18 @@ mysql2@^2.1.0: seq-queue "^0.0.5" sqlstring "^2.3.2" -mz@^2.5.0: +mz-modules@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mz-modules/-/mz-modules-2.1.0.tgz#7f529877afd0d42f409a7463b96986d61cfbcf96" + integrity sha512-sjk8lcRW3vrVYnZ+W+67L/2rL+jbO5K/N6PFGIcLWTiYytNr22Ah9FDXFs+AQntTM1boZcoHi5qS+CV1seuPog== + dependencies: + glob "^7.1.2" + ko-sleep "^1.0.3" + mkdirp "^0.5.1" + pump "^3.0.0" + rimraf "^2.6.1" + +mz@^2.5.0, mz@^2.7.0: version "2.7.0" resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== @@ -10543,6 +12622,11 @@ named-placeholders@^1.1.2: dependencies: lru-cache "^4.1.3" +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10570,14 +12654,15 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== +nearley@^2.7.10: + version "2.20.1" + resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" negotiator@0.6.2: version "0.6.2" @@ -10594,11 +12679,34 @@ netmask@^2.0.1: resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" + integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== + node-fetch-npm@^2.0.2: version "2.0.4" resolved "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" @@ -10608,6 +12716,11 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" +node-fetch@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -10677,6 +12790,17 @@ node-modules-regexp@^1.0.0: resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= +node-notifier@^5.4.2: + version "5.4.5" + resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" + integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + node-notifier@^8.0.0: version "8.0.2" resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" @@ -10694,21 +12818,14 @@ node-releases@^1.1.71: resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== -nodemon@^2.0.4: - version "2.0.7" - resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32" - integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA== +node-schedule@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/node-schedule/-/node-schedule-2.0.0.tgz#73ab4957d056c63708409cc1fab676e0e149c191" + integrity sha512-cHc9KEcfiuXxYDU+HjsBVo2FkWL1jRAUoczFoMIzRBpOA4p/NRHuuLs85AWOLgKsHtSPjN8csvwIxc2SqMv+CQ== dependencies: - chokidar "^3.2.2" - debug "^3.2.6" - ignore-by-default "^1.0.1" - minimatch "^3.0.4" - pstree.remy "^1.1.7" - semver "^5.7.1" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.3" - update-notifier "^4.1.0" + cron-parser "^3.1.0" + long-timeout "0.1.1" + sorted-array-functions "^1.3.0" nopt@^4.0.1: version "4.0.3" @@ -10718,10 +12835,10 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" @@ -10747,10 +12864,10 @@ normalize-package-data@^3.0.0: normalize-path@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= -normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -10800,9 +12917,9 @@ now-and-later@^2.0.0: once "^1.3.2" npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + version "1.1.2" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -10877,14 +12994,6 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nssocket@0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz#59f96f6ff321566f33c70f7dbeeecdfdc07154fa" - integrity sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo= - dependencies: - eventemitter2 "~0.4.14" - lazy "~1.0.11" - nth-check@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -10892,6 +13001,13 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -10902,7 +13018,7 @@ number-is-nan@^1.0.0: resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.2.0: +nwsapi@^2.0.7, nwsapi@^2.1.3, nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -10912,7 +13028,7 @@ oauth-sign@~0.9.0: resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.X, object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -10926,16 +13042,29 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== +object-inspect@^1.7.0, object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + +object-is@^1.0.2, object-is@^1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-path@^0.11.4: + version "0.11.5" + resolved "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" + integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -10953,7 +13082,27 @@ object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.3, object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== @@ -10969,7 +13118,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1: +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== @@ -11066,6 +13215,14 @@ os-name@^3.1.0: macos-release "^2.2.0" windows-release "^3.1.0" +os-name@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" + integrity sha1-GzefZINa98Wn9JizV8uVIVwVnt8= + dependencies: + osx-release "^1.0.0" + win-release "^1.0.0" + os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -11079,11 +13236,25 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +osx-release@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c" + integrity sha1-8heRGigTaUmvG/kwiyQeJzfTzWw= + dependencies: + minimist "^1.1.0" + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" @@ -11141,18 +13312,16 @@ p-map@^2.1.0: resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= +p-queue@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" + integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== + p-queue@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" @@ -11236,11 +13405,6 @@ packet-reader@1.0.0: resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== -pako@^0.2.5: - version "0.2.9" - resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= - pako@~1.0.5: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -11255,6 +13419,14 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -11340,7 +13512,24 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@6.0.1, parse5@^6.0.0: +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/parse5/download/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha1-xZNByXI/QUxFKXVWTHwApo1YrNI= + +parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== @@ -11350,6 +13539,14 @@ parseurl@^1.3.2: resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^3.1.1, pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -11382,7 +13579,7 @@ path-exists@^4.0.0: resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0: +path-is-absolute@1.0.1, path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -11407,7 +13604,7 @@ path-parse@^1.0.6: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-to-regexp@^1.7.0: +path-to-regexp@1.x, path-to-regexp@^1.7.0: version "1.8.0" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== @@ -11447,6 +13644,13 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pause-stream@~0.0.11: + version "0.0.11" + resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -11501,7 +13705,7 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@^8.3.0: +pg@^8.3.3, pg@^8.6.0: version "8.6.0" resolved "https://registry.npmjs.org/pg/-/pg-8.6.0.tgz#e222296b0b079b280cce106ea991703335487db2" integrity sha512-qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ== @@ -11526,13 +13730,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== -pidusage@2.0.21: - version "2.0.21" - resolved "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz#7068967b3d952baea73e57668c98b9eaa876894e" - integrity sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA== - dependencies: - safe-buffer "^5.2.1" - pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -11601,12 +13798,17 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= dependencies: - semver-compare "^1.0.0" + find-up "^2.1.0" + +platform@^1.3.1: + version "1.3.6" + resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== plugin-error@^0.1.2: version "0.1.2" @@ -11629,73 +13831,10 @@ plugin-error@^1.0.1: arr-union "^3.1.0" extend-shallow "^3.0.2" -pm2-axon-rpc@~0.7.0: - version "0.7.1" - resolved "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz#2daec5383a63135b3f18babb70266dacdcbc429a" - integrity sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw== - dependencies: - debug "^4.3.1" - -pm2-axon@~4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz#a7b4bb586e9aeb35b1042b488cde15b60cabafd2" - integrity sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg== - dependencies: - amp "~0.3.1" - amp-message "~0.1.1" - debug "^4.3.1" - escape-string-regexp "^4.0.0" - -pm2-deploy@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz#98d8385553a3a4dca11c7b3116deb519bc5961a7" - integrity sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg== - dependencies: - run-series "^1.1.8" - tv4 "^1.3.0" - -pm2-multimeter@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz#1a1e55153d41a05534cea23cfe860abaa0eb4ace" - integrity sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4= - dependencies: - charm "~0.1.1" - -pm2@^4.5.6: - version "4.5.6" - resolved "https://registry.npmjs.org/pm2/-/pm2-4.5.6.tgz#2f477a158957860e440f1e71e88dc82627fcff99" - integrity sha512-4J5q704Xl6VmpmQhXFGMJL4kXyyQw3AZM1FE9vRxhS3LiDI/+WVBtOM6pqJ4g/RKW+AUjEkc23i/DCC4BVenDA== - dependencies: - "@pm2/agent" "~1.0.8" - "@pm2/io" "~5.0.0" - "@pm2/js-api" "~0.6.7" - "@pm2/pm2-version-check" latest - async "~3.2.0" - blessed "0.1.81" - chalk "3.0.0" - chokidar "^3.5.1" - cli-tableau "^2.0.0" - commander "2.15.1" - cron "1.8.2" - dayjs "~1.8.25" - debug "^4.3.1" - enquirer "2.3.6" - eventemitter2 "5.0.1" - fclone "1.0.11" - mkdirp "1.0.4" - needle "2.4.0" - pidusage "2.0.21" - pm2-axon "~4.0.1" - pm2-axon-rpc "~0.7.0" - pm2-deploy "~1.0.2" - pm2-multimeter "^0.1.2" - promptly "^2" - ps-list "6.3.0" - semver "^7.2" - source-map-support "0.5.19" - sprintf-js "1.1.2" - vizion "2.2.1" - yamljs "0.3.0" +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== posix-character-classes@^0.1.0: version "0.1.1" @@ -12047,6 +14186,17 @@ postcss-modules-values@1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" +postcss-modules@^1.4.1: + version "1.5.0" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-1.5.0.tgz#08da6ce43fcfadbc685a021fe6ed30ef929f0bcc" + integrity sha512-KiAihzcV0TxTTNA5OXreyIXctuHOfR50WIhqBpc8pe0Q5dcs/Uap9EVlifOI9am7zGGdGOJQ6B1MPYKo2UxgOg== + dependencies: + css-modules-loader-core "^1.1.0" + generic-names "^2.0.1" + lodash.camelcase "^4.3.0" + postcss "^7.0.1" + string-hash "^1.1.1" + postcss-modules@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-2.0.0.tgz#473d0d7326651d8408585c2a154115d5cb36cce0" @@ -12297,13 +14447,11 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: uniq "^1.0.1" postcss-selector-parser@^6.0.2: - version "6.0.4" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + version "6.0.5" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz#042d74e137db83e6f294712096cb413f5aa612c4" + integrity sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg== dependencies: cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" util-deprecate "^1.0.2" postcss-svgo@^4.0.3: @@ -12421,17 +14569,32 @@ prepend-http@^2.0.0: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@2.2.1: +prettier@1.15.3: + version "1.15.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" + integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + +prettier@2.2.1, prettier@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== -prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" + integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== -pretty-format@^26.0.0, pretty-format@^26.6.2: +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -12500,13 +14663,6 @@ promise@~7.0.1: dependencies: asap "~2.0.3" -promptly@^2: - version "2.2.0" - resolved "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz#2a13fa063688a2a5983b161fff0108a07d26fc74" - integrity sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ= - dependencies: - read "^1.0.4" - prompts@^2.0.1: version "2.4.1" resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" @@ -12522,7 +14678,16 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.2: +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== + dependencies: + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" + +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -12555,7 +14720,7 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" -proxy-agent@~4.0.1: +proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-4.0.1.tgz#326c3250776c7044cd19655ccbfadf2e065a045c" integrity sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA== @@ -12579,11 +14744,6 @@ prr@~1.0.1: resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -ps-list@6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz#a2b775c2db7d547a28fbaa3a05e4c281771259be" - integrity sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA== - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -12594,11 +14754,6 @@ psl@^1.1.28, psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -pstree.remy@^1.1.7: - version "1.1.8" - resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -12651,19 +14806,12 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@^6.5.1, qs@^6.5.2, qs@^6.9.4: +qs@^6.4.0, qs@^6.5.2, qs@^6.9.1, qs@^6.9.4: version "6.10.1" resolved "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== @@ -12703,6 +14851,11 @@ querystring@0.2.0: resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" @@ -12713,13 +14866,26 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -raf@^3.1.0, raf@^3.3.2, raf@^3.4.0: +raf@^3.1.0, raf@^3.3.2, raf@^3.4.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: performance-now "^2.1.0" +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -12883,10 +15049,10 @@ rc-image@~5.2.4: rc-dialog "~8.5.0" rc-util "^5.0.6" -rc-input-number@~7.0.1: - version "7.0.6" - resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.0.6.tgz#26ab51f28215abef8df0bd99ec5facb884480abc" - integrity sha512-J5DIoCKIunoPb16FEghaEOyNDuZXD5F9LxLNcqd31z/0e37XtuHgo4QF/TonKLsESwdg7UAzWhiD0K6PPrN3YQ== +rc-input-number@~7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.1.0.tgz#fd5f7f00d7e6c2761cf1eaf025bddb2bb522d4a6" + integrity sha512-ewgtKZaDmwbOWX8DXBGV+amp1IiGS8G+5xDqn85CK1BiQMwsQdrmMEqNkbTdxO8EmYbwN1iQQ4t82IkAaIoa3A== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" @@ -12918,10 +15084,25 @@ rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.10.0: resize-observer-polyfill "^1.5.0" shallowequal "^1.1.0" -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.1.tgz#323f47c8635e6b2bc0cba2dfad25fc415b58e1dc" - integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg== +rc-menu@^9.0.0-alpha.7: + version "9.0.0-alpha.7" + resolved "https://registry.npmjs.org/rc-menu/-/rc-menu-9.0.0-alpha.7.tgz#5dc958e3a28fa2678bc7e1cf9219f6a60c298f8d" + integrity sha512-sRU2Zn5MBo1JTjm/QXf+1J5ryZDqq1fuCaGc+//KMOEqdo+QwfzLh0FHdICNlmXn77mmQgywaglDmNMBErGEHA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + mini-store "^3.0.1" + rc-motion "^2.4.3" + rc-overflow "^1.2.0-alpha.12" + rc-trigger "^5.1.2" + rc-util "^5.12.0" + resize-observer-polyfill "^1.5.0" + shallowequal "^1.1.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0, rc-motion@^2.4.3: + version "2.4.3" + resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.3.tgz#2afd129da8764ee0372ba83442949d8ecb1c7ad2" + integrity sha512-GZLLFXHl/VqTfI7bSZNNZozcblNmDka1AAoQig7EZ6s0rWg5y0RlgrcHWO+W+nrOVbYfJDxoaQUoP2fEmvCWmA== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" @@ -12947,6 +15128,16 @@ rc-overflow@^1.0.0: rc-resize-observer "^1.0.0" rc-util "^5.5.1" +rc-overflow@^1.2.0-alpha.12: + version "1.2.0-alpha.12" + resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.0-alpha.12.tgz#19b197329b34c91173b0b5c27db34b3b0b48eb86" + integrity sha512-dsocvsu3PC6lHAfoE1uZRIcRrt70CI3pKcGwccyESnJ/MhEO59GvKN1/kMGl/S8xqUKTer544iC+ij97S9u8/Q== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.5.1" + rc-pagination@~3.1.6: version "3.1.6" resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.6.tgz#db3c06e50270b52fe272ac527c1fdc2c8d28af1f" @@ -12996,9 +15187,9 @@ rc-resize-observer@^1.0.0: resize-observer-polyfill "^1.5.1" rc-select@^12.0.0, rc-select@~12.1.6: - version "12.1.9" - resolved "https://registry.npmjs.org/rc-select/-/rc-select-12.1.9.tgz#87b1bbb58649bc4a4d7961c1f1aa36a16c011a59" - integrity sha512-jsqcdby3Ag9ohYQ0d4vS4Q2jeWjj6kb2NHS9WcQSse0/5lCb3mqXI/1fkKRRIhdQvMBklYh4ctSox3mDrZiB8A== + version "12.1.10" + resolved "https://registry.npmjs.org/rc-select/-/rc-select-12.1.10.tgz#66ce43192751190b7c0e9a0ab1ef79606421ce30" + integrity sha512-LQdUhYncvcULlrNcAShYicc1obPtnNK7/rvCD+YCm0b2BLLYxl3M3b/HOX6o+ppPej+yZulkUPeU6gcgcp9nag== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -13071,7 +15262,19 @@ rc-table@~7.13.0: rc-util "^5.4.0" shallowequal "^1.1.0" -rc-tabs@^11.7.1, rc-tabs@~11.7.0: +rc-tabs@^11.7.1: + version "11.8.0" + resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.8.0.tgz#1cb36419a6ec7570b499d5945113b64604e03c25" + integrity sha512-1A8UlHs8UVB50yLVcqjPdRKHGXpc9xTNh6A6ZiU0MCar+GjRYSlEX/RNVdpxUDlBEuSG9GVucQ3mKubaq9wkwg== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "^3.1.3" + rc-menu "^9.0.0-alpha.7" + rc-resize-observer "^1.0.0" + rc-util "^5.5.0" + +rc-tabs@~11.7.0: version "11.7.3" resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.3.tgz#32a30e59c6992d60fb58115ba0bf2652b337ed43" integrity sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w== @@ -13103,17 +15306,17 @@ rc-tooltip@^3.4.2: rc-trigger "^2.2.2" rc-tooltip@^5.0.1, rc-tooltip@~5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.0.tgz#abb453c463c31a705aa01d268279f4ae6ae3b15f" - integrity sha512-pFqD1JZwNIpbdcefB7k5xREoHAWM/k3yQwYF0iminbmDXERgq4rvBfUwIvlCqqZSM7HDr9hYeYr6ZsVNaKtvCQ== + version "5.1.1" + resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz#94178ed162d0252bc4993b725f5dc2ac0fccf154" + integrity sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA== dependencies: "@babel/runtime" "^7.11.2" rc-trigger "^5.0.0" rc-tree-select@~4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.1.tgz#4881bae5f6a5d696c5f61e52ad9489313f356eb4" - integrity sha512-OeV8u5kBEJ8MbatP04Rh8T3boOHGjdGBTEm1a0bubBbB2GNNhlMOr4ZxezkHYtXf02JdBS/WyydmI/RMjXgtJA== + version "4.3.2" + resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.2.tgz#94031e36c819ae23e5154953538d00cc316a7fc0" + integrity sha512-tkouzhl8OpbTg4C9tVuP8nJ5jiZS7/wiusOIcFVgswhs1V3Jc+XHMKpLhR01egJ1bgsW1A6VrVCz3udxtdJSDA== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -13146,9 +15349,9 @@ rc-trigger@^2.2.2: react-lifecycles-compat "^3.0.4" rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.1: - version "5.2.5" - resolved "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.5.tgz#b9a37a0d709b23a1b3a5d7f1727183e6f66773df" - integrity sha512-RlF5RpWqK+JeiFeQVOzwjLFzpNe2FowoXc/42azz+20wr/bYF1Q/MwprUK+3+vs/oFhLC0ht3/NlrslAo/OoWA== + version "5.2.7" + resolved "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.7.tgz#c6128ded1744a0b5abf9f6a3611eefa7cfa2183a" + integrity sha512-ttRWAd47pviWDeNDszhmuSgppmHY5aCr3y1+I6kvzS9QIlflsSC4GVjuF/eNl6F4cs7eB8B3tg7TxUCTWY7BHA== dependencies: "@babel/runtime" "^7.11.2" classnames "^2.2.6" @@ -13176,10 +15379,10 @@ rc-util@4.x, rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0: react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: - version "5.9.8" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.9.8.tgz#dfcacc1f7b7c45fa18ab786e2b530dd0509073f1" - integrity sha512-typLSHYGf5irvGLYQshs0Ra3aze086h0FhzsAkyirMunYZ7b3Te8gKa5PVaanoHaZa9sS6qx98BxgysoRP+6Tw== +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: + version "5.12.2" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.12.2.tgz#41572687a2cd174fdaec028da756d288e398e9f8" + integrity sha512-kzqG2lHY4oZsoj5Svov12K+9wi0xQHvGzfbLlsF1PDEH1aTbgdNTwlE7mejc3MGEr+7bNHa4+T5ZemCS8vQ1Gw== dependencies: "@babel/runtime" "^7.12.5" react-is "^16.12.0" @@ -13214,7 +15417,7 @@ react-docgen-typescript@^1.20.5: resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz#00232c8e8e47f4437cac133b879b3e9437284bee" integrity sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg== -react-dom@16.x: +react-dom@16.x, react-dom@^16.8.6: version "16.14.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== @@ -13224,12 +15427,59 @@ react-dom@16.x: prop-types "^15.6.2" scheduler "^0.19.1" -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-dom@17.x, react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-hooks-global-state@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/react-hooks-global-state/-/react-hooks-global-state-1.0.1.tgz#3e4e1009f3e8a6fd001cd507808b4f1b289e9b27" + integrity sha512-GFe/7KOdf8toByd8eF5LBhogMn65XSyghIzInsnA1e8vqIxGdT2Ohs2Ohdclp8CX0QU9xNj72ZIt+WD/SQEh9Q== + +react-intl@3.12.1: + version "3.12.1" + resolved "https://registry.nlark.com/react-intl/download/react-intl-3.12.1.tgz#e9a783ea20302e9da25e4eda59e5593a43d2ec80" + integrity sha1-6aeD6iAwLp2iXk7aWeVZOkPS7IA= + dependencies: + "@formatjs/intl-displaynames" "^1.2.0" + "@formatjs/intl-listformat" "^1.4.1" + "@formatjs/intl-relativetimeformat" "^4.5.9" + "@formatjs/intl-unified-numberformat" "^3.2.0" + "@formatjs/intl-utils" "^2.2.0" + "@types/hoist-non-react-statics" "^3.3.1" + "@types/invariant" "^2.2.31" + hoist-non-react-statics "^3.3.2" + intl-format-cache "^4.2.21" + intl-messageformat "^7.8.4" + intl-messageformat-parser "^3.6.4" + shallow-equal "^1.2.1" + +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1: +"react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -13248,6 +15498,18 @@ react-native-swipeout@^2.2.2: prop-types "^15.5.10" react-tween-state "^0.1.5" +react-redux@^7.1.0: + version "7.2.4" + resolved "https://registry.nlark.com/react-redux/download/react-redux-7.2.4.tgz#1ebb474032b72d806de2e0519cd07761e222e225" + integrity sha1-HrtHQDK3LYBt4uBRnNB3YeIi4iU= + dependencies: + "@babel/runtime" "^7.12.1" + "@types/react-redux" "^7.1.16" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.13.1" + react-refresh@0.9.0: version "0.9.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" @@ -13260,7 +15522,7 @@ react-router-config@5.1.1: dependencies: "@babel/runtime" "^7.1.2" -react-router-dom@5.2.0: +react-router-dom@5.2.0, react-router-dom@^5.1.2, react-router-dom@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== @@ -13289,6 +15551,56 @@ react-router@5.2.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" +react-shallow-renderer@^16.13.1: + version "16.14.1" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz#bf0d02df8a519a558fd9b8215442efa5c840e124" + integrity sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0" + +react-side-effect@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react-sortable-hoc@^1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz#fe4022362bbafc4b836f5104b9676608a40a278f" + integrity sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg== + dependencies: + "@babel/runtime" "^7.2.0" + invariant "^2.2.4" + prop-types "^15.5.7" + +react-sticky-box@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/react-sticky-box/-/react-sticky-box-0.9.3.tgz#8450d4cef8e4fdd7b0351520365bc98c97da11af" + integrity sha512-Y/qO7vTqAvXuRR6G6ZCW4fX2Bz0GZRwiiLTVeZN5CVz9wzs37ev0Xj3KSKF/PzF0jifwATivI4t24qXG8rSz4Q== + dependencies: + "@babel/runtime" "^7.1.5" + resize-observer-polyfill "^1.5.1" + +react-test-renderer@^16.0.0-0: + version "16.14.0" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.19.1" + +react-test-renderer@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c" + integrity sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ== + dependencies: + object-assign "^4.1.1" + react-is "^17.0.2" + react-shallow-renderer "^16.13.1" + scheduler "^0.20.2" + react-tween-state@^0.1.5: version "0.1.5" resolved "https://registry.npmjs.org/react-tween-state/-/react-tween-state-0.1.5.tgz#e98b066551efb93cb92dd1be14995c2e3deae339" @@ -13297,7 +15609,7 @@ react-tween-state@^0.1.5: raf "^3.1.0" tween-functions "^1.0.1" -react@16.x: +react@16.x, react@^16.8.6: version "16.14.0" resolved "https://registry.npmjs.org/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== @@ -13306,6 +15618,14 @@ react@16.x: object-assign "^4.1.1" prop-types "^15.6.2" +react@17.x, react@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + read-cmd-shim@^1.0.1: version "1.0.5" resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" @@ -13410,7 +15730,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@1, read@^1.0.4, read@~1.0.1: +read@1, read@~1.0.1: version "1.0.7" resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= @@ -13459,6 +15779,15 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + readdirp@~3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -13466,6 +15795,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + redent@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -13490,6 +15826,23 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-saga@^0.16.0: + version "0.16.2" + resolved "https://registry.npm.taobao.org/redux-saga/download/redux-saga-0.16.2.tgz?cache=0&sync_timestamp=1608124588180&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fredux-saga%2Fdownload%2Fredux-saga-0.16.2.tgz#993662e86bc945d8509ac2b8daba3a8c615cc971" + integrity sha1-mTZi6GvJRdhQmsK42ro6jGFcyXE= + +redux@^4.0.0, redux@^4.0.1: + version "4.1.0" + resolved "https://registry.nlark.com/redux/download/redux-4.1.0.tgz?cache=0&sync_timestamp=1619288861423&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fredux%2Fdownload%2Fredux-4.1.0.tgz#eb049679f2f523c379f1aff345c8612f294c88d4" + integrity sha1-6wSWefL1I8N58a/zRchhLylMiNQ= + dependencies: + "@babel/runtime" "^7.9.2" + +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -13502,6 +15855,11 @@ regenerate@^1.4.0: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@0.13.2: + version "0.13.2" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + regenerator-runtime@0.13.5: version "0.13.5" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" @@ -13512,7 +15870,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.7" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -13532,6 +15890,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -13708,7 +16074,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.9: +request-promise-native@^1.0.5, request-promise-native@^1.0.9: version "1.0.9" resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -13717,7 +16083,7 @@ request-promise-native@^1.0.9: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0, request@^2.88.0, request@^2.88.2: +request@^2.83.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -13753,20 +16119,21 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-in-the-middle@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz#b768f800377b47526d026bbf5a7f727f16eb412f" - integrity sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ== - dependencies: - debug "^4.1.1" - module-details-from-path "^1.0.3" - resolve "^1.12.0" - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + +reserved-words@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= + resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" @@ -13808,6 +16175,14 @@ resolve-options@^1.1.0: dependencies: value-or-function "^3.0.0" +resolve-path@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" + integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= + dependencies: + http-errors "~1.6.2" + path-is-absolute "1.0.1" + resolve-pathname@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" @@ -13818,6 +16193,11 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve@1.1.7, resolve@~1.1.6: + version "1.1.7" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + resolve@1.17.0: version "1.17.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -13825,7 +16205,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.16.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.16.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: version "1.20.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -13833,10 +16213,13 @@ resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.1 is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@~1.1.6: - version "1.1.7" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" responselike@^1.0.2: version "1.0.2" @@ -13853,14 +16236,6 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -13878,6 +16253,11 @@ retry@^0.10.0: resolved "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -13902,7 +16282,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -14076,6 +16456,45 @@ rmc-trigger@1.x: rc-util "4.x" rmc-align "~1.0.0" +rollup-plugin-commonjs@^9.2.0: + version "9.3.4" + resolved "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz#2b3dddbbbded83d45c36ff101cdd29e924fd23bc" + integrity sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w== + dependencies: + estree-walker "^0.6.0" + magic-string "^0.25.2" + resolve "^1.10.0" + rollup-pluginutils "^2.6.0" + +rollup-plugin-node-resolve@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.0.tgz#9bc6b8205e9936cc0e26bba2415f1ecf1e64d9b2" + integrity sha512-7Ni+/M5RPSUBfUaP9alwYQiIKnKeXCOHiqBpKUl9kwp3jX5ZJtgXAait1cne6pGEVUUztPD6skIKH9Kq9sNtfw== + dependencies: + builtin-modules "^3.0.0" + is-module "^1.0.0" + resolve "^1.8.1" + +rollup-plugin-postcss@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.3.tgz#1fd5b7e1fc7545cb0084d9c99d11b259e41a05e6" + integrity sha512-d12oKl6za/GGXmlytzVPzzTdPCKgti/Kq2kNhtfm5vv9hkNbyrTvizMBm6zZ5rRWX/sIWl3znjIJ8xy6Hofoeg== + dependencies: + chalk "^2.4.2" + concat-with-sourcemaps "^1.0.5" + cssnano "^4.1.8" + import-cwd "^2.1.0" + p-queue "^2.4.2" + pify "^3.0.0" + postcss "^7.0.14" + postcss-load-config "^2.0.0" + postcss-modules "^1.4.1" + promise.series "^0.2.0" + reserved-words "^0.1.2" + resolve "^1.5.0" + rollup-pluginutils "^2.0.1" + style-inject "^0.3.0" + rollup-plugin-postcss@3.1.8: version "3.1.8" resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-3.1.8.tgz#d1bcaf8eb0fcb0936e3684c22dd8628d13a82fd1" @@ -14096,6 +16515,14 @@ rollup-plugin-postcss@3.1.8: safe-identifier "^0.4.1" style-inject "^0.3.0" +rollup-plugin-replace@^2.1.0: + version "2.2.0" + resolved "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3" + integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA== + dependencies: + magic-string "^0.25.2" + rollup-pluginutils "^2.6.0" + rollup-plugin-terser@7.0.2: version "7.0.2" resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" @@ -14117,13 +16544,22 @@ rollup-plugin-typescript2@0.29.0: resolve "1.17.0" tslib "2.0.1" -rollup-pluginutils@^2.8.2: +rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.8.2: version "2.8.2" resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" +rollup@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-1.1.2.tgz#8d094b85683b810d0c05a16bd7618cf70d48eba7" + integrity sha512-OkdMxqMl8pWoQc5D8y1cIinYQPPLV8ZkfLgCzL6SytXeNA2P7UHynEQXI9tYxuAjAMsSyvRaWnyJDLHMxq0XAg== + dependencies: + "@types/estree" "0.0.39" + "@types/node" "*" + acorn "^6.0.5" + rollup@2.33.3: version "2.33.3" resolved "https://registry.npmjs.org/rollup/-/rollup-2.33.3.tgz#ae72ce31f992b09a580072951bfea76e9df17342" @@ -14131,6 +16567,14 @@ rollup@2.33.3: optionalDependencies: fsevents "~2.1.2" +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= + dependencies: + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -14141,6 +16585,13 @@ run-async@^2.2.0: resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -14148,12 +16599,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -run-series@^1.1.8: - version "1.1.9" - resolved "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz#15ba9cb90e6a6c054e67c98e1dc063df0ecc113a" - integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g== - -rxjs@^6.4.0, rxjs@^6.6.7: +rxjs@^6.4.0: version "6.6.7" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -14165,7 +16611,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -14202,11 +16648,18 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.4, sax@~1.2.4: +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.nlark.com/saxes/download/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha1-1Z0f0zLskq2YouCy7mRHAjhLHFs= + dependencies: + xmlchars "^2.1.1" + saxes@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -14222,6 +16675,14 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -14231,6 +16692,11 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +screenfull@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" + integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA== + scroll-into-view-if-needed@^2.2.25: version "2.2.28" resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz#5a15b2f58a52642c88c8eca584644e01703d645a" @@ -14238,16 +16704,23 @@ scroll-into-view-if-needed@^2.2.25: dependencies: compute-scroll-into-view "^1.0.17" +sdk-base@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/sdk-base/-/sdk-base-2.0.1.tgz#ba40289e8bdf272ed11dd9ea97eaf98e036d24c6" + integrity sha1-ukAonovfJy7RHdnql+r5jgNtJMY= + dependencies: + get-ready "~1.0.0" + +seamless-immutable@^7.1.3: + version "7.1.4" + resolved "https://registry.npm.taobao.org/seamless-immutable/download/seamless-immutable-7.1.4.tgz#6e9536def083ddc4dea0207d722e0e80d0f372f8" + integrity sha1-bpU23vCD3cTeoCB9ci4OgNDzcvg= + select@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -14255,39 +16728,27 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.0, semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.x, semver@^7.2, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -semver@~7.2.0: - version "7.2.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz#3641217233c6382173c76bf2c7ecd1e1c16b0d8a" - integrity sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig== +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== seq-queue@^0.0.5: version "0.0.5" @@ -14299,7 +16760,7 @@ sequelize-pool@^6.0.0: resolved "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz#caaa0c1e324d3c2c3a399fed2c7998970925d668" integrity sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg== -sequelize@^6.3.4: +sequelize@^6.3.3, sequelize@^6.3.4: version "6.6.2" resolved "https://registry.npmjs.org/sequelize/-/sequelize-6.6.2.tgz#3681b0a4aeb106e31079d3a537d88542051dab2e" integrity sha512-H/zrzmTK+tis9PJaSigkuXI57nKBvNCtPQol0yxCvau1iWLzSOuq8t3tMOVeQ+Ep8QH2HoD9/+FCCIAqzUr/BQ== @@ -14345,6 +16806,11 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -14370,6 +16836,11 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +shallow-equal@^1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/shallow-equal/download/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha1-TBar+lYEOqINBQMk76aJQLDaedo= + shallowequal@^1.0.1, shallowequal@^1.0.2, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -14404,11 +16875,6 @@ shellwords@^0.1.1: resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -14418,12 +16884,12 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -signale@1.4.0: +signale@1.4.0, signale@^1.3.0: version "1.4.0" resolved "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w== @@ -14469,15 +16935,6 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -14545,9 +17002,9 @@ socks-proxy-agent@^4.0.0: socks "~2.3.2" socks@^2.3.3: - version "2.6.0" - resolved "https://registry.npmjs.org/socks/-/socks-2.6.0.tgz#6b984928461d39871b3666754b9000ecf39dfac2" - integrity sha512-mNmr9owlinMplev0Wd7UHFlqI4ofnBnNzFuzrm63PPaHgbkqCFe4T5LzwKmtQ/f2tX0NTpcdVLyD/FHxFBstYw== + version "2.6.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" + integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== dependencies: ip "^1.1.5" smart-buffer "^4.1.0" @@ -14574,7 +17031,12 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-resolve@^0.5.0: +sorted-array-functions@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" + integrity sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -14585,7 +17047,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.19, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.19: +source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -14649,12 +17111,12 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== -speech-rule-engine@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-3.1.1.tgz#d790cee416e17838712c7cff5ad00c7dfe2097be" - integrity sha512-FGX8B44yI3yGhmcw8nZ/by2ffUlZG6m5b/O3RULXsSiwhL/evL+jwQ6BXQxV3gGtOYptOFalTVCAFknAJgBKAg== +speech-rule-engine@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-3.2.0.tgz#6313ae0f8596519fa8dfc3ef01beae6b6cca312f" + integrity sha512-Vg1pNhl3cdVPk5XWn8su+bUNs+jaY1UmvKLeLui+iJ5/a0Kr7cOfO2gGuYOMd/3+0wLvzEqmou8rtz5REBd9xQ== dependencies: - commander "^6.0.0" + commander ">=7.0.0" wicked-good-xpath "^1.3.0" xmldom-sre "^0.1.31" @@ -14691,11 +17153,6 @@ split@^1.0.0: dependencies: through "2" -sprintf-js@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -14733,6 +17190,13 @@ stable@^0.1.8: resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" + stack-utils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" @@ -14748,7 +17212,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.5.0 < 2", statuses@^1.5.0: +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.3.1, statuses@^1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -14774,6 +17238,17 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" +stream-http@2.8.2: + version "2.8.2" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" + integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -14790,6 +17265,16 @@ stream-shift@^1.0.0: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +stream-wormhole@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/stream-wormhole/-/stream-wormhole-1.1.0.tgz#300aff46ced553cfec642a05251885417693c33d" + integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew== + +streamsearch@0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" + integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -14800,11 +17285,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - string-convert@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" @@ -14815,6 +17295,14 @@ string-hash@^1.1.1: resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -14849,7 +17337,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== @@ -14858,6 +17346,28 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.1: + version "1.2.4" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" + integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -14939,6 +17449,11 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -15025,29 +17540,30 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -superagent@^3.8.3: - version "3.8.3" - resolved "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" - integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== +superagent@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6" + integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== dependencies: - component-emitter "^1.2.0" - cookiejar "^2.1.0" - debug "^3.1.0" - extend "^3.0.0" - form-data "^2.3.1" - formidable "^1.2.0" - methods "^1.1.1" - mime "^1.4.1" - qs "^6.5.1" - readable-stream "^2.3.5" + component-emitter "^1.3.0" + cookiejar "^2.1.2" + debug "^4.1.1" + fast-safe-stringify "^2.0.7" + form-data "^3.0.0" + formidable "^1.2.2" + methods "^1.1.2" + mime "^2.4.6" + qs "^6.9.4" + readable-stream "^3.6.0" + semver "^7.3.2" -supertest@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36" - integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ== +supertest@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/supertest/-/supertest-6.1.3.tgz#3f49ea964514c206c334073e8dc4e70519c7403f" + integrity sha512-v2NVRyP73XDewKb65adz+yug1XMtmvij63qIWHZzSX8tp6wiq6xBLUy4SUAd2NII6wIipOmHT/FD9eicpJwdgQ== dependencies: methods "^1.1.2" - superagent "^3.8.3" + superagent "^6.1.0" supports-color@^2.0.0: version "2.0.0" @@ -15061,7 +17577,7 @@ supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: +supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -15114,25 +17630,22 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-tree@^3.2.4: +symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.4: - version "6.1.0" - resolved "https://registry.npmjs.org/table/-/table-6.1.0.tgz#676a0cfb206008b59e783fcd94ef8ba7d67d966c" - integrity sha512-T4G5KMmqIk6X87gLKWyU5exPpTjLjY5KyrFWaIjv3SvgaIUGXV7UEzGEnZJdTA38/yUS6f9PlKezQ0bYXG3iIQ== + version "6.7.0" + resolved "https://registry.npmjs.org/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" + integrity sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw== dependencies: ajv "^8.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" lodash.clonedeep "^4.5.0" - lodash.flatten "^4.4.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" string-width "^4.2.0" + strip-ansi "^6.0.0" tapable@^1.0.0: version "1.1.3" @@ -15152,6 +17665,18 @@ tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" +tar@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + temp-dir@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" @@ -15181,11 +17706,6 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -15214,9 +17734,9 @@ terser@5.6.0: source-map-support "~0.5.19" terser@^5.0.0, terser@^5.5.1: - version "5.6.1" - resolved "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" - integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== + version "5.7.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -15265,6 +17785,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + throat@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -15278,14 +17803,7 @@ through2-filter@^3.0.0: through2 "~2.0.0" xtend "~4.0.0" -through2@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - -through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: +through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: version "2.0.5" resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -15293,6 +17811,21 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2. readable-stream "~2.3.6" xtend "~4.0.1" +through2@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2" + integrity sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ== + dependencies: + readable-stream "2 || 3" + xtend "~4.0.1" + +through2@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + through2@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" @@ -15308,7 +17841,7 @@ through2@^4.0.0: dependencies: readable-stream "3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -15325,6 +17858,14 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + timsort@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" @@ -15434,14 +17975,7 @@ toposort-class@^1.0.1: resolved "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -15497,10 +18031,10 @@ trough@^1.0.0: resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-jest@^26.1.2: - version "26.5.4" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.4.tgz#207f4c114812a9c6d5746dd4d1cdf899eafc9686" - integrity sha512-I5Qsddo+VTm94SukBJ4cPimOoFZsYTeElR2xy6H2TOVs+NsvgYglW8KuQgKoApOKuaU/Ix/vrF9ebFZlb5D2Pg== +ts-jest@^26.5.6: + version "26.5.6" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35" + integrity sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -15514,9 +18048,9 @@ ts-jest@^26.1.2: yargs-parser "20.x" ts-loader@^8.0.7: - version "8.1.0" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-8.1.0.tgz#d6292487df279c7cc79b6d3b70bb9d31682b693e" - integrity sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A== + version "8.2.0" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-8.2.0.tgz#6a3aeaa378aecda543e2ed2c332d3123841d52e0" + integrity sha512-ebXBFrNyMSmbWgjnb3WBloUBK+VSx1xckaXsMXxlZRDqce/OPdYBVN5efB0W3V0defq0Gcy4YuzvPGqRgjj85A== dependencies: chalk "^4.1.0" enhanced-resolve "^4.0.0" @@ -15524,12 +18058,13 @@ ts-loader@^8.0.7: micromatch "^4.0.0" semver "^7.3.4" -ts-node@^8.10.2: - version "8.10.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" - integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== dependencies: arg "^4.1.0" + create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" source-map-support "^0.5.17" @@ -15545,11 +18080,6 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@1.9.3: - version "1.9.3" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - tslib@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" @@ -15560,7 +18090,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1: +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== @@ -15589,11 +18119,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tv4@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz#d020c846fadd50c855abb25ebaecc68fc10f7963" - integrity sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM= - tween-functions@^1.0.1: version "1.2.0" resolved "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff" @@ -15653,7 +18178,7 @@ type-fest@^0.8.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@^1.6.16: +type-is@^1.6.16, type-is@^1.6.4: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -15661,6 +18186,16 @@ type-is@^1.6.16: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.5.0" + resolved "https://registry.npmjs.org/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -15673,16 +18208,16 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.9.6: +typescript@4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72" + integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== + +typescript@^3.7.2: version "3.9.9" resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== -typescript@^4.0.5: - version "4.2.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" - integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== - ua-parser-js@^0.7.18: version "0.7.28" resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" @@ -15699,9 +18234,9 @@ uglify-js@^2.8.22: uglify-to-browserify "~1.0.0" uglify-js@^3.1.4: - version "3.13.4" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574" - integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw== + version "3.13.5" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.5.tgz#5d71d6dbba64cf441f32929b1efce7365bb4f113" + integrity sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw== uglify-to-browserify@~1.0.0: version "1.0.2" @@ -15718,18 +18253,93 @@ umask@^1.1.0: resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -umi@^3.0.0: - version "3.4.8" - resolved "https://registry.npmjs.org/umi/-/umi-3.4.8.tgz#f9f473f77e7ce46809563d964b143b3a65c01c90" - integrity sha512-PKpXqZpBl5iAADFVEosp07l5PHSjUbTcGb8h2VGoYFAE3rUj3zpsSgJjF05nKoLdpVPxBLZt7zPmmuVfXNzxfg== +umi-request@^1.2.14, umi-request@^1.3.5: + version "1.3.5" + resolved "https://registry.npmjs.org/umi-request/-/umi-request-1.3.5.tgz#2af7e9fbaaeed0086c07d8c4876b3af65c084aea" + integrity sha512-PqGz1mbLTkLjvL7ovM5Tmx/ChfY819T6P6VIsp4n15Lldn9Q85VYil4WuHSPpnur7I0thbWBuMnfLY7j5QWstg== dependencies: - "@umijs/bundler-webpack" "3.4.8" - "@umijs/core" "3.4.8" - "@umijs/deps" "0.8.1" - "@umijs/preset-built-in" "3.4.8" - "@umijs/runtime" "3.4.8" - "@umijs/types" "3.4.8" - "@umijs/utils" "3.4.8" + isomorphic-fetch "^2.2.1" + qs "^6.9.1" + +umi-test@^1.2.0: + version "1.9.6" + resolved "https://registry.npmjs.org/umi-test/-/umi-test-1.9.6.tgz#63856c511d396def5a088e6df7cdfc5311da2321" + integrity sha512-2t5YbLAKLE9HhCiFzgy32yUrYG7fjTLgYcIdLBROnD17bB7KoOWj+Y83RZIJqH3rUSpOqWxOKqv7cUdArbEqTQ== + dependencies: + "@babel/core" "7.4.5" + "@babel/preset-typescript" "7.3.3" + babel-core "7.0.0-bridge.0" + babel-jest "^24.8.0" + babel-plugin-module-resolver "3.2.0" + babel-preset-umi "1.8.4" + core-js "3.1.4" + debug "4.1.1" + enzyme "^3.10.0" + enzyme-adapter-react-16 "^1.14.0" + identity-obj-proxy "3.0.0" + jest "^24.8.0" + jest-cli "^24.8.0" + jest-pnp-resolver "^1.2.0" + jest-resolve "^24.8.0" + react "^16.8.6" + react-dom "^16.8.6" + regenerator-runtime "0.13.2" + typescript "^3.7.2" + umi-utils "1.7.2" + yargs-parser "13.1.1" + +umi-tools@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/umi-tools/-/umi-tools-0.4.0.tgz#ff1573df6abc6a579ed523a522581ed68246ff3e" + integrity sha512-RX9vEnVM6Zx6h1nkhFxNf8vYYFYGeB/MTEqFYkMk+qxc022VJUX0veIfiXSkC0apAAJ070Kp6HyyQ8ZlSkpzBg== + dependencies: + "@babel/core" "^7.1.2" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-do-expressions" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/preset-env" "^7.1.0" + "@babel/preset-react" "^7.0.0" + "@babel/preset-typescript" "^7.1.0" + "@babel/runtime" "^7.3.0" + chalk "^2.4.1" + chokidar "^2.0.4" + rimraf "^2.6.2" + rollup "1.1.2" + rollup-plugin-commonjs "^9.2.0" + rollup-plugin-node-resolve "4.0.0" + rollup-plugin-postcss "2.0.3" + rollup-plugin-replace "^2.1.0" + signale "^1.3.0" + slash2 "^2.0.0" + through2 "3.0.0" + umi-test "^1.2.0" + vinyl-fs "^3.0.3" + yargs-parser "13.0.0" + +umi-utils@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/umi-utils/-/umi-utils-1.7.2.tgz#940448f1241630843dd55e7b3b48a5c3d1aff53d" + integrity sha512-l/IV3bcPqjhzTi4L4HkcWVh8+mLzXupXdsQi87RmGHcPR9CRlZW91PLRVaybZ3G/KTBbhlVl4pF4RrtU972/QA== + dependencies: + chalk "2.4.2" + dotenv "^8.2.0" + is-url "1.2.4" + node-fetch "2.6.0" + prettier "1.15.3" + slash2 "2.0.0" + +umi@^3.0.0: + version "3.4.15" + resolved "https://registry.npmjs.org/umi/-/umi-3.4.15.tgz#528cdf952acfe9ce6f50fdceb64394c3b175b590" + integrity sha512-EM62sAoP0RfdYK3s0QBv8T+xcjyC6ClIfFzKSaeMYzFQCs0BXIVBsdY0s284CJMFiiS/uvXPOXYnIe2rRcHT1g== + dependencies: + "@umijs/bundler-webpack" "3.4.15" + "@umijs/core" "3.4.15" + "@umijs/deps" "3.4.15" + "@umijs/preset-built-in" "3.4.15" + "@umijs/runtime" "3.4.15" + "@umijs/types" "3.4.15" + "@umijs/utils" "3.4.15" react "16.x" react-dom "16.x" v8-compile-cache "2.3.0" @@ -15749,17 +18359,17 @@ unc-path-regex@^0.1.2: resolved "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= -undefsafe@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" - integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== - dependencies: - debug "^2.2.0" - underscore@^1.7.0: - version "1.13.0" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.0.tgz#3ccdcbb824230fc6bf234ad0ddcd83dff4eafe5f" - integrity sha512-sCs4H3pCytsb5K7i072FAEC9YlSYFIbosvM0tAKAlpSSUgD7yC1iXSEGdl5XrDKQ1YUB+p/HDzYrSG2H2Vl36g== + version "1.13.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + +unescape@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" + integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== + dependencies: + extend-shallow "^2.0.1" unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" @@ -15844,13 +18454,6 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - unist-builder@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" @@ -15944,7 +18547,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.2.0: +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -15967,24 +18570,12 @@ update-notifier@3.0.0: semver-diff "^2.0.0" xdg-basedir "^3.0.0" -update-notifier@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== +upper-case@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" + tslib "^2.0.3" uri-js@^4.2.2: version "4.4.1" @@ -16013,6 +18604,27 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +urllib@^2.33.1: + version "2.37.1" + resolved "https://registry.npmjs.org/urllib/-/urllib-2.37.1.tgz#1016b88aab32b27048a4d52d36203771c63e3b0f" + integrity sha512-VyuFjI8kpXqVHfRZ7Z7xuy+2D4BntjCu5ZYxtmJ/jC/erpp0DP7RK0YYu6YhhjTkK+9VRo+MK3d38aJ8UpA6GQ== + dependencies: + any-promise "^1.3.0" + content-type "^1.0.2" + debug "^2.6.9" + default-user-agent "^1.0.0" + digest-header "^0.0.1" + ee-first "~1.1.1" + formstream "^1.1.0" + humanize-ms "^1.2.0" + iconv-lite "^0.4.15" + ip "^1.1.5" + proxy-agent "^4.0.1" + pump "^3.0.0" + qs "^6.4.0" + statuses "^1.3.1" + utility "^1.16.1" + use-subscription@1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" @@ -16037,6 +18649,17 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" +util.promisify@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + for-each "^0.3.3" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.1" + util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" @@ -16061,7 +18684,25 @@ util@^0.11.0: dependencies: inherits "2.0.3" -uuid@^3.0.1, uuid@^3.2.1, uuid@^3.3.2: +utility@0.1.11: + version "0.1.11" + resolved "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz#fde60cf9b4e4751947a0cf5d104ce29367226715" + integrity sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU= + dependencies: + address ">=0.0.1" + +utility@^1.16.1, utility@^1.8.0: + version "1.17.0" + resolved "https://registry.npmjs.org/utility/-/utility-1.17.0.tgz#60819f712a6e0ce774f52fb1d691992a5f59d362" + integrity sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw== + dependencies: + copy-to "^2.0.1" + escape-html "^1.0.3" + mkdirp "^0.5.1" + mz "^2.7.0" + unescape "^1.0.1" + +uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -16077,9 +18718,9 @@ v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^7.0.0: - version "7.1.1" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.1.tgz#04bfd1026ba4577de5472df4f5e89af49de5edda" - integrity sha512-p0BB09E5FRjx0ELN6RgusIPsSPhtgexSRcKETybEs6IGOTXJSZqfwxp7r//55nnu0f1AxltY5VvdVqy2vZf9AA== + version "7.1.2" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -16212,28 +18853,27 @@ vinyl@^2.0.0, vinyl@^2.1.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vizion@2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz#04201ea45ffd145d5b5210e385a8f35170387fb2" - integrity sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww== - dependencies: - async "^2.6.3" - git-node-fs "^1.0.0" - ini "^1.3.5" - js-git "^0.7.8" - vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -w3c-hr-time@^1.0.2: +w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/w3c-xmlserializer/download/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha1-MEhcp9cKb9BSQgo9Ev2Q5jOc55Q= + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" @@ -16297,23 +18937,32 @@ webpack-chain@6.5.1: deepmerge "^1.5.2" javascript-stringify "^2.0.1" -whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-fetch@>=0.10.0: +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.5.0: version "3.6.2" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== -whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -16353,7 +19002,7 @@ which-module@^2.0.0: resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.1: +which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -16386,12 +19035,17 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== +wildcard@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5" + integrity sha1-pwIEUwhNjNLv5wup02liY94XEKU= + +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + integrity sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk= dependencies: - string-width "^4.0.0" + semver "^5.0.1" window-size@0.1.0: version "0.1.0" @@ -16445,20 +19099,20 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -16510,32 +19164,49 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" -ws@^7.0.0, ws@^7.4.4: - version "7.4.4" - resolved "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" - integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" -ws@~7.2.0: - version "7.2.5" - resolved "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d" - integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA== +ws@^6.1.2: + version "6.2.1" + resolved "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs= + dependencies: + async-limiter "~1.0.0" + +ws@^7.4.4: + version "7.4.5" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" + integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.2.0: +xml2js@^0.4.16: + version "0.4.23" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlchars@^2.1.1, xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== @@ -16580,15 +19251,23 @@ yaml@^1.10.0: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yamljs@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" - integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== +yargs-parser@13.0.0: + version "13.0.0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" + integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== dependencies: - argparse "^1.0.7" - glob "^7.0.5" + camelcase "^5.0.0" + decamelize "^1.2.0" -yargs-parser@13.1.2: +yargs-parser@13.1.1: + version "13.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -16617,6 +19296,22 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^14.2.2: version "14.2.3" resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" @@ -16673,8 +19368,8 @@ yn@3.1.1: yorkie@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" - integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== + resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" + integrity sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k= dependencies: execa "^0.8.0" is-ci "^1.0.10"