From 00dade3b47038107ca186383f220a702c4a0926a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8B=E7=BE=8A?= Date: Tue, 17 Mar 2020 17:41:39 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E4=BA=86=E4=B8=8B?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor/src/plugins/designer/index.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/editor/src/plugins/designer/index.tsx b/packages/editor/src/plugins/designer/index.tsx index 7c559c311..2e98d0364 100644 --- a/packages/editor/src/plugins/designer/index.tsx +++ b/packages/editor/src/plugins/designer/index.tsx @@ -30,13 +30,16 @@ const SCHEMA = { }, props: { ref: 'outterView', - autoLoading: true + autoLoading: true, + style: { + padding: 20 + } }, children: [ { componentName: 'Form', props: { - labelCol: 4, + labelCol: 3, style: {}, ref: 'testForm' }, From 9df6769016d4c3814dcc15a92331a3fddce62236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8B=E7=BE=8A?= Date: Wed, 25 Mar 2020 11:00:43 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:editor-framework,editor-skeleton?= =?UTF-8?q?=E6=8B=86=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/package.json | 1 + packages/editor-framework/.eslintrc.js | 17 +- packages/editor-framework/es/areaManager.d.ts | 15 + packages/editor-framework/es/areaManager.js | 77 ++++ packages/editor-framework/es/definitions.d.ts | 130 +++++++ .../es/definitions.js} | 0 packages/editor-framework/es/editor.d.ts | 33 ++ packages/editor-framework/es/editor.js | 283 ++++++++++++++ packages/editor-framework/es/index.d.ts | 8 + packages/editor-framework/es/index.js | 8 + .../editor-framework/es/pluginFactory.d.ts | 3 + packages/editor-framework/es/pluginFactory.js | 98 +++++ packages/editor-framework/es/style.js | 1 + packages/editor-framework/es/utils.d.ts | 71 ++++ packages/editor-framework/es/utils.js | 270 +++++++++++++ packages/editor-framework/package.json | 6 +- .../src}/areaManager.ts | 33 +- packages/editor-framework/src/context.ts | 1 + packages/editor-framework/src/definitions.ts | 162 ++++++-- packages/editor-framework/src/editor.ts | 226 ++++++----- packages/editor-framework/src/index.ts | 10 +- packages/editor-framework/src/plugin.ts | 129 ------- .../src}/pluginFactory.tsx | 15 +- packages/editor-framework/src/utils.ts | 360 ++++++++++-------- packages/editor-skeleton/.eslintrc.js | 13 +- .../es/components/LeftIcon/index.scss | 0 .../es/components/LeftPlugin/index.d.ts | 34 +- .../es/components/LeftPlugin/index.js | 198 +++++----- .../es/components/LeftPlugin/index.scss | 61 +-- .../es/components/Panel/index.d.ts | 27 ++ .../es/components/Panel/index.js | 55 +++ .../es}/components/Panel/index.scss | 0 .../es/components/TopIcon/index.d.ts | 31 +- .../es/components/TopIcon/index.js | 33 +- .../es/components/TopIcon/index.scss | 64 +++- .../es/components/TopPlugin/index.d.ts | 25 +- .../es/components/TopPlugin/index.js | 115 +++--- .../editor-skeleton/es/config/skeleton.d.ts | 16 +- .../editor-skeleton/es/config/skeleton.js | 15 +- packages/editor-skeleton/es/config/utils.d.ts | 4 +- packages/editor-skeleton/es/config/utils.js | 4 +- packages/editor-skeleton/es/global.scss | 10 +- packages/editor-skeleton/es/index.d.ts | 40 +- packages/editor-skeleton/es/index.js | 138 +++++-- .../es/layouts/CenterArea/index.d.ts | 19 +- .../es/layouts/CenterArea/index.js | 46 ++- .../es/layouts/CenterArea/index.scss | 2 +- .../es/layouts/LeftArea/index.scss | 14 +- .../es/layouts/LeftArea/nav.d.ts | 27 +- .../es/layouts/LeftArea/nav.js | 150 +++++++- .../es/layouts/LeftArea/panel.d.ts | 23 +- .../es/layouts/LeftArea/panel.js | 65 +++- .../es/layouts/RightArea/index.d.ts | 27 +- .../es/layouts/RightArea/index.js | 200 +++++++++- .../es/layouts/RightArea/index.scss | 166 ++------ .../es/layouts/TopArea/index.d.ts | 17 +- .../es/layouts/TopArea/index.js | 45 ++- .../es/layouts/TopArea/index.scss | 31 +- packages/editor-skeleton/es/locale/en-US.js | 11 +- packages/editor-skeleton/es/locale/zh-CN.js | 11 +- packages/editor-skeleton/es/style.js | 5 +- packages/editor-skeleton/package.json | 14 +- .../src/components/LeftIcon/index.scss | 0 .../src/components/LeftIcon/index.tsx | 0 .../src/components/LeftPlugin/index.scss | 61 +-- .../src/components/LeftPlugin/index.tsx | 222 ++++++----- .../src/components/Panel/index.scss | 52 +++ .../src/components/Panel/index.tsx | 60 +++ .../src/components/TopIcon/index.scss | 64 +++- .../src/components/TopIcon/index.tsx | 59 ++- .../src/components/TopPlugin/index.tsx | 173 +++++---- .../editor-skeleton/src/config/skeleton.ts | 22 +- packages/editor-skeleton/src/config/utils.ts | 6 +- packages/editor-skeleton/src/global.scss | 7 +- packages/editor-skeleton/src/index.tsx | 187 +++++++-- .../src/layouts/CenterArea/index.scss | 2 +- .../src/layouts/CenterArea/index.tsx | 55 ++- .../src/layouts/LeftArea/index.scss | 14 +- .../src/layouts/LeftArea/nav.tsx | 141 ++++++- .../src/layouts/LeftArea/panel.tsx | 83 +++- .../src/layouts/RightArea/index.scss | 166 ++------ .../src/layouts/RightArea/index.tsx | 209 +++++++++- .../src/layouts/TopArea/index.scss | 31 +- .../src/layouts/TopArea/index.tsx | 101 +++-- packages/editor-skeleton/src/locale/en-US.js | 11 +- packages/editor-skeleton/src/locale/zh-CN.js | 11 +- packages/editor/package.json | 2 + packages/editor/src/config/skeleton.js | 2 +- packages/editor/src/framework/context.ts | 4 - packages/editor/src/framework/definitions.ts | 154 -------- packages/editor/src/framework/editor.ts | 230 ----------- packages/editor/src/framework/index.ts | 12 - packages/editor/src/framework/utils.ts | 272 ------------- packages/editor/src/index.d.ts | 8 - packages/editor/src/index.tsx | 22 +- .../skeleton/components/LeftPlugin/index.scss | 54 --- .../skeleton/components/LeftPlugin/index.tsx | 210 ---------- .../src/skeleton/components/Panel/index.tsx | 60 --- .../skeleton/components/TopIcon/index.scss | 73 ---- .../src/skeleton/components/TopIcon/index.tsx | 53 --- .../skeleton/components/TopPlugin/index.scss | 2 - .../skeleton/components/TopPlugin/index.tsx | 195 ---------- .../editor/src/skeleton/config/skeleton.ts | 1 - packages/editor/src/skeleton/config/utils.ts | 1 - packages/editor/src/skeleton/global.scss | 33 -- packages/editor/src/skeleton/index.tsx | 142 ------- .../skeleton/layouts/CenterArea/index.scss | 3 - .../src/skeleton/layouts/CenterArea/index.tsx | 52 --- .../src/skeleton/layouts/LeftArea/index.scss | 23 -- .../src/skeleton/layouts/LeftArea/index.tsx | 7 - .../src/skeleton/layouts/LeftArea/nav.tsx | 178 --------- .../src/skeleton/layouts/LeftArea/panel.tsx | 78 ---- .../src/skeleton/layouts/RightArea/index.scss | 39 -- .../src/skeleton/layouts/RightArea/index.tsx | 187 --------- .../src/skeleton/layouts/TopArea/index.scss | 30 -- .../src/skeleton/layouts/TopArea/index.tsx | 93 ----- packages/editor/src/skeleton/locale/en-US.js | 10 - packages/editor/src/skeleton/locale/ja-JP.js | 1 - packages/editor/src/skeleton/locale/zh-CN.js | 10 - packages/editor/src/skeleton/locale/zh-TW.js | 1 - packages/editor/src/skeleton/skeleton.tsx | 137 ------- packages/material-parser/package.json | 1 + packages/plugin-setters/package.json | 1 + packages/plugin-settings/package.json | 5 +- packages/react-renderer/package.json | 5 +- packages/runtime-framework/package.json | 1 + packages/utils/package.json | 1 + 127 files changed, 3925 insertions(+), 3918 deletions(-) create mode 100644 packages/editor-framework/es/areaManager.d.ts create mode 100644 packages/editor-framework/es/areaManager.js create mode 100644 packages/editor-framework/es/definitions.d.ts rename packages/{editor-skeleton/es/components/LeftIcon/index.js => editor-framework/es/definitions.js} (100%) create mode 100644 packages/editor-framework/es/editor.d.ts create mode 100644 packages/editor-framework/es/editor.js create mode 100644 packages/editor-framework/es/index.d.ts create mode 100644 packages/editor-framework/es/index.js create mode 100644 packages/editor-framework/es/pluginFactory.d.ts create mode 100644 packages/editor-framework/es/pluginFactory.js create mode 100644 packages/editor-framework/es/style.js create mode 100644 packages/editor-framework/es/utils.d.ts create mode 100644 packages/editor-framework/es/utils.js rename packages/{editor/src/framework => editor-framework/src}/areaManager.ts (52%) delete mode 100644 packages/editor-framework/src/plugin.ts rename packages/{editor/src/framework => editor-framework/src}/pluginFactory.tsx (82%) delete mode 100644 packages/editor-skeleton/es/components/LeftIcon/index.scss create mode 100644 packages/editor-skeleton/es/components/Panel/index.d.ts rename packages/{editor/src/skeleton => editor-skeleton/es}/components/Panel/index.scss (100%) delete mode 100644 packages/editor-skeleton/src/components/LeftIcon/index.scss delete mode 100644 packages/editor-skeleton/src/components/LeftIcon/index.tsx create mode 100644 packages/editor-skeleton/src/components/Panel/index.scss delete mode 100644 packages/editor/src/framework/context.ts delete mode 100644 packages/editor/src/framework/definitions.ts delete mode 100644 packages/editor/src/framework/editor.ts delete mode 100644 packages/editor/src/framework/index.ts delete mode 100644 packages/editor/src/framework/utils.ts delete mode 100644 packages/editor/src/index.d.ts delete mode 100644 packages/editor/src/skeleton/components/LeftPlugin/index.scss delete mode 100644 packages/editor/src/skeleton/components/LeftPlugin/index.tsx delete mode 100644 packages/editor/src/skeleton/components/Panel/index.tsx delete mode 100644 packages/editor/src/skeleton/components/TopIcon/index.scss delete mode 100644 packages/editor/src/skeleton/components/TopIcon/index.tsx delete mode 100644 packages/editor/src/skeleton/components/TopPlugin/index.scss delete mode 100644 packages/editor/src/skeleton/components/TopPlugin/index.tsx delete mode 100644 packages/editor/src/skeleton/config/skeleton.ts delete mode 100644 packages/editor/src/skeleton/config/utils.ts delete mode 100644 packages/editor/src/skeleton/global.scss delete mode 100644 packages/editor/src/skeleton/index.tsx delete mode 100644 packages/editor/src/skeleton/layouts/CenterArea/index.scss delete mode 100644 packages/editor/src/skeleton/layouts/CenterArea/index.tsx delete mode 100644 packages/editor/src/skeleton/layouts/LeftArea/index.scss delete mode 100644 packages/editor/src/skeleton/layouts/LeftArea/index.tsx delete mode 100644 packages/editor/src/skeleton/layouts/LeftArea/nav.tsx delete mode 100644 packages/editor/src/skeleton/layouts/LeftArea/panel.tsx delete mode 100644 packages/editor/src/skeleton/layouts/RightArea/index.scss delete mode 100644 packages/editor/src/skeleton/layouts/RightArea/index.tsx delete mode 100644 packages/editor/src/skeleton/layouts/TopArea/index.scss delete mode 100644 packages/editor/src/skeleton/layouts/TopArea/index.tsx delete mode 100644 packages/editor/src/skeleton/locale/en-US.js delete mode 100644 packages/editor/src/skeleton/locale/ja-JP.js delete mode 100644 packages/editor/src/skeleton/locale/zh-CN.js delete mode 100644 packages/editor/src/skeleton/locale/zh-TW.js delete mode 100644 packages/editor/src/skeleton/skeleton.tsx diff --git a/packages/designer/package.json b/packages/designer/package.json index 95d06f83c..b9d63b32d 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -7,6 +7,7 @@ "license": "MIT", "dependencies": { "@ali/iceluna-sdk": "^1.0.5-beta.12", + "@ali/lowcode-editor-framework": "^0.0.1", "@recore/obx": "^1.0.8", "@recore/obx-react": "^1.0.7", "@types/medium-editor": "^5.0.3", diff --git a/packages/editor-framework/.eslintrc.js b/packages/editor-framework/.eslintrc.js index ebda54735..4d6be3c66 100644 --- a/packages/editor-framework/.eslintrc.js +++ b/packages/editor-framework/.eslintrc.js @@ -1,5 +1,16 @@ -const { eslint, deepmerge } = require('@ice/spec'); +const { tslint, deepmerge } = require('@ice/spec'); -module.exports = deepmerge(eslint, { - rules: {}, +module.exports = deepmerge(tslint, { + rules: { + "global-require": 0, + "comma-dangle": 0, + "no-unused-expressions": 0, + "object-shorthand": 0, + "jsx-a11y/anchor-has-content": 0, + "react/sort-comp": 0, + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", "ts"] }], + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-member-accessibility": 0 + }, }); diff --git a/packages/editor-framework/es/areaManager.d.ts b/packages/editor-framework/es/areaManager.d.ts new file mode 100644 index 000000000..6d058306f --- /dev/null +++ b/packages/editor-framework/es/areaManager.d.ts @@ -0,0 +1,15 @@ +import { PluginConfig, PluginStatus, PluginClass, HOCPlugin } from './definitions'; +import Editor from './index'; +export default class AreaManager { + private pluginStatus; + private config; + private editor; + private area; + constructor(editor: Editor, area: string); + isPluginStatusUpdate(pluginType?: string, notUpdateStatus?: boolean): boolean; + getVisiblePluginList(pluginType?: string): PluginConfig[]; + getPlugin(pluginKey: string): HOCPlugin | void; + getPluginConfig(pluginKey?: string): PluginConfig[] | PluginConfig | undefined; + getPluginClass(pluginKey: string): PluginClass | void; + getPluginStatus(pluginKey: string): PluginStatus | void; +} diff --git a/packages/editor-framework/es/areaManager.js b/packages/editor-framework/es/areaManager.js new file mode 100644 index 000000000..38913e1bc --- /dev/null +++ b/packages/editor-framework/es/areaManager.js @@ -0,0 +1,77 @@ +import { clone, deepEqual } from './utils'; + +var AreaManager = /*#__PURE__*/function () { + function AreaManager(editor, area) { + this.pluginStatus = void 0; + this.config = void 0; + this.editor = void 0; + this.area = void 0; + this.editor = editor; + this.area = area; + this.config = editor && editor.config && editor.config.plugins && editor.config.plugins[this.area] || []; + this.pluginStatus = clone(editor.pluginStatus); + } + + var _proto = AreaManager.prototype; + + _proto.isPluginStatusUpdate = function isPluginStatusUpdate(pluginType, notUpdateStatus) { + var _this = this; + + var pluginStatus = this.editor.pluginStatus; + var list = pluginType ? this.config.filter(function (item) { + return item.type === pluginType; + }) : this.config; + var isUpdate = list.some(function (item) { + return !deepEqual(pluginStatus[item.pluginKey], _this.pluginStatus[item.pluginKey]); + }); + + if (!notUpdateStatus) { + this.pluginStatus = clone(pluginStatus); + } + + return isUpdate; + }; + + _proto.getVisiblePluginList = function getVisiblePluginList(pluginType) { + var _this2 = this; + + var res = this.config.filter(function (item) { + return !!(!_this2.pluginStatus[item.pluginKey] || _this2.pluginStatus[item.pluginKey].visible); + }); + return pluginType ? res.filter(function (item) { + return item.type === pluginType; + }) : res; + }; + + _proto.getPlugin = function getPlugin(pluginKey) { + if (pluginKey) { + return this.editor && this.editor.plugins && this.editor.plugins[pluginKey]; + } + }; + + _proto.getPluginConfig = function getPluginConfig(pluginKey) { + if (pluginKey) { + return this.config.find(function (item) { + return item.pluginKey === pluginKey; + }); + } + + return this.config; + }; + + _proto.getPluginClass = function getPluginClass(pluginKey) { + if (pluginKey) { + return this.editor && this.editor.components && this.editor.components[pluginKey]; + } + }; + + _proto.getPluginStatus = function getPluginStatus(pluginKey) { + if (pluginKey) { + return this.editor && this.editor.pluginStatus && this.editor.pluginStatus[pluginKey]; + } + }; + + return AreaManager; +}(); + +export { AreaManager as default }; \ No newline at end of file diff --git a/packages/editor-framework/es/definitions.d.ts b/packages/editor-framework/es/definitions.d.ts new file mode 100644 index 000000000..7d4b7e740 --- /dev/null +++ b/packages/editor-framework/es/definitions.d.ts @@ -0,0 +1,130 @@ +import * as React from 'react'; +import Editor from './editor'; +export interface EditorConfig { + skeleton?: SkeletonConfig; + theme?: ThemeConfig; + plugins?: PluginsConfig; + hooks?: HooksConfig; + shortCuts?: ShortCutsConfig; + utils?: UtilsConfig; + constants?: ConstantsConfig; + lifeCycles?: LifeCyclesConfig; + i18n?: I18nConfig; +} +export interface NpmConfig { + version: string; + package: string; + main?: string; + exportName?: string; + subName?: string; + destructuring?: boolean; +} +export interface SkeletonConfig { + config: NpmConfig; + props?: object; + handler?: (config: EditorConfig) => EditorConfig; +} +export interface FusionTheme { + package: string; + version: string; +} +export interface ThemeConfig { + fusion?: FusionTheme; +} +export interface PluginsConfig { + [key: string]: PluginConfig[]; +} +export interface PluginConfig { + pluginKey: string; + type: string; + props: { + icon?: string; + title?: string; + width?: number; + height?: number; + visible?: boolean; + disabled?: boolean; + marked?: boolean; + align?: 'left' | 'right' | 'top' | 'bottom'; + onClick?: () => void; + dialogProps?: object; + balloonProps?: object; + panelProps?: object; + linkProps?: object; + }; + config?: NpmConfig; + pluginProps?: object; +} +export declare type HooksConfig = HookConfig[]; +export interface HookConfig { + message: string; + type: 'on' | 'once'; + handler: (editor: Editor, ...args: []) => void; +} +export declare type ShortCutsConfig = ShortCutConfig[]; +export interface ShortCutConfig { + keyboard: string; + handler: (editor: Editor, ev: Event, keymaster: any) => void; +} +export declare type UtilsConfig = UtilConfig[]; +export interface UtilConfig { + name: string; + type: 'npm' | 'function'; + content: NpmConfig | ((...args: []) => any); +} +export declare type ConstantsConfig = object; +export interface LifeCyclesConfig { + init?: (editor: Editor) => any; + destroy?: (editor: Editor) => any; +} +export declare type LocaleType = 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP'; +export interface I18nMessages { + [key: string]: string; +} +export interface I18nConfig { + 'zh-CN'?: I18nMessages; + 'zh-TW'?: I18nMessages; + 'en-US'?: I18nMessages; + 'ja-JP'?: I18nMessages; +} +export declare type I18nFunction = (key: string, params: any) => string; +export interface Utils { + [key: string]: (...args: []) => any; +} +export interface PluginProps { + editor: Editor; + config: PluginConfig; + i18n?: I18nFunction; + ref?: React.RefObject; + [key: string]: any; +} +export declare type Plugin = React.ReactNode & { + open?: () => boolean | void | Promise; + close?: () => boolean | void | Promise; +}; +export declare type HOCPlugin = React.ReactNode & { + open: () => Promise; + close: () => Promise; +}; +export interface PluginSet { + [key: string]: HOCPlugin; +} +export declare type PluginClass = React.ComponentType & { + init?: (editor: Editor) => void; + defaultProps?: { + locale?: LocaleType; + messages?: I18nMessages; + }; +}; +export interface PluginClassSet { + [key: string]: PluginClass; +} +export interface PluginStatus { + disabled?: boolean; + visible?: boolean; + marked?: boolean; + locked?: boolean; +} +export interface PluginStatusSet { + [key: string]: PluginStatus; +} diff --git a/packages/editor-skeleton/es/components/LeftIcon/index.js b/packages/editor-framework/es/definitions.js similarity index 100% rename from packages/editor-skeleton/es/components/LeftIcon/index.js rename to packages/editor-framework/es/definitions.js diff --git a/packages/editor-framework/es/editor.d.ts b/packages/editor-framework/es/editor.d.ts new file mode 100644 index 000000000..3db69aa66 --- /dev/null +++ b/packages/editor-framework/es/editor.d.ts @@ -0,0 +1,33 @@ +/// +import { EventEmitter } from 'events'; +import { EditorConfig, LocaleType, PluginStatusSet, Utils, PluginClassSet, PluginSet } from './definitions'; +declare global { + interface Window { + __isDebug?: boolean; + __newFunc?: (funcStr: string) => (...args: any[]) => any; + } +} +export interface HooksFuncs { + [idx: number]: (msg: string, handler: (...args: any[]) => void) => void; +} +export default class Editor extends EventEmitter { + static getInstance: (config: EditorConfig, components: PluginClassSet, utils?: Utils) => Editor; + config: EditorConfig; + components: PluginClassSet; + utils: Utils; + pluginStatus: PluginStatusSet; + plugins: PluginSet; + locale: LocaleType; + private hooksFuncs; + constructor(config: EditorConfig, components: PluginClassSet, utils?: Utils); + init(): Promise; + destroy(): void; + get(key: string): any; + set(key: string | object, val: any): void; + batchOn(events: string[], lisenter: (...args: any[]) => void): void; + batchOnce(events: string[], lisenter: (...args: any[]) => void): void; + batchOff(events: string[], lisenter: (...args: any[]) => void): void; + private destroyHooks; + private initHooks; + private initPluginStatus; +} diff --git a/packages/editor-framework/es/editor.js b/packages/editor-framework/es/editor.js new file mode 100644 index 000000000..4ec0549bc --- /dev/null +++ b/packages/editor-framework/es/editor.js @@ -0,0 +1,283 @@ +import _extends from "@babel/runtime/helpers/extends"; +import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; +import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn"; +import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; +import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +import Debug from 'debug'; +import { EventEmitter } from 'events'; +import store from 'store'; +import * as editorUtils from './utils'; +var registShortCuts = editorUtils.registShortCuts, + transformToPromise = editorUtils.transformToPromise, + unRegistShortCuts = editorUtils.unRegistShortCuts; +// 根据url参数设置debug选项 +var debugRegRes = /_?debug=(.*?)(&|$)/.exec(location.search); + +if (debugRegRes && debugRegRes[1]) { + // eslint-disable-next-line no-underscore-dangle + window.__isDebug = true; + store.storage.write('debug', debugRegRes[1] === 'true' ? '*' : debugRegRes[1]); +} else { + // eslint-disable-next-line no-underscore-dangle + window.__isDebug = false; + store.remove('debug'); +} // 重要,用于矫正画布执行new Function的window对象上下文 +// eslint-disable-next-line no-underscore-dangle + + +window.__newFunc = function (funContext) { + // eslint-disable-next-line no-new-func + return new Function(funContext); +}; // 关闭浏览器前提醒,只有产生过交互才会生效 + + +window.onbeforeunload = function (e) { + var ev = e || window.event; // 本地调试不生效 + + if (location.href.indexOf('localhost') > 0) { + return; + } + + var msg = '您确定要离开此页面吗?'; + ev.cancelBubble = true; + ev.returnValue = true; + + if (e.stopPropagation) { + e.stopPropagation(); + e.preventDefault(); + } + + return msg; +}; + +var instance; +var debug = Debug('editor'); +EventEmitter.defaultMaxListeners = 100; + +var Editor = /*#__PURE__*/function (_EventEmitter) { + _inheritsLoose(Editor, _EventEmitter); + + var _super = _createSuper(Editor); + + function Editor(config, components, utils) { + var _this; + + _this = _EventEmitter.call(this) || this; + _this.config = void 0; + _this.components = void 0; + _this.utils = void 0; + _this.pluginStatus = void 0; + _this.plugins = void 0; + _this.locale = void 0; + _this.hooksFuncs = void 0; + _this.config = config; + _this.components = components; + _this.utils = _extends({}, editorUtils, {}, utils); + instance = _assertThisInitialized(_this); + + _this.init(); + + return _this; + } + + var _proto = Editor.prototype; + + _proto.init = function init() { + var _this2 = this; + + var _ref = this.config || {}, + hooks = _ref.hooks, + _ref$shortCuts = _ref.shortCuts, + shortCuts = _ref$shortCuts === void 0 ? [] : _ref$shortCuts, + lifeCycles = _ref.lifeCycles; + + this.locale = store.get('lowcode-editor-locale') || 'zh-CN'; // this.messages = this.messagesSet[this.locale]; + // this.i18n = generateI18n(this.locale, this.messages); + + this.pluginStatus = this.initPluginStatus(); + this.initHooks(hooks || []); + this.emit('editor.beforeInit'); + + var init = lifeCycles && lifeCycles.init || function () {}; // 用户可以通过设置extensions.init自定义初始化流程; + + + return transformToPromise(init(this)).then(function () { + // 注册快捷键 + registShortCuts(shortCuts, _this2); + + _this2.emit('editor.afterInit'); + + return true; + })["catch"](function (err) { + console.error(err); + }); + }; + + _proto.destroy = function destroy() { + debug('destroy'); + + try { + var _this$config = this.config, + _this$config$hooks = _this$config.hooks, + hooks = _this$config$hooks === void 0 ? [] : _this$config$hooks, + _this$config$shortCut = _this$config.shortCuts, + shortCuts = _this$config$shortCut === void 0 ? [] : _this$config$shortCut, + _this$config$lifeCycl = _this$config.lifeCycles, + lifeCycles = _this$config$lifeCycl === void 0 ? {} : _this$config$lifeCycl; + unRegistShortCuts(shortCuts); + this.destroyHooks(hooks); + + if (lifeCycles.destroy) { + lifeCycles.destroy(this); + } + } catch (err) { + console.warn(err); + } + }; + + _proto.get = function get(key) { + return this[key]; + }; + + _proto.set = function set(key, val) { + var _this3 = this; + + if (typeof key === 'string') { + if (['init', 'destroy', 'get', 'set', 'batchOn', 'batchOff', 'batchOnce'].includes(key)) { + console.error('init, destroy, get, set, batchOn, batchOff, batchOnce is private attribute'); + return; + } + + this[key] = val; + } else if (typeof key === 'object') { + Object.keys(key).forEach(function (item) { + _this3[item] = key[item]; + }); + } + }; + + _proto.batchOn = function batchOn(events, lisenter) { + var _this4 = this; + + if (!Array.isArray(events)) { + return; + } + + events.forEach(function (event) { + _this4.on(event, lisenter); + }); + }; + + _proto.batchOnce = function batchOnce(events, lisenter) { + var _this5 = this; + + if (!Array.isArray(events)) { + return; + } + + events.forEach(function (event) { + _this5.once(event, lisenter); + }); + }; + + _proto.batchOff = function batchOff(events, lisenter) { + var _this6 = this; + + if (!Array.isArray(events)) { + return; + } + + events.forEach(function (event) { + _this6.off(event, lisenter); + }); + } // 销毁hooks中的消息监听 + ; + + _proto.destroyHooks = function destroyHooks(hooks) { + var _this7 = this; + + if (hooks === void 0) { + hooks = []; + } + + hooks.forEach(function (item, idx) { + if (typeof _this7.hooksFuncs[idx] === 'function') { + _this7.off(item.message, _this7.hooksFuncs[idx]); + } + }); + delete this.hooksFuncs; + } // 初始化hooks中的消息监听 + ; + + _proto.initHooks = function initHooks(hooks) { + var _this8 = this; + + if (hooks === void 0) { + hooks = []; + } + + this.hooksFuncs = hooks.map(function (item) { + var func = function func() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + item.handler.apply(item, [_this8].concat(args)); + }; + + _this8[item.type](item.message, func); + + return func; + }); + }; + + _proto.initPluginStatus = function initPluginStatus() { + var _this9 = this; + + var _this$config$plugins = this.config.plugins, + plugins = _this$config$plugins === void 0 ? {} : _this$config$plugins; + var pluginAreas = Object.keys(plugins); + var res = {}; + pluginAreas.forEach(function (area) { + (plugins[area] || []).forEach(function (plugin) { + if (plugin.type === 'Divider') { + return; + } + + var _ref2 = plugin.props || {}, + visible = _ref2.visible, + disabled = _ref2.disabled, + marked = _ref2.marked; + + res[plugin.pluginKey] = { + visible: typeof visible === 'boolean' ? visible : true, + disabled: typeof disabled === 'boolean' ? disabled : false, + marked: typeof marked === 'boolean' ? marked : false + }; + var pluginClass = _this9.components[plugin.pluginKey]; // 判断如果编辑器插件有init静态方法,则在此执行init方法 + + if (pluginClass && pluginClass.init) { + pluginClass.init(_this9); + } + }); + }); + return res; + }; + + return Editor; +}(EventEmitter); + +Editor.getInstance = function (config, components, utils) { + if (!instance) { + instance = new Editor(config, components, utils); + } + + return instance; +}; + +export { Editor as default }; \ No newline at end of file diff --git a/packages/editor-framework/es/index.d.ts b/packages/editor-framework/es/index.d.ts new file mode 100644 index 000000000..31cf0e019 --- /dev/null +++ b/packages/editor-framework/es/index.d.ts @@ -0,0 +1,8 @@ +import Editor from './editor'; +import * as utils from './utils'; +import * as definitions from './definitions'; +export { default as PluginFactory } from './pluginFactory'; +export { default as EditorContext } from './context'; +export { default as AreaManager } from './areaManager'; +export default Editor; +export { utils, definitions }; diff --git a/packages/editor-framework/es/index.js b/packages/editor-framework/es/index.js new file mode 100644 index 000000000..2ca7bbbe6 --- /dev/null +++ b/packages/editor-framework/es/index.js @@ -0,0 +1,8 @@ +import Editor from './editor'; +import * as utils from './utils'; +import * as definitions from './definitions'; +export { default as PluginFactory } from './pluginFactory'; +export { default as EditorContext } from './context'; +export { default as AreaManager } from './areaManager'; +export default Editor; +export { utils, definitions }; \ No newline at end of file diff --git a/packages/editor-framework/es/pluginFactory.d.ts b/packages/editor-framework/es/pluginFactory.d.ts new file mode 100644 index 000000000..26f6c3116 --- /dev/null +++ b/packages/editor-framework/es/pluginFactory.d.ts @@ -0,0 +1,3 @@ +import React from 'react'; +import { PluginProps, PluginClass } from './definitions'; +export default function pluginFactory(Comp: PluginClass): React.ComponentType; diff --git a/packages/editor-framework/es/pluginFactory.js b/packages/editor-framework/es/pluginFactory.js new file mode 100644 index 000000000..46937ed10 --- /dev/null +++ b/packages/editor-framework/es/pluginFactory.js @@ -0,0 +1,98 @@ +import _extends from "@babel/runtime/helpers/extends"; +import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; +import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn"; +import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; +import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +import React, { createRef, PureComponent } from 'react'; +import EditorContext from './context'; +import { acceptsRef, generateI18n, isEmpty, transformToPromise } from './utils'; +export default function pluginFactory(Comp) { + var LowcodePlugin = /*#__PURE__*/function (_PureComponent) { + _inheritsLoose(LowcodePlugin, _PureComponent); + + var _super = _createSuper(LowcodePlugin); + + function LowcodePlugin(props, context) { + var _extends2; + + var _this; + + _this = _PureComponent.call(this, props, context) || this; + _this.ref = void 0; + _this.editor = void 0; + _this.pluginKey = void 0; + _this.i18n = void 0; + + _this.open = function () { + if (_this.ref && _this.ref.open && typeof _this.ref.open === 'function') { + return transformToPromise(_this.ref.open()); + } + + return Promise.resolve(); + }; + + _this.close = function () { + if (_this.ref && _this.ref.close && typeof _this.ref.close === 'function') { + return transformToPromise(_this.ref.close()); + } + + return Promise.resolve(); + }; + + if (isEmpty(props.config) || !props.config.pluginKey) { + console.warn('lowcode editor plugin has wrong config'); + return _assertThisInitialized(_this); + } + + var editor = props.editor; + _this.ref = createRef(); // 注册插件 + + _this.editor = editor; + _this.pluginKey = props.config.pluginKey; + var defaultProps = Comp.defaultProps || {}; + var locale = _this.editor.get('locale') || defaultProps.locale || 'zh-CN'; + var editorMessages = _this.editor.get('messages') || {}; + var messages = editorMessages[_this.pluginKey] || defaultProps.messages || {}; + _this.i18n = generateI18n(locale, messages); + editor.set('plugins', _extends({}, editor.plugins, (_extends2 = {}, _extends2[_this.pluginKey] = _assertThisInitialized(_this), _extends2))); + return _this; + } + + var _proto = LowcodePlugin.prototype; + + _proto.componentWillUnmount = function componentWillUnmount() { + // 销毁插件 + if (this.pluginKey && this.editor && this.editor.plugins) { + delete this.editor.plugins[this.pluginKey]; + } + }; + + _proto.render = function render() { + var config = this.props.config; + + var props = _extends({ + i18n: this.i18n, + editor: this.editor, + config: config + }, config.pluginProps); + + if (acceptsRef(Comp)) { + props.ref = this.ref; + } + + return /*#__PURE__*/React.createElement(Comp, props); + }; + + return LowcodePlugin; + }(PureComponent); + + LowcodePlugin.displayName = 'LowcodeEditorPlugin'; + LowcodePlugin.contextType = EditorContext; + LowcodePlugin.init = Comp.init; + return LowcodePlugin; +} \ No newline at end of file diff --git a/packages/editor-framework/es/style.js b/packages/editor-framework/es/style.js new file mode 100644 index 000000000..f90814d63 --- /dev/null +++ b/packages/editor-framework/es/style.js @@ -0,0 +1 @@ +//empty file \ No newline at end of file diff --git a/packages/editor-framework/es/utils.d.ts b/packages/editor-framework/es/utils.d.ts new file mode 100644 index 000000000..c1d4ff1e8 --- /dev/null +++ b/packages/editor-framework/es/utils.d.ts @@ -0,0 +1,71 @@ +/// +import Editor from './editor'; +import { EditorConfig, I18nFunction, I18nMessages, LocaleType, ShortCutsConfig } from './definitions'; +export declare const pick: any; +export declare const deepEqual: any; +export declare const clone: any; +export declare const isEmpty: any; +export declare const throttle: any; +export declare const debounce: any; +export declare const serialize: any; +declare global { + interface Window { + sendIDEMessage?: (params: IDEMessageParams) => void; + goldlog?: { + record: (logKey: string, gmKey: string, goKey: string, method: 'POST' | 'GET') => (...args: any[]) => any; + }; + is_theia?: boolean; + vscode?: boolean; + } +} +export interface IDEMessageParams { + action: string; + data: { + logKey: string; + gmKey: string; + goKey: string; + }; +} +export declare function generateI18n(locale?: LocaleType, messages?: I18nMessages): I18nFunction; +/** + * 序列化参数 + */ +export declare function serializeParams(obj: object): string; +/** + * 黄金令箭埋点 + * @param {String} gmKey 为黄金令箭业务类型 + * @param {Object} params 参数 + * @param {String} logKey 属性串 + */ +export declare function goldlog(gmKey: string, params?: object, logKey?: string): void; +/** + * 获取当前编辑器环境 + */ +export declare function getEnv(): string; +export declare function registShortCuts(config: ShortCutsConfig, editor: Editor): void; +export declare function unRegistShortCuts(config: ShortCutsConfig): void; +/** + * 将函数返回结果转成promise形式,如果函数有返回值则根据返回值的bool类型判断是reject还是resolve,若函数无返回值默认执行resolve + */ +export declare function transformToPromise(input: any): Promise<{}>; +/** + * 将数组类型转换为Map类型 + */ +interface MapOf { + [propName: string]: T; +} +export declare function transformArrayToMap(arr: T[], key: string, overwrite?: boolean): MapOf; +/** + * 解析url的查询参数 + */ +interface Query { + [propName: string]: string; +} +export declare function parseSearch(search: string): Query; +export declare function comboEditorConfig(defaultConfig: EditorConfig, customConfig: EditorConfig): EditorConfig; +/** + * 判断当前组件是否能够设置ref + * @param {*} Comp 需要判断的组件 + */ +export declare function acceptsRef(Comp: React.ReactNode): boolean; +export {}; diff --git a/packages/editor-framework/es/utils.js b/packages/editor-framework/es/utils.js new file mode 100644 index 000000000..b2a677d4c --- /dev/null +++ b/packages/editor-framework/es/utils.js @@ -0,0 +1,270 @@ +import _extends from "@babel/runtime/helpers/extends"; +import IntlMessageFormat from 'intl-messageformat'; +import keymaster from 'keymaster'; +import _clone from 'lodash/cloneDeep'; +import _debounce from 'lodash/debounce'; +import _isEmpty from 'lodash/isEmpty'; +import _deepEqual from 'lodash/isEqualWith'; +import _pick from 'lodash/pick'; +import _throttle from 'lodash/throttle'; +import _serialize from 'serialize-javascript'; +export var pick = _pick; +export var deepEqual = _deepEqual; +export var clone = _clone; +export var isEmpty = _isEmpty; +export var throttle = _throttle; +export var debounce = _debounce; +export var serialize = _serialize; +var ENV = { + TBE: 'TBE', + WEBIDE: 'WEB-IDE', + VSCODE: 'VSCODE', + WEB: 'WEB' +}; + +/* + * 用于构造国际化字符串处理函数 + */ +export function generateI18n(locale, messages) { + if (locale === void 0) { + locale = 'zh-CN'; + } + + if (messages === void 0) { + messages = {}; + } + + return function (key, values) { + if (!messages || !messages[key]) { + return ''; + } + + var formater = new IntlMessageFormat(messages[key], locale); + return formater.format(values); + }; +} +/** + * 序列化参数 + */ + +export function serializeParams(obj) { + if (typeof obj !== 'object') { + return ''; + } + + var res = []; + Object.entries(obj).forEach(function (_ref) { + var key = _ref[0], + val = _ref[1]; + + if (val === null || val === undefined || val === '') { + return; + } + + if (typeof val === 'object') { + res.push(encodeURIComponent(key) + "=" + encodeURIComponent(JSON.stringify(val))); + } else { + res.push(encodeURIComponent(key) + "=" + encodeURIComponent(val)); + } + }); + return res.join('&'); +} +/** + * 黄金令箭埋点 + * @param {String} gmKey 为黄金令箭业务类型 + * @param {Object} params 参数 + * @param {String} logKey 属性串 + */ + +export function goldlog(gmKey, params, logKey) { + if (params === void 0) { + params = {}; + } + + if (logKey === void 0) { + logKey = 'other'; + } + + var sendIDEMessage = window.sendIDEMessage || window.parent.sendIDEMessage; + var goKey = serializeParams(_extends({ + env: getEnv() + }, params)); + + if (sendIDEMessage) { + sendIDEMessage({ + action: 'goldlog', + data: { + logKey: "/iceluna.core." + logKey, + gmKey: gmKey, + goKey: goKey + } + }); + } + + if (window.goldlog) { + window.goldlog.record("/iceluna.core." + logKey, gmKey, goKey, 'POST'); + } +} +/** + * 获取当前编辑器环境 + */ + +export function getEnv() { + var userAgent = navigator.userAgent; + var isVscode = /Electron\//.test(userAgent); + + if (isVscode) { + return ENV.VSCODE; + } + + var isTheia = window.is_theia === true; + + if (isTheia) { + return ENV.WEBIDE; + } + + return ENV.WEB; +} // 注册快捷键 + +export function registShortCuts(config, editor) { + (config || []).forEach(function (item) { + keymaster(item.keyboard, function (ev) { + ev.preventDefault(); + item.handler(editor, ev, keymaster); + }); + }); +} // 取消注册快捷 + +export function unRegistShortCuts(config) { + (config || []).forEach(function (item) { + keymaster.unbind(item.keyboard); + }); + + if (window.parent.vscode) { + keymaster.unbind('command+c'); + keymaster.unbind('command+v'); + } +} +/** + * 将函数返回结果转成promise形式,如果函数有返回值则根据返回值的bool类型判断是reject还是resolve,若函数无返回值默认执行resolve + */ + +export function transformToPromise(input) { + if (input instanceof Promise) { + return input; + } + + return new Promise(function (resolve, reject) { + if (input || input === undefined) { + resolve(); + } else { + reject(); + } + }); +} +/** + * 将数组类型转换为Map类型 + */ + +export function transformArrayToMap(arr, key, overwrite) { + if (overwrite === void 0) { + overwrite = true; + } + + if (isEmpty(arr) || !Array.isArray(arr)) { + return {}; + } + + var res = {}; + arr.forEach(function (item) { + var curKey = item[key]; + + if (item[key] === undefined) { + return; + } + + if (res[curKey] && !overwrite) { + return; + } + + res[curKey] = item; + }); + return res; +} +/** + * 解析url的查询参数 + */ + +export function parseSearch(search) { + if (!search || typeof search !== 'string') { + return {}; + } + + var str = search.replace(/^\?/, ''); + var paramStr = str.split('&'); + var res = {}; + paramStr.forEach(function (item) { + var regRes = item.split('='); + + if (regRes[0] && regRes[1]) { + res[regRes[0]] = decodeURIComponent(regRes[1]); + } + }); + return res; +} +export function comboEditorConfig(defaultConfig, customConfig) { + if (defaultConfig === void 0) { + defaultConfig = {}; + } + + var _ref2 = customConfig || {}, + skeleton = _ref2.skeleton, + theme = _ref2.theme, + plugins = _ref2.plugins, + hooks = _ref2.hooks, + shortCuts = _ref2.shortCuts, + lifeCycles = _ref2.lifeCycles, + constants = _ref2.constants, + utils = _ref2.utils, + i18n = _ref2.i18n; + + if (skeleton && skeleton.handler && typeof skeleton.handler === 'function') { + return skeleton.handler(_extends({ + skeleton: skeleton + }, defaultConfig)); + } + + var defaultShortCuts = transformArrayToMap(defaultConfig.shortCuts || [], 'keyboard'); + var customShortCuts = transformArrayToMap(shortCuts || [], 'keyboard'); + var localeList = ['zh-CN', 'zh-TW', 'en-US', 'ja-JP']; + var i18nConfig = {}; + localeList.forEach(function (key) { + i18nConfig[key] = _extends({}, defaultConfig.i18n && defaultConfig.i18n[key], {}, i18n && i18n[key]); + }); + return { + skeleton: skeleton, + theme: _extends({}, defaultConfig.theme, {}, theme), + plugins: _extends({}, defaultConfig.plugins, {}, plugins), + hooks: [].concat(defaultConfig.hooks || [], hooks || []), + shortCuts: Object.values(_extends({}, defaultShortCuts, {}, customShortCuts)), + lifeCycles: _extends({}, defaultConfig.lifeCycles, {}, lifeCycles), + constants: _extends({}, defaultConfig.constants, {}, constants), + utils: [].concat(defaultConfig.utils || [], utils || []), + i18n: i18nConfig + }; +} +/** + * 判断当前组件是否能够设置ref + * @param {*} Comp 需要判断的组件 + */ + +export function acceptsRef(Comp) { + var hasSymbol = typeof Symbol === 'function' && Symbol["for"]; + var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol["for"]('react.forward_ref') : 0xead0; + + if (!Comp || typeof Comp !== 'object' || isEmpty(Comp)) { + return false; + } + + return Comp.$$typeof && Comp.$$typeof === REACT_FORWARD_REF_TYPE || Comp.prototype && Comp.prototype.isReactComponent; +} \ No newline at end of file diff --git a/packages/editor-framework/package.json b/packages/editor-framework/package.json index 3d1465113..f7cecc059 100644 --- a/packages/editor-framework/package.json +++ b/packages/editor-framework/package.json @@ -1,5 +1,5 @@ { - "name": "@ali/lowcode-engine-editor", + "name": "@ali/lowcode-editor-framework", "version": "0.0.1", "description": "alibaba lowcode editor core", "files": [ @@ -13,7 +13,7 @@ "stylePath": "style.js", "scripts": { "start": "build-scripts start", - "build": "build-scripts build", + "build": "build-scripts build --skip-demo", "prepublishOnly": "npm run prettier && npm run build", "lint": "eslint --cache --ext .js,.jsx ./", "prettier": "prettier --write \"./src/**/*.{ts,tsx,js,jsx,ejs,less,css,scss,json}\" " @@ -51,5 +51,5 @@ "@alifd/next": "1.x" }, "license": "MIT", - "homepage": "https://unpkg.com/editor-framework@0.0.1/build/index.html" + "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-editor-framework@0.0.1/build/index.html" } diff --git a/packages/editor/src/framework/areaManager.ts b/packages/editor-framework/src/areaManager.ts similarity index 52% rename from packages/editor/src/framework/areaManager.ts rename to packages/editor-framework/src/areaManager.ts index 28f24eb0e..f6ce5e782 100644 --- a/packages/editor/src/framework/areaManager.ts +++ b/packages/editor-framework/src/areaManager.ts @@ -1,4 +1,4 @@ -import { PluginConfig, PluginStatus } from './definitions'; +import { PluginConfig, PluginStatus, PluginClass, HOCPlugin } from './definitions'; import Editor from './index'; import { clone, deepEqual } from './utils'; @@ -18,14 +18,16 @@ export default class AreaManager { this.pluginStatus = clone(editor.pluginStatus); } - public isPluginStatusUpdate(pluginType?: string): boolean { + public isPluginStatusUpdate(pluginType?: string, notUpdateStatus?: boolean): boolean { const { pluginStatus } = this.editor; const list = pluginType ? this.config.filter((item): boolean => item.type === pluginType) : this.config; const isUpdate = list.some( - (item): boolean => !deepEqual(pluginStatus[item.pluginKey], this.pluginStatus[item.pluginKey]) + (item): boolean => !deepEqual(pluginStatus[item.pluginKey], this.pluginStatus[item.pluginKey]), ); - this.pluginStatus = clone(pluginStatus); + if (!notUpdateStatus) { + this.pluginStatus = clone(pluginStatus); + } return isUpdate; } @@ -36,7 +38,28 @@ export default class AreaManager { return pluginType ? res.filter((item): boolean => item.type === pluginType) : res; } - public getPluginConfig(): PluginConfig[] { + public getPlugin(pluginKey: string): HOCPlugin | void { + if (pluginKey) { + return this.editor && this.editor.plugins && this.editor.plugins[pluginKey]; + } + } + + public getPluginConfig(pluginKey?: string): PluginConfig[] | PluginConfig | undefined { + if (pluginKey) { + return this.config.find(item => item.pluginKey === pluginKey); + } return this.config; } + + public getPluginClass(pluginKey: string): PluginClass | void { + if (pluginKey) { + return this.editor && this.editor.components && this.editor.components[pluginKey]; + } + } + + public getPluginStatus(pluginKey: string): PluginStatus | void { + if (pluginKey) { + return this.editor && this.editor.pluginStatus && this.editor.pluginStatus[pluginKey]; + } + } } diff --git a/packages/editor-framework/src/context.ts b/packages/editor-framework/src/context.ts index 78d3ce177..859b79dc4 100644 --- a/packages/editor-framework/src/context.ts +++ b/packages/editor-framework/src/context.ts @@ -1,3 +1,4 @@ import { createContext } from 'react'; + const context = createContext({}); export default context; diff --git a/packages/editor-framework/src/definitions.ts b/packages/editor-framework/src/definitions.ts index 87dd5dca2..f9db0bd01 100644 --- a/packages/editor-framework/src/definitions.ts +++ b/packages/editor-framework/src/definitions.ts @@ -1,48 +1,158 @@ +import * as React from 'react'; +import Editor from './editor'; export interface EditorConfig { - -}; + skeleton?: SkeletonConfig; + theme?: ThemeConfig; + plugins?: PluginsConfig; + hooks?: HooksConfig; + shortCuts?: ShortCutsConfig; + utils?: UtilsConfig; + constants?: ConstantsConfig; + lifeCycles?: LifeCyclesConfig; + i18n?: I18nConfig; +} export interface NpmConfig { - version: string, - package: string, - main?: string, - exportName?: string, - subName?: string, - destructuring?: boolean -}; + version: string; + package: string; + main?: string; + exportName?: string; + subName?: string; + destructuring?: boolean; +} export interface SkeletonConfig { - config: NpmConfig, - props?: object, - handler?: (EditorConfig) => EditorConfig -}; + config: NpmConfig; + props?: object; + handler?: (config: EditorConfig) => EditorConfig; +} export interface FusionTheme { - package: string, - version: string -}; + package: string; + version: string; +} export interface ThemeConfig { - fusion?: FusionTheme + fusion?: FusionTheme; } export interface PluginsConfig { - [key]: Array -}; + [key: string]: PluginConfig[]; +} export interface PluginConfig { - pluginKey: string, - type: string, - props: object, - config: NpmConfig, - pluginProps: object -}; + pluginKey: string; + type: string; + props: { + icon?: string; + title?: string; + width?: number; + height?: number; + visible?: boolean; + disabled?: boolean; + marked?: boolean; + align?: 'left' | 'right' | 'top' | 'bottom'; + onClick?: () => void; + dialogProps?: object; + balloonProps?: object; + panelProps?: object; + linkProps?: object; + }; + config?: NpmConfig; + pluginProps?: object; +} -export type HooksConfig = Array; +export type HooksConfig = HookConfig[]; export interface HookConfig { + message: string; + type: 'on' | 'once'; + handler: (editor: Editor, ...args: []) => void; +} +export type ShortCutsConfig = ShortCutConfig[]; + +export interface ShortCutConfig { + keyboard: string; + handler: (editor: Editor, ev: Event, keymaster: any) => void; +} + +export type UtilsConfig = UtilConfig[]; + +export interface UtilConfig { + name: string; + type: 'npm' | 'function'; + content: NpmConfig | ((...args: []) => any); +} + +export type ConstantsConfig = object; + +export interface LifeCyclesConfig { + init?: (editor: Editor) => any; + destroy?: (editor: Editor) => any; +} + +export type LocaleType = 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP'; + +export interface I18nMessages { + [key: string]: string; +} + +export interface I18nConfig { + 'zh-CN'?: I18nMessages; + 'zh-TW'?: I18nMessages; + 'en-US'?: I18nMessages; + 'ja-JP'?: I18nMessages; +} + +export type I18nFunction = (key: string, params: any) => string; + +export interface Utils { + [key: string]: (...args: []) => any; +} + +export interface PluginProps { + editor: Editor; + config: PluginConfig; + i18n?: I18nFunction; + ref?: React.RefObject; + [key: string]: any; +} + +export type Plugin = React.ReactNode & { + open?: () => boolean | void | Promise; + close?: () => boolean | void | Promise; }; +export type HOCPlugin = React.ReactNode & { + open: () => Promise; + close: () => Promise; +}; +export interface PluginSet { + [key: string]: HOCPlugin; +} + +export type PluginClass = React.ComponentType & { + init?: (editor: Editor) => void; + defaultProps?: { + locale?: LocaleType; + messages?: I18nMessages; + }; +}; + +export interface PluginClassSet { + [key: string]: PluginClass; +} + +export interface PluginStatus { + disabled?: boolean; + visible?: boolean; + marked?: boolean; + locked?: boolean; +} + +export interface PluginStatusSet { + [key: string]: PluginStatus; +} diff --git a/packages/editor-framework/src/editor.ts b/packages/editor-framework/src/editor.ts index b3328df2d..8686fa34a 100644 --- a/packages/editor-framework/src/editor.ts +++ b/packages/editor-framework/src/editor.ts @@ -1,37 +1,56 @@ -import EventEmitter from 'events'; import Debug from 'debug'; +import { EventEmitter } from 'events'; import store from 'store'; - import { - unRegistShortCuts, - registShortCuts, - transformToPromise, - generateI18n -} from './utils'; + EditorConfig, + HooksConfig, + LocaleType, + PluginStatusSet, + Utils, + PluginClassSet, + PluginSet, +} from './definitions'; + +import * as editorUtils from './utils'; + +const { registShortCuts, transformToPromise, unRegistShortCuts } = editorUtils; + +declare global { + interface Window { + __isDebug?: boolean; + __newFunc?: (funcStr: string) => (...args: any[]) => any; + } +} // 根据url参数设置debug选项 -const res = /_?debug=(.*?)(&|$)/.exec(location.search); -if (res && res[1]) { +const debugRegRes = /_?debug=(.*?)(&|$)/.exec(location.search); +if (debugRegRes && debugRegRes[1]) { + // eslint-disable-next-line no-underscore-dangle window.__isDebug = true; - store.storage.write('debug', res[1] === 'true' ? '*' : res[1]); + store.storage.write('debug', debugRegRes[1] === 'true' ? '*' : debugRegRes[1]); } else { + // eslint-disable-next-line no-underscore-dangle window.__isDebug = false; store.remove('debug'); } -//重要,用于矫正画布执行new Function的window对象上下文 -window.__newFunc = funContext => { - return new Function(funContext); +// 重要,用于矫正画布执行new Function的window对象上下文 +// eslint-disable-next-line no-underscore-dangle +window.__newFunc = (funContext: string): ((...args: any[]) => any) => { + // eslint-disable-next-line no-new-func + return new Function(funContext) as (...args: any[]) => any; }; -//关闭浏览器前提醒,只有产生过交互才会生效 -window.onbeforeunload = function(e) { - e = e || window.event; +// 关闭浏览器前提醒,只有产生过交互才会生效 +window.onbeforeunload = function(e: Event): string | void { + const ev = e || window.event; // 本地调试不生效 - if (location.href.indexOf('localhost') > 0) return; - var msg = '您确定要离开此页面吗?'; - e.cancelBubble = true; - e.returnValue = msg; + if (location.href.indexOf('localhost') > 0) { + return; + } + const msg = '您确定要离开此页面吗?'; + ev.cancelBubble = true; + ev.returnValue = true; if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); @@ -39,142 +58,165 @@ window.onbeforeunload = function(e) { return msg; }; +let instance: Editor; -let instance = null; const debug = Debug('editor'); EventEmitter.defaultMaxListeners = 100; -export interface editor { - -}; +export interface HooksFuncs { + [idx: number]: (msg: string, handler: (...args) => void) => void; +} export default class Editor extends EventEmitter { - static getInstance = () => { + public static getInstance = (config: EditorConfig, components: PluginClassSet, utils?: Utils): Editor => { if (!instance) { - instance = new Editor(); + instance = new Editor(config, components, utils); } return instance; }; - constructor(config) { + public config: EditorConfig; + + public components: PluginClassSet; + + public utils: Utils; + + public pluginStatus: PluginStatusSet; + + public plugins: PluginSet; + + public locale: LocaleType; + + private hooksFuncs: HooksFuncs; + + constructor(config: EditorConfig, components: PluginClassSet, utils?: Utils) { super(); + this.config = config; + this.components = components; + this.utils = { ...editorUtils, ...utils }; instance = this; - Object.assign(this, config); this.init(); } - init() { - const { - hooks, - shortCuts, - lifeCycles - } = this.config || {}; - this.destroy(); + public init(): Promise { + const { hooks, shortCuts = [], lifeCycles } = this.config || {}; this.locale = store.get('lowcode-editor-locale') || 'zh-CN'; - this.messages = this.messagesSet[this.locale]; - this.i18n = generateI18n(this.locale, this.messages); + // this.messages = this.messagesSet[this.locale]; + // this.i18n = generateI18n(this.locale, this.messages); this.pluginStatus = this.initPluginStatus(); - this.initHooks(hooks, appHelper); + this.initHooks(hooks || []); - appHelper.emit('editor.beforeInit'); - const init = lifeCycles && lifeCycles.init || () => {}; + this.emit('editor.beforeInit'); + const init = (lifeCycles && lifeCycles.init) || ((): void => {}); // 用户可以通过设置extensions.init自定义初始化流程; - transformToPromise(init(this)) - .then(() => { + return transformToPromise(init(this)) + .then((): boolean => { // 注册快捷键 registShortCuts(shortCuts, this); this.emit('editor.afterInit'); + return true; }) - .catch(err => { - console.warn(err); + .catch((err): void => { + console.error(err); }); } - destroy() { + public destroy(): void { + debug('destroy'); try { - const { - hooks = [], - shortCuts = [], - lifeCycles = {} - } = this.config; - unRegistShortCuts(shortCuts); - this.destroyHooks(hooks); - lifeCycles.destroy && lifeCycles.destroy(); - } catch (err) { - console.warn(err); - return; + const { hooks = [], shortCuts = [], lifeCycles = {} } = this.config; + unRegistShortCuts(shortCuts); + this.destroyHooks(hooks); + if (lifeCycles.destroy) { + lifeCycles.destroy(this); } + } catch (err) { + console.warn(err); + } } - get(key:string):any { + public get(key: string): any { return this[key]; } - set(key:string|object, val:any):void { + public set(key: string | object, val: any): void { if (typeof key === 'string') { if (['init', 'destroy', 'get', 'set', 'batchOn', 'batchOff', 'batchOnce'].includes(key)) { - console.warning('init, destroy, get, set, batchOn, batchOff, batchOnce is private attribute'); + console.error('init, destroy, get, set, batchOn, batchOff, batchOnce is private attribute'); return; } this[key] = val; } else if (typeof key === 'object') { - Object.keys(key).forEach(item => { + Object.keys(key).forEach((item): void => { this[item] = key[item]; }); } } - batchOn(events:Array, lisenter:function):void { - if (!Array.isArray(events)) return; - events.forEach(event => this.on(event, lisenter)); + public batchOn(events: string[], lisenter: (...args) => void): void { + if (!Array.isArray(events)) { + return; + } + events.forEach((event): void => { + this.on(event, lisenter); + }); } - batchOnce(events:Array, lisenter:function):void { - if (!Array.isArray(events)) return; - events.forEach(event => this.once(event, lisenter)); + public batchOnce(events: string[], lisenter: (...args) => void): void { + if (!Array.isArray(events)) { + return; + } + events.forEach((event): void => { + this.once(event, lisenter); + }); } - batchOff(events:Array, lisenter:function):void { - if (!Array.isArray(events)) return; - events.forEach(event => this.off(event, lisenter)); + public batchOff(events: string[], lisenter: (...args) => void): void { + if (!Array.isArray(events)) { + return; + } + events.forEach((event): void => { + this.off(event, lisenter); + }); } - //销毁hooks中的消息监听 - private destroyHooks(hooks = []) { - hooks.forEach((item, idx) => { - if (typeof this.__hooksFuncs[idx] === 'function') { - this.appHelper.off(item.message, this.__hooksFuncs[idx]); + // 销毁hooks中的消息监听 + private destroyHooks(hooks: HooksConfig = []): void { + hooks.forEach((item, idx): void => { + if (typeof this.hooksFuncs[idx] === 'function') { + this.off(item.message, this.hooksFuncs[idx]); } }); - delete this.__hooksFuncs; - }; + delete this.hooksFuncs; + } - //初始化hooks中的消息监听 - private initHooks(hooks = []) { - this.__hooksFuncs = hooks.map(item => { - const func = (...args) => { + // 初始化hooks中的消息监听 + private initHooks(hooks: HooksConfig = []): void { + this.hooksFuncs = hooks.map((item): ((...arg) => void) => { + const func = (...args): void => { item.handler(this, ...args); }; this[item.type](item.message, func); return func; }); - }; + } - - private initPluginStatus () { - const {plugins = {}} = this.config; + private initPluginStatus(): PluginStatusSet { + const { plugins = {} } = this.config; const pluginAreas = Object.keys(plugins); - const res = {}; - pluginAreas.forEach(area => { - (plugins[area] || []).forEach(plugin => { - if (plugin.type === 'Divider') return; - const { visible, disabled, dotted } = plugin.props || {}; + const res: PluginStatusSet = {}; + pluginAreas.forEach((area): void => { + (plugins[area] || []).forEach((plugin): void => { + if (plugin.type === 'Divider') { + return; + } + const { visible, disabled, marked } = plugin.props || {}; res[plugin.pluginKey] = { visible: typeof visible === 'boolean' ? visible : true, disabled: typeof disabled === 'boolean' ? disabled : false, - dotted: typeof dotted === 'boolean' ? dotted : false + marked: typeof marked === 'boolean' ? marked : false, }; - const pluginClass = this.props.components[skeletonUtils.generateAddonCompName(addon.addonKey)]; + const pluginClass = this.components[plugin.pluginKey]; // 判断如果编辑器插件有init静态方法,则在此执行init方法 if (pluginClass && pluginClass.init) { pluginClass.init(this); @@ -182,5 +224,5 @@ export default class Editor extends EventEmitter { }); }); return res; - }; + } } diff --git a/packages/editor-framework/src/index.ts b/packages/editor-framework/src/index.ts index aac18d138..fba0e30c9 100644 --- a/packages/editor-framework/src/index.ts +++ b/packages/editor-framework/src/index.ts @@ -1,4 +1,12 @@ import Editor from './editor'; +import * as utils from './utils'; +import * as definitions from './definitions'; -export default Editor; \ No newline at end of file +export { default as PluginFactory } from './pluginFactory'; +export { default as EditorContext } from './context'; +export { default as AreaManager } from './areaManager'; + +export default Editor; + +export { utils, definitions }; diff --git a/packages/editor-framework/src/plugin.ts b/packages/editor-framework/src/plugin.ts deleted file mode 100644 index 33d81cc48..000000000 --- a/packages/editor-framework/src/plugin.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { PureComponent } from 'react'; - -import EditorContext from './context'; -import { isEmpty, generateI18n, goldlog } from './utils'; - -export interface pluginProps { - config: object, - editor: object, - locale: string, - messages: object -} - -export default function plugin(Comp) { - - class Plugin extends PureComponent { - static displayName = 'lowcode-editor-plugin'; - static defaultProps = { - config: {} - }; - static contextType = EditorContext; - constructor(props, context) { - super(props, context); - if (isEmpty(props.config) || !props.config.pluginKey) { - console.warn('lowcode editor plugin has wrong config'); - return; - } - - const { locale, messages, editor } = props; - // 注册插件 - this.editor = editor; - this.i18n = generateI18n(locale, messages); - this.pluginKey = props.config.pluginKey; - editor.plugins = editor.plugins || {}; - editor.plugins[this.pluginKey] = this; - } - - componentWillUnmount() { - // 销毁插件 - if (this.editor && this.editor.plugins) { - delete this.editor.plugins[this.pluginKey]; - } - } - - render() { - const { - config - } = this.props; - return - } - } - - return Plugin; -} - - - -export class Plugin extends PureComponent { - static displayName = 'lowcode-editor-plugin'; - static defaultProps = { - config: {} - }; - static contextType = EditorContext; - constructor(props, context) { - super(props, context); - if (isEmpty(props.config) || !props.config.addonKey) { - console.warn('luna addon has wrong config'); - return; - } - - - const { locale, messages, editor } = props; - // 注册插件 - this.editor = editor; - this.i18n = generateI18n(locale, messages); - this.pluginKey = props.config.pluginKey; - editor.plugins = editor.plugins || {}; - editor.plugins[this.pluginKey] = this; - } - - async componentWillUnmount() { - // 销毁插件 - if (this.editor && this.editor.plugins) { - delete this.editor.plugins[this.pluginKey]; - } - } - - open = () => { - return true; - }; - - close = () => { - return true; - }; - - goldlog = (goKey:string, params:any) => { - const { pluginKey, config = {} } = this.props.config || {}; - goldlog( - goKey, - { - pluginKey, - package: config.package, - version: config.version, - ...this.editor.logParams, - ...params - }, - 'addon' - ); - }; - - get utils() { - return this.editor.utils; - } - - get constants() { - return this.editor.constants; - } - - get history() { - return this.editor.history; - } - - get location() { - return this.editor.location; - } - - render() { - return null; - } -} diff --git a/packages/editor/src/framework/pluginFactory.tsx b/packages/editor-framework/src/pluginFactory.tsx similarity index 82% rename from packages/editor/src/framework/pluginFactory.tsx rename to packages/editor-framework/src/pluginFactory.tsx index f32edd9e9..2eff60e9e 100644 --- a/packages/editor/src/framework/pluginFactory.tsx +++ b/packages/editor-framework/src/pluginFactory.tsx @@ -27,21 +27,26 @@ export default function pluginFactory(Comp: PluginClass): React.ComponentType(); // 注册插件 this.editor = editor; - this.i18n = generateI18n(locale, messages); this.pluginKey = props.config.pluginKey; + const defaultProps = Comp.defaultProps || {}; + const locale = this.editor.get('locale') || defaultProps.locale || 'zh-CN'; + const editorMessages = this.editor.get('messages') || {}; + const messages = editorMessages[this.pluginKey] || defaultProps.messages || {}; + this.i18n = generateI18n(locale, messages); + editor.set('plugins', { ...editor.plugins, - [this.pluginKey]: this + [this.pluginKey]: this, }); } public componentWillUnmount(): void { // 销毁插件 - if (this.editor && this.editor.plugins) { + if (this.pluginKey && this.editor && this.editor.plugins) { delete this.editor.plugins[this.pluginKey]; } } @@ -66,7 +71,7 @@ export default function pluginFactory(Comp: PluginClass): React.ComponentType void; + goldlog?: { + record: (logKey: string, gmKey: string, goKey: string, method: 'POST' | 'GET') => (...args: any[]) => any; + }; + is_theia?: boolean; + vscode?: boolean; + } +} + +export interface IDEMessageParams { + action: string; + data: { + logKey: string; + gmKey: string; + goKey: string; + }; +} + +/* * 用于构造国际化字符串处理函数 - * @param {*} locale 国际化标识,例如 zh-CN、en-US - * @param {*} messages 国际化语言包 */ -export function generateI18n(locale = 'zh-CN', messages = {}) { - return (key, values = {}) => { - if (!messages || !messages[key]) return ''; +export function generateI18n(locale: LocaleType = 'zh-CN', messages: I18nMessages = {}): I18nFunction { + return (key: string, values): string => { + if (!messages || !messages[key]) { + return ''; + } const formater = new IntlMessageFormat(messages[key], locale); return formater.format(values); }; @@ -19,14 +63,16 @@ export function generateI18n(locale = 'zh-CN', messages = {}) { /** * 序列化参数 - * @param {*} obj 参数 */ -export function serializeParams(obj:object):string { - if (typeof obj !== 'object') return ''; - - const res:Array = []; - Object.entries(obj).forEach(([key, val]) => { - if (val === null || val === undefined || val === '') return; +export function serializeParams(obj: object): string { + if (typeof obj !== 'object') { + return ''; + } + const res: string[] = []; + Object.entries(obj).forEach(([key, val]): void => { + if (val === null || val === undefined || val === '') { + return; + } if (typeof val === 'object') { res.push(`${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(val))}`); } else { @@ -42,12 +88,11 @@ export function serializeParams(obj:object):string { * @param {Object} params 参数 * @param {String} logKey 属性串 */ -export function goldlog(gmKey, params = {}, logKey = 'other') { +export function goldlog(gmKey: string, params: object = {}, logKey: string = 'other'): void { const sendIDEMessage = window.sendIDEMessage || window.parent.sendIDEMessage; const goKey = serializeParams({ - sdkVersion: pkg.version, env: getEnv(), - ...params + ...params, }); if (sendIDEMessage) { sendIDEMessage({ @@ -55,155 +100,60 @@ export function goldlog(gmKey, params = {}, logKey = 'other') { data: { logKey: `/iceluna.core.${logKey}`, gmKey, - goKey - } + goKey, + }, }); } - window.goldlog && window.goldlog.record(`/iceluna.core.${logKey}`, gmKey, goKey, 'POST'); + if (window.goldlog) { + window.goldlog.record(`/iceluna.core.${logKey}`, gmKey, goKey, 'POST'); + } } /** * 获取当前编辑器环境 */ -export function getEnv() { +export function getEnv(): string { const userAgent = navigator.userAgent; const isVscode = /Electron\//.test(userAgent); - if (isVscode) return ENV.VSCODE; + if (isVscode) { + return ENV.VSCODE; + } const isTheia = window.is_theia === true; - if (isTheia) return ENV.WEBIDE; + if (isTheia) { + return ENV.WEBIDE; + } return ENV.WEB; } // 注册快捷键 -export function registShortCuts(config, editor) { - const keyboardFilter = (keymaster.filter = event => { - let eTarget = event.target || event.srcElement; - let tagName = eTarget.tagName; - let isInput = !!(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA'); - let isContenteditable = !!eTarget.getAttribute('contenteditable'); - if (isInput || isContenteditable) { - if (event.metaKey === true && [70, 83].includes(event.keyCode)) event.preventDefault(); //禁止触发chrome原生的页面保存或查找 - return false; - } else { - return true; - } - }); - - const ideMessage = appHelper.utils && appHelper.utils.ideMessage; - - //复制 - if (!document.copyListener) { - document.copyListener = e => { - if (!keyboardFilter(e) || appHelper.isCopying) return; - const schema = appHelper.schemaHelper && appHelper.schemaHelper.schemaMap[appHelper.activeKey]; - if (!schema || !isSchema(schema)) return; - appHelper.isCopying = true; - const schemaStr = serialize(transformSchemaToPure(schema), { - unsafe: true - }); - setClipboardData(schemaStr) - .then(() => { - ideMessage && ideMessage('success', '当前内容已复制到剪贴板,请使用快捷键Command+v进行粘贴'); - appHelper.emit('schema.copy', schemaStr, schema); - appHelper.isCopying = false; - }) - .catch(errMsg => { - ideMessage && ideMessage('error', errMsg); - appHelper.isCopying = false; - }); - }; - document.addEventListener('copy', document.copyListener); - if (window.parent.vscode) { - keymaster('command+c', document.copyListener); - } - } - - //粘贴 - if (!document.pasteListener) { - const doPaste = (e, text) => { - if (!keyboardFilter(e) || appHelper.isPasting) return; - const schemaHelper = appHelper.schemaHelper; - let targetKey = appHelper.activeKey; - let direction = 'after'; - const topKey = schemaHelper.schema && schemaHelper.schema.__ctx && schemaHelper.schema.__ctx.lunaKey; - if (!targetKey || topKey === targetKey) { - const schemaHelper = appHelper.schemaHelper; - const topKey = schemaHelper.schema && schemaHelper.schema.__ctx && schemaHelper.schema.__ctx.lunaKey; - if (!topKey) return; - targetKey = topKey; - direction = 'in'; - } - appHelper.isPasting = true; - const schema = parseObj(text); - if (!isSchema(schema)) { - appHelper.emit('illegalSchema.paste', text); - // ideMessage && ideMessage('error', '当前内容不是模型结构,不能粘贴进来!'); - console.warn('paste schema illegal'); - appHelper.isPasting = false; - return; - } - appHelper.emit('material.add', { - schema, - targetKey, - direction - }); - appHelper.isPasting = false; - appHelper.emit('schema.paste', schema); - }; - document.pasteListener = e => { - const clipboardData = e.clipboardData || window.clipboardData; - const text = clipboardData && clipboardData.getData('text'); - doPaste(e, text); - }; - document.addEventListener('paste', document.pasteListener); - if (window.parent.vscode) { - keymaster('command+v', e => { - const sendIDEMessage = window.parent.sendIDEMessage; - sendIDEMessage && - sendIDEMessage({ - action: 'readClipboard' - }) - .then(text => { - doPaste(e, text); - }) - .catch(err => { - console.warn(err); - }); - }); - } - } - - (config || []).forEach(item => { - keymaster(item.keyboard, ev => { +export function registShortCuts(config: ShortCutsConfig, editor: Editor): void { + (config || []).forEach((item): void => { + keymaster(item.keyboard, (ev: Event): void => { ev.preventDefault(); - item.handler(ev, appHelper, keymaster); + item.handler(editor, ev, keymaster); }); }); } // 取消注册快捷 -export function unRegistShortCuts(config) { - (config || []).forEach(item => { +export function unRegistShortCuts(config: ShortCutsConfig): void { + (config || []).forEach((item): void => { keymaster.unbind(item.keyboard); }); if (window.parent.vscode) { keymaster.unbind('command+c'); keymaster.unbind('command+v'); } - if (document.copyListener) { - document.removeEventListener('copy', document.copyListener); - delete document.copyListener; - } - if (document.pasteListener) { - document.removeEventListener('paste', document.pasteListener); - delete document.pasteListener; - } } -// 将函数返回结果转成promise形式,如果函数有返回值则根据返回值的bool类型判断是reject还是resolve,若函数无返回值默认执行resolve -export function transformToPromise(input) { - if (input instanceof Promise) return input; - return new Promise((resolve, reject) => { +/** + * 将函数返回结果转成promise形式,如果函数有返回值则根据返回值的bool类型判断是reject还是resolve,若函数无返回值默认执行resolve + */ +export function transformToPromise(input: any): Promise<{}> { + if (input instanceof Promise) { + return input; + } + return new Promise((resolve, reject): void => { if (input || input === undefined) { resolve(); } else { @@ -212,31 +162,111 @@ export function transformToPromise(input) { }); } -export function comboEditorConfig(defaultConfig, customConfig) { - const { ideConfig = {}, utils = {} } = this.props; - const comboShortCuts = () => { - const defaultShortCuts = defaultIdeConfig.shortCuts; - const shortCuts = ideConfig.shortCuts || []; - const configMap = skeletonUtils.transformArrayToMap(defaultShortCuts, 'keyboard'); - (shortCuts || []).forEach(item => { - configMap[item.keyboard] = item; - }); - return Object.keys(configMap).map(key => configMap[key]); +/** + * 将数组类型转换为Map类型 + */ +interface MapOf { + [propName: string]: T; +} +export function transformArrayToMap(arr: T[], key: string, overwrite: boolean = true): MapOf { + if (isEmpty(arr) || !Array.isArray(arr)) { + return {}; + } + const res = {}; + arr.forEach((item): void => { + const curKey = item[key]; + if (item[key] === undefined) { + return; + } + if (res[curKey] && !overwrite) { + return; + } + res[curKey] = item; + }); + return res; +} + +/** + * 解析url的查询参数 + */ +interface Query { + [propName: string]: string; +} +export function parseSearch(search: string): Query { + if (!search || typeof search !== 'string') { + return {}; + } + const str = search.replace(/^\?/, ''); + const paramStr = str.split('&'); + const res = {}; + paramStr.forEach((item): void => { + const regRes = item.split('='); + if (regRes[0] && regRes[1]) { + res[regRes[0]] = decodeURIComponent(regRes[1]); + } + }); + return res; +} + +export function comboEditorConfig(defaultConfig: EditorConfig = {}, customConfig: EditorConfig): EditorConfig { + const { skeleton, theme, plugins, hooks, shortCuts, lifeCycles, constants, utils, i18n } = customConfig || {}; + + if (skeleton && skeleton.handler && typeof skeleton.handler === 'function') { + return skeleton.handler({ + skeleton, + ...defaultConfig, + }); + } + + const defaultShortCuts = transformArrayToMap(defaultConfig.shortCuts || [], 'keyboard'); + const customShortCuts = transformArrayToMap(shortCuts || [], 'keyboard'); + const localeList = ['zh-CN', 'zh-TW', 'en-US', 'ja-JP']; + const i18nConfig = {}; + localeList.forEach((key): void => { + i18nConfig[key] = { + ...(defaultConfig.i18n && defaultConfig.i18n[key]), + ...(i18n && i18n[key]), }; - return { - ...ideConfig, - utils: { - ...skeletonUtils, - ...utils - }, - constants: { - ...defaultIdeConfig.constants, - ...ideConfig.constants - }, - extensions: { - ...defaultIdeConfig.extensions, - ...ideConfig.extensions - }, - shortCuts: comboShortCuts() - }; -} \ No newline at end of file + }); + return { + skeleton, + theme: { + ...defaultConfig.theme, + ...theme, + }, + plugins: { + ...defaultConfig.plugins, + ...plugins, + }, + hooks: [...(defaultConfig.hooks || []), ...(hooks || [])], + shortCuts: Object.values({ + ...defaultShortCuts, + ...customShortCuts, + }), + lifeCycles: { + ...defaultConfig.lifeCycles, + ...lifeCycles, + }, + constants: { + ...defaultConfig.constants, + ...constants, + }, + utils: [...(defaultConfig.utils || []), ...(utils || [])], + i18n: i18nConfig, + }; +} + +/** + * 判断当前组件是否能够设置ref + * @param {*} Comp 需要判断的组件 + */ +export function acceptsRef(Comp: React.ReactNode): boolean { + const hasSymbol = typeof Symbol === 'function' && Symbol.for; + const REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; + if (!Comp || typeof Comp !== 'object' || isEmpty(Comp)) { + return false; + } + return ( + (Comp.$$typeof && Comp.$$typeof === REACT_FORWARD_REF_TYPE) || (Comp.prototype && Comp.prototype.isReactComponent) + ); +} diff --git a/packages/editor-skeleton/.eslintrc.js b/packages/editor-skeleton/.eslintrc.js index 18ae6baa7..4d6be3c66 100644 --- a/packages/editor-skeleton/.eslintrc.js +++ b/packages/editor-skeleton/.eslintrc.js @@ -1,7 +1,16 @@ -const { eslint, deepmerge } = require('@ice/spec'); +const { tslint, deepmerge } = require('@ice/spec'); -module.exports = deepmerge(eslint, { +module.exports = deepmerge(tslint, { rules: { "global-require": 0, + "comma-dangle": 0, + "no-unused-expressions": 0, + "object-shorthand": 0, + "jsx-a11y/anchor-has-content": 0, + "react/sort-comp": 0, + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", "ts"] }], + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-member-accessibility": 0 }, }); diff --git a/packages/editor-skeleton/es/components/LeftIcon/index.scss b/packages/editor-skeleton/es/components/LeftIcon/index.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts b/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts index 312fc40aa..b503d9bae 100644 --- a/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts +++ b/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts @@ -1,30 +1,36 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { PluginConfig, PluginClass } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class LeftAddon extends PureComponent { +export interface LeftPluginProps { + active?: boolean; + config: PluginConfig; + disabled?: boolean; + editor: Editor; + locked?: boolean; + marked?: boolean; + onClick?: () => void; + pluginClass: PluginClass | undefined; +} +export interface LeftPluginState { + dialogVisible: boolean; +} +export default class LeftPlugin extends PureComponent { static displayName: string; - static propTypes: { - active: any; - config: any; - disabled: any; - dotted: any; - locked: any; - onClick: any; - }; static defaultProps: { active: boolean; config: {}; disabled: boolean; - dotted: boolean; + marked: boolean; locked: boolean; onClick: () => void; }; - static contextType: any; constructor(props: any, context: any); componentDidMount(): void; componentWillUnmount(): void; handleClose: () => void; handleOpen: () => void; handleShow: () => void; - renderIcon: (clickCallback: any) => JSX.Element; - render(): JSX.Element; + renderIcon: (clickCallback: any) => any; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/components/LeftPlugin/index.js b/packages/editor-skeleton/es/components/LeftPlugin/index.js index 517104928..e939943fc 100644 --- a/packages/editor-skeleton/es/components/LeftPlugin/index.js +++ b/packages/editor-skeleton/es/components/LeftPlugin/index.js @@ -1,26 +1,30 @@ +import _Balloon from "@alifd/next/es/balloon"; +import _Dialog from "@alifd/next/es/dialog"; import _extends from "@babel/runtime/helpers/extends"; +import _Badge from "@alifd/next/es/badge"; +import _Icon from "@alifd/next/es/icon"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent, Fragment } from 'react'; -import PropTypes from 'prop-types'; import classNames from 'classnames'; -import AppContext from '@ali/iceluna-sdk/lib/context/appContext'; -import { Balloon, Dialog, Icon, Badge } from '@alife/next'; import './index.scss'; -var LeftAddon = /*#__PURE__*/function (_PureComponent) { - _inheritsLoose(LeftAddon, _PureComponent); +var LeftPlugin = /*#__PURE__*/function (_PureComponent) { + _inheritsLoose(LeftPlugin, _PureComponent); - function LeftAddon(_props, context) { + function LeftPlugin(_props, context) { var _this; _this = _PureComponent.call(this, _props, context) || this; _this.handleClose = function () { - var addonKey = _this.props.config && _this.props.config.addonKey; - var currentAddon = _this.appHelper.addons && _this.appHelper.addons[addonKey]; + var _this$props = _this.props, + config = _this$props.config, + editor = _this$props.editor; + var pluginKey = config && config.pluginKey; + var plugin = editor.plugins && editor.plugins[pluginKey]; - if (currentAddon) { - _this.utils.transformToPromise(currentAddon.close()).then(function () { + if (plugin) { + plugin.close().then(function () { _this.setState({ dialogVisible: false }); @@ -36,33 +40,37 @@ var LeftAddon = /*#__PURE__*/function (_PureComponent) { }; _this.handleShow = function () { - var _this$props = _this.props, - disabled = _this$props.disabled, - config = _this$props.config, - onClick = _this$props.onClick; - var addonKey = config && config.addonKey; - if (disabled || !addonKey) return; //考虑到弹窗情况,延时发送消息 + var _this$props2 = _this.props, + disabled = _this$props2.disabled, + config = _this$props2.config, + onClick = _this$props2.onClick, + editor = _this$props2.editor; + var pluginKey = config && config.pluginKey; + if (disabled || !pluginKey) return; + + _this.handleOpen(); // 考虑到弹窗情况,延时发送消息 + setTimeout(function () { - return _this.appHelper.emit(addonKey + ".addon.activate"); + editor.emit(pluginKey + ".plugin.activate"); }, 0); - _this.handleOpen(); - - onClick && onClick(); + if (onClick) { + onClick(); + } }; _this.renderIcon = function (clickCallback) { - var _this$props2 = _this.props, - active = _this$props2.active, - disabled = _this$props2.disabled, - dotted = _this$props2.dotted, - locked = _this$props2.locked, - _onClick = _this$props2.onClick, - config = _this$props2.config; + var _this$props3 = _this.props, + active = _this$props3.active, + disabled = _this$props3.disabled, + marked = _this$props3.marked, + locked = _this$props3.locked, + _onClick = _this$props3.onClick, + config = _this$props3.config; var _ref = config || {}, - addonKey = _ref.addonKey, + pluginKey = _ref.pluginKey, props = _ref.props; var _ref2 = props || {}, @@ -70,24 +78,24 @@ var LeftAddon = /*#__PURE__*/function (_PureComponent) { title = _ref2.title; return React.createElement("div", { - className: classNames('luna-left-addon', addonKey, { + className: classNames('lowcode-left-plugin', pluginKey, { active: active, disabled: disabled, locked: locked }), "data-tooltip": title, onClick: function onClick() { - if (disabled) return; //考虑到弹窗情况,延时发送消息 + if (disabled) return; // 考虑到弹窗情况,延时发送消息 clickCallback && clickCallback(); _onClick && _onClick(); } - }, dotted ? React.createElement(Badge, { + }, marked ? React.createElement(_Badge, { dot: true - }, React.createElement(Icon, { + }, React.createElement(_Icon, { type: icon, size: "small" - })) : React.createElement(Icon, { + })) : React.createElement(_Icon, { type: icon, size: "small" })); @@ -96,118 +104,106 @@ var LeftAddon = /*#__PURE__*/function (_PureComponent) { _this.state = { dialogVisible: false }; - _this.appHelper = context.appHelper; - _this.utils = _this.appHelper.utils; - _this.constants = _this.appHelper.constants; return _this; } - var _proto = LeftAddon.prototype; + var _proto = LeftPlugin.prototype; _proto.componentDidMount = function componentDidMount() { - var config = this.props.config; - var addonKey = config && config.addonKey; - var appHelper = this.appHelper; + var _this$props4 = this.props, + config = _this$props4.config, + editor = _this$props4.editor; + var pluginKey = config && config.pluginKey; - if (appHelper && addonKey) { - appHelper.on(addonKey + ".dialog.show", this.handleShow); - appHelper.on(addonKey + ".dialog.close", this.handleClose); + if (editor && pluginKey) { + editor.on(pluginKey + ".dialog.show", this.handleShow); + editor.on(pluginKey + ".dialog.close", this.handleClose); } }; _proto.componentWillUnmount = function componentWillUnmount() { - var config = this.props.config; - var appHelper = this.appHelper; - var addonKey = config && config.addonKey; + var _this$props5 = this.props, + config = _this$props5.config, + editor = _this$props5.editor; + var pluginKey = config && config.pluginKey; - if (appHelper && addonKey) { - appHelper.off(addonKey + ".dialog.show", this.handleShow); - appHelper.off(addonKey + ".dialog.close", this.handleClose); + if (editor && pluginKey) { + editor.off(pluginKey + ".dialog.show", this.handleShow); + editor.off(pluginKey + ".dialog.close", this.handleClose); } }; _proto.render = function render() { var _this2 = this; - var _this$props3 = this.props, - dotted = _this$props3.dotted, - locked = _this$props3.locked, - active = _this$props3.active, - disabled = _this$props3.disabled, - config = _this$props3.config; + var _this$props6 = this.props, + marked = _this$props6.marked, + locked = _this$props6.locked, + active = _this$props6.active, + disabled = _this$props6.disabled, + config = _this$props6.config, + editor = _this$props6.editor, + Comp = _this$props6.pluginClass; var _ref3 = config || {}, - addonKey = _ref3.addonKey, + pluginKey = _ref3.pluginKey, props = _ref3.props, type = _ref3.type, - addonProps = _ref3.addonProps; + pluginProps = _ref3.pluginProps; var _ref4 = props || {}, _onClick2 = _ref4.onClick, title = _ref4.title; var dialogVisible = this.state.dialogVisible; - var _this$context = this.context, - appHelper = _this$context.appHelper, - components = _this$context.components; - if (!addonKey || !type || !props) return null; - var componentName = appHelper.utils.generateAddonCompName(addonKey); - var localeProps = {}; - var locale = appHelper.locale, - messages = appHelper.messages; - - if (locale) { - localeProps.locale = locale; - } - - if (messages && messages[componentName]) { - localeProps.messages = messages[componentName]; - } - - var AddonComp = components && components[componentName]; - var node = AddonComp && React.createElement(AddonComp, _extends({ + if (!pluginKey || !type || !props) return null; + var node = Comp ? React.createElement(Comp, _extends({ + editor: editor, active: active, locked: locked, disabled: disabled, config: config, onClick: function onClick() { - _onClick2 && _onClick2.call(null, appHelper); + _onClick2 && _onClick2.call(null, editor); } - }, localeProps, addonProps || {})) || null; + }, pluginProps)) : null; switch (type) { case 'LinkIcon': return React.createElement("a", props.linkProps || {}, this.renderIcon(function () { - _onClick2 && _onClick2.call(null, appHelper); + _onClick2 && _onClick2.call(null, editor); })); case 'Icon': return this.renderIcon(function () { - _onClick2 && _onClick2.call(null, appHelper); + _onClick2 && _onClick2.call(null, editor); }); case 'DialogIcon': return React.createElement(Fragment, null, this.renderIcon(function () { - _onClick2 && _onClick2.call(null, appHelper); + _onClick2 && _onClick2.call(null, editor); _this2.handleOpen(); - }), React.createElement(Dialog, _extends({ + }), React.createElement(_Dialog, _extends({ onOk: function onOk() { - appHelper.emit(addonKey + ".dialog.onOk"); + editor.emit(pluginKey + ".dialog.onOk"); _this2.handleClose(); }, onCancel: this.handleClose, onClose: this.handleClose, - title: title + title: title, + style: _extends({ + width: 500 + }, props.dialogProps && props.dialogProps.style) }, props.dialogProps || {}, { visible: dialogVisible }), node)); case 'BalloonIcon': - return React.createElement(Balloon, _extends({ + return React.createElement(_Balloon, _extends({ trigger: this.renderIcon(function () { - _onClick2 && _onClick2.call(null, appHelper); + _onClick2 && _onClick2.call(null, editor); }), align: "r", triggerType: ['click', 'hover'] @@ -215,13 +211,11 @@ var LeftAddon = /*#__PURE__*/function (_PureComponent) { case 'PanelIcon': return this.renderIcon(function () { - _onClick2 && _onClick2.call(null, appHelper); - - _this2.handleOpen(); + _onClick2 && _onClick2.call(null, editor); }); case 'Custom': - return dotted ? React.createElement(Badge, { + return marked ? React.createElement(_Badge, { dot: true }, node) : node; @@ -230,30 +224,16 @@ var LeftAddon = /*#__PURE__*/function (_PureComponent) { } }; - return LeftAddon; + return LeftPlugin; }(PureComponent); -LeftAddon.displayName = 'LunaLeftAddon'; -LeftAddon.propTypes = { - active: PropTypes.bool, - config: PropTypes.shape({ - addonKey: PropTypes.string, - addonProps: PropTypes.object, - props: PropTypes.object, - type: PropTypes.oneOf(['DialogIcon', 'BalloonIcon', 'PanelIcon', 'LinkIcon', 'Icon', 'Custom']) - }), - disabled: PropTypes.bool, - dotted: PropTypes.bool, - locked: PropTypes.bool, - onClick: PropTypes.func -}; -LeftAddon.defaultProps = { +LeftPlugin.displayName = 'LowcodeLeftPlugin'; +LeftPlugin.defaultProps = { active: false, config: {}, disabled: false, - dotted: false, + marked: false, locked: false, onClick: function onClick() {} }; -LeftAddon.contextType = AppContext; -export { LeftAddon as default }; \ No newline at end of file +export { LeftPlugin as default }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/components/LeftPlugin/index.scss b/packages/editor-skeleton/es/components/LeftPlugin/index.scss index 9c6922129..37b79669b 100644 --- a/packages/editor-skeleton/es/components/LeftPlugin/index.scss +++ b/packages/editor-skeleton/es/components/LeftPlugin/index.scss @@ -1,59 +1,60 @@ -.luna-left-addon { - font-size: 16px; +.lowcode-left-plugin { + font-size: 20px; text-align: center; - line-height: 36px; - height: 36px; + line-height: 44px; + height: 44px; position: relative; cursor: pointer; transition: all 0.3s ease; - color: #777; - &.collapse { - height: 40px; - color: #8c8c8c; - border-bottom: 1px solid #bfbfbf; - } + color: $color-text1-3; &.locked { color: red !important; } - &.active { - color: #fff !important; - background-color: $color-brand1-9 !important; - &.disabled { - color: #fff; - background-color: $color-fill1-7; - } - } - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - } &:hover { - background-color: $color-brand1-1; color: $color-brand1-6; &:before { content: attr(data-tooltip); display: block; position: absolute; - left: 50px; - top: 5px; + left: 45px; + top: 8px; line-height: 18px; font-size: 12px; white-space: nowrap; padding: 6px 8px; border-radius: 4px; - background: rgba(0, 0, 0, 0.75); - color: #fff; + background: $balloon-normal-color-bg; + border: 1px solid $balloon-normal-color-border; + opacity: 0.8; + color: $color-text1-3; z-index: 100; } &:after { content: ''; display: block; position: absolute; + width: 10px; + height: 10px; + transform: rotate(45deg); left: 40px; - top: 15px; - border: 5px solid transparent; - border-right-color: rgba(0, 0, 0, 0.75); + top: 18px; + background: $balloon-normal-color-bg; + border-left: 1px solid $balloon-normal-color-border; + border-bottom: 1px solid $balloon-normal-color-border; z-index: 100; } } + &.active { + color: $color-brand1-9; + &.disabled { + color: $color-text1-1; + } + &:hover { + color: $color-brand1-6; + } + } + &.disabled { + cursor: not-allowed; + color: $color-text1-1; + } } diff --git a/packages/editor-skeleton/es/components/Panel/index.d.ts b/packages/editor-skeleton/es/components/Panel/index.d.ts new file mode 100644 index 000000000..28bb28693 --- /dev/null +++ b/packages/editor-skeleton/es/components/Panel/index.d.ts @@ -0,0 +1,27 @@ +import React, { PureComponent } from 'react'; +import './index.scss'; +export interface PanelProps { + align: 'left' | 'right'; + defaultWidth: number; + minWidth: number; + draggable: boolean; + floatable: boolean; + children: Plugin; + visible: boolean; +} +export interface PanelState { + width: number; +} +export default class Panel extends PureComponent { + static displayName: string; + static defaultProps: { + align: string; + defaultWidth: number; + minWidth: number; + draggable: boolean; + floatable: boolean; + visible: boolean; + }; + constructor(props: any); + render(): React.ReactNode; +} diff --git a/packages/editor-skeleton/es/components/Panel/index.js b/packages/editor-skeleton/es/components/Panel/index.js index e69de29bb..54496425f 100644 --- a/packages/editor-skeleton/es/components/Panel/index.js +++ b/packages/editor-skeleton/es/components/Panel/index.js @@ -0,0 +1,55 @@ +import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; +import React, { PureComponent } from 'react'; +import classNames from 'classnames'; +import './index.scss'; + +var Panel = /*#__PURE__*/function (_PureComponent) { + _inheritsLoose(Panel, _PureComponent); + + function Panel(props) { + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.state = { + width: props.defaultWidth + }; + return _this; + } + + var _proto = Panel.prototype; + + _proto.render = function render() { + var _this$props = this.props, + align = _this$props.align, + draggable = _this$props.draggable, + floatable = _this$props.floatable, + visible = _this$props.visible; + var width = this.state.width; + return React.createElement("div", { + className: classNames('lowcode-panel', align, { + draggable: draggable, + floatable: floatable, + visible: visible + }), + style: { + width: width, + display: visible ? '' : 'none' + } + }, this.props.children, React.createElement("div", { + className: "drag-area" + })); + }; + + return Panel; +}(PureComponent); + +Panel.displayName = 'LowcodePanel'; +Panel.defaultProps = { + align: 'left', + defaultWidth: 240, + minWidth: 100, + draggable: true, + floatable: false, + visible: true +}; +export { Panel as default }; \ No newline at end of file diff --git a/packages/editor/src/skeleton/components/Panel/index.scss b/packages/editor-skeleton/es/components/Panel/index.scss similarity index 100% rename from packages/editor/src/skeleton/components/Panel/index.scss rename to packages/editor-skeleton/es/components/Panel/index.scss diff --git a/packages/editor-skeleton/es/components/TopIcon/index.d.ts b/packages/editor-skeleton/es/components/TopIcon/index.d.ts index 2bb6854b4..694956cf0 100644 --- a/packages/editor-skeleton/es/components/TopIcon/index.d.ts +++ b/packages/editor-skeleton/es/components/TopIcon/index.d.ts @@ -1,19 +1,19 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; import './index.scss'; -export default class TopIcon extends PureComponent { +export interface TopIconProps { + active?: boolean; + className?: string; + disabled?: boolean; + icon: string; + id?: string; + locked?: boolean; + marked?: boolean; + onClick?: () => void; + style?: React.CSSProperties; + title?: string; +} +export default class TopIcon extends PureComponent { static displayName: string; - static propTypes: { - active: any; - className: any; - disabled: any; - icon: any; - id: any; - locked: any; - onClick: any; - showTitle: any; - style: any; - title: any; - }; static defaultProps: { active: boolean; className: string; @@ -22,9 +22,8 @@ export default class TopIcon extends PureComponent { id: string; locked: boolean; onClick: () => void; - showTitle: boolean; style: {}; title: string; }; - render(): JSX.Element; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/components/TopIcon/index.js b/packages/editor-skeleton/es/components/TopIcon/index.js index bfa50a96b..8720bb079 100644 --- a/packages/editor-skeleton/es/components/TopIcon/index.js +++ b/packages/editor-skeleton/es/components/TopIcon/index.js @@ -1,8 +1,6 @@ -import _Button from "@alifd/next/es/button"; import _Icon from "@alifd/next/es/icon"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; -import PropTypes from 'prop-types'; import classNames from 'classnames'; import './index.scss'; @@ -25,42 +23,26 @@ var TopIcon = /*#__PURE__*/function (_PureComponent) { className = _this$props.className, id = _this$props.id, style = _this$props.style, - showTitle = _this$props.showTitle, onClick = _this$props.onClick; - return React.createElement(_Button, { - type: "normal", - size: "large", - text: true, - className: classNames('lowcode-top-btn', className, { + return React.createElement("div", { + className: classNames('lowcode-top-icon', className, { active: active, disabled: disabled, locked: locked }), + "data-tooltip": title, id: id, style: style, - onClick: disabled ? null : onClick - }, React.createElement("div", null, React.createElement(_Icon, { - size: "large", + onClick: disabled ? undefined : onClick + }, React.createElement(_Icon, { type: icon - }), showTitle && React.createElement("span", null, title))); + })); }; return TopIcon; }(PureComponent); -TopIcon.displayName = 'TopIcon'; -TopIcon.propTypes = { - active: PropTypes.bool, - className: PropTypes.string, - disabled: PropTypes.bool, - icon: PropTypes.string, - id: PropTypes.string, - locked: PropTypes.bool, - onClick: PropTypes.func, - showTitle: PropTypes.bool, - style: PropTypes.object, - title: PropTypes.string -}; +TopIcon.displayName = 'LowcodeTopIcon'; TopIcon.defaultProps = { active: false, className: '', @@ -69,7 +51,6 @@ TopIcon.defaultProps = { id: '', locked: false, onClick: function onClick() {}, - showTitle: false, style: {}, title: '' }; diff --git a/packages/editor-skeleton/es/components/TopIcon/index.scss b/packages/editor-skeleton/es/components/TopIcon/index.scss index 1cb3bdfdf..4a826b05f 100644 --- a/packages/editor-skeleton/es/components/TopIcon/index.scss +++ b/packages/editor-skeleton/es/components/TopIcon/index.scss @@ -1,22 +1,68 @@ -.next-btn.next-large.lowcode-top-btn { +.lowcode-top-icon { + display: inline-block; width: 44px; - height: 44px; - padding: 0; - margin: 4px -2px; - text-align: center; - border-radius: 8px; - border: 1px solid transparent; - color: #777; + font-size: 20px; + line-height: 48px; + color: $color-text1-3; + position: relative; &.disabled { cursor: not-allowed; color: $color-text1-1; + &:hover { + color: $color-text1-1; + } + } + &.active { + color: $color-brand1-9; + &:hover { + color: $color-brand1-6; + } } &.locked { color: red !important; } + &:hover { + color: $color-brand1-6; + &:before { + content: attr(data-tooltip); + display: block; + height: auto; + width: auto; + position: absolute; + left: 50%; + transform: translate(-50%, 0); + bottom: -32px; + line-height: 18px; + font-size: 12px; + white-space: nowrap; + padding: 6px 8px; + border-radius: 4px; + background: $balloon-normal-color-bg; + border: 1px solid $balloon-normal-color-border; + opacity: 0.8; + color: $color-text1-3; + z-index: 100; + } + &:after { + content: ''; + display: block; + position: absolute; + width: 10px; + height: 10px; + left: 50%; + transform: translate(-50%, 0) rotate(45deg); + bottom: -5px; + background: $balloon-normal-color-bg; + border-left: 1px solid $balloon-normal-color-border; + border-top: 1px solid $balloon-normal-color-border; + opacity: 1; + visibility: visible; + z-index: 100; + } + } i.next-icon { &:before { - font-size: 17px; + font-size: 16px; } margin-right: 0; line-height: 18px; diff --git a/packages/editor-skeleton/es/components/TopPlugin/index.d.ts b/packages/editor-skeleton/es/components/TopPlugin/index.d.ts index dc09c377e..2ef80c825 100644 --- a/packages/editor-skeleton/es/components/TopPlugin/index.d.ts +++ b/packages/editor-skeleton/es/components/TopPlugin/index.d.ts @@ -1,12 +1,27 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { PluginConfig, PluginClass } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class TopPlugin extends PureComponent { +export interface TopPluginProps { + active?: boolean; + config: PluginConfig; + disabled?: boolean; + editor: Editor; + locked?: boolean; + marked?: boolean; + onClick?: () => void; + pluginClass: PluginClass | undefined; +} +export interface TopPluginState { + dialogVisible: boolean; +} +export default class TopPlugin extends PureComponent { static displayName: string; static defaultProps: { active: boolean; config: {}; disabled: boolean; - dotted: boolean; + marked: boolean; locked: boolean; onClick: () => void; }; @@ -16,6 +31,6 @@ export default class TopPlugin extends PureComponent { handleShow: () => void; handleClose: () => void; handleOpen: () => void; - renderIcon: (clickCallback: any) => JSX.Element; - render(): JSX.Element; + renderIcon: (clickCallback: any) => any; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/components/TopPlugin/index.js b/packages/editor-skeleton/es/components/TopPlugin/index.js index e881bb6c1..85c9f9ed7 100644 --- a/packages/editor-skeleton/es/components/TopPlugin/index.js +++ b/packages/editor-skeleton/es/components/TopPlugin/index.js @@ -19,25 +19,29 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { var _this$props = _this.props, disabled = _this$props.disabled, config = _this$props.config, - onClick = _this$props.onClick; - var addonKey = config && config.addonKey; - if (disabled || !addonKey) return; //考虑到弹窗情况,延时发送消息 + onClick = _this$props.onClick, + editor = _this$props.editor; + var pluginKey = config && config.pluginKey; + if (disabled || !pluginKey) return; + + _this.handleOpen(); // 考虑到弹窗情况,延时发送消息 + setTimeout(function () { - return _this.appHelper.emit(addonKey + ".addon.activate"); + editor.emit(pluginKey + ".plugin.activate"); }, 0); - - _this.handleOpen(); - onClick && onClick(); }; _this.handleClose = function () { - var addonKey = _this.props.config && _this.props.config.addonKey; - var currentAddon = _this.appHelper.addons && _this.appHelper.addons[addonKey]; + var _this$props2 = _this.props, + config = _this$props2.config, + editor = _this$props2.editor; + var pluginKey = config && config.pluginKey; + var plugin = editor.plugins && editor.plugins[pluginKey]; - if (currentAddon) { - _this.utils.transformToPromise(currentAddon.close()).then(function () { + if (plugin) { + plugin.close().then(function () { _this.setState({ dialogVisible: false }); @@ -53,13 +57,14 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { }; _this.renderIcon = function (clickCallback) { - var _this$props2 = _this.props, - active = _this$props2.active, - disabled = _this$props2.disabled, - dotted = _this$props2.dotted, - locked = _this$props2.locked, - config = _this$props2.config, - _onClick = _this$props2.onClick; + var _this$props3 = _this.props, + active = _this$props3.active, + disabled = _this$props3.disabled, + marked = _this$props3.marked, + locked = _this$props3.locked, + config = _this$props3.config, + _onClick = _this$props3.onClick, + editor = _this$props3.editor; var _ref = config || {}, pluginKey = _ref.pluginKey, @@ -70,23 +75,23 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { title = _ref2.title; var node = React.createElement(TopIcon, { - className: "lowcode-top-addon " + pluginKey, + className: "lowcode-top-plugin " + pluginKey, active: active, disabled: disabled, locked: locked, icon: icon, title: title, onClick: function onClick() { - if (disabled) return; //考虑到弹窗情况,延时发送消息 + if (disabled) return; // 考虑到弹窗情况,延时发送消息 setTimeout(function () { - return _this.appHelper.emit(pluginKey + ".addon.activate"); + editor.emit(pluginKey + ".plugin.activate"); }, 0); clickCallback && clickCallback(); _onClick && _onClick(); } }); - return dotted ? React.createElement(_Badge, { + return marked ? React.createElement(_Badge, { dot: true }, node) : node; }; @@ -100,34 +105,40 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { var _proto = TopPlugin.prototype; _proto.componentDidMount = function componentDidMount() { - var config = this.props.config; - var pluginKey = config && config.pluginKey; // const appHelper = this.appHelper; - // if (appHelper && addonKey) { - // appHelper.on(`${addonKey}.dialog.show`, this.handleShow); - // appHelper.on(`${addonKey}.dialog.close`, this.handleClose); - // } + var _this$props4 = this.props, + config = _this$props4.config, + editor = _this$props4.editor; + var pluginKey = config && config.pluginKey; + + if (editor && pluginKey) { + editor.on(pluginKey + ".dialog.show", this.handleShow); + editor.on(pluginKey + ".dialog.close", this.handleClose); + } }; - _proto.componentWillUnmount = function componentWillUnmount() {// const { config } = this.props; - // const addonKey = config && config.addonKey; - // const appHelper = this.appHelper; - // if (appHelper && addonKey) { - // appHelper.off(`${addonKey}.dialog.show`, this.handleShow); - // appHelper.off(`${addonKey}.dialog.close`, this.handleClose); - // } + _proto.componentWillUnmount = function componentWillUnmount() { + var _this$props5 = this.props, + config = _this$props5.config, + editor = _this$props5.editor; + var pluginKey = config && config.pluginKey; + + if (editor && pluginKey) { + editor.off(pluginKey + ".dialog.show", this.handleShow); + editor.off(pluginKey + ".dialog.close", this.handleClose); + } }; _proto.render = function render() { var _this2 = this; - var _this$props3 = this.props, - active = _this$props3.active, - dotted = _this$props3.dotted, - locked = _this$props3.locked, - disabled = _this$props3.disabled, - config = _this$props3.config, - editor = _this$props3.editor, - Comp = _this$props3.pluginClass; + var _this$props6 = this.props, + active = _this$props6.active, + marked = _this$props6.marked, + locked = _this$props6.locked, + disabled = _this$props6.disabled, + config = _this$props6.config, + editor = _this$props6.editor, + Comp = _this$props6.pluginClass; var _ref3 = config || {}, pluginKey = _ref3.pluginKey, @@ -140,8 +151,9 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { title = _ref4.title; var dialogVisible = this.state.dialogVisible; - if (!pluginKey || !type || !Comp) return null; - var node = React.createElement(Comp, _extends({ + if (!pluginKey || !type) return null; + var node = Comp ? React.createElement(Comp, _extends({ + editor: editor, active: active, locked: locked, disabled: disabled, @@ -149,7 +161,7 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { onClick: function onClick() { _onClick2 && _onClick2.call(null, editor); } - }, pluginProps)); + }, pluginProps)) : null; switch (type) { case 'LinkIcon': @@ -175,7 +187,10 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { }, onCancel: this.handleClose, onClose: this.handleClose, - title: title + title: title, + style: _extends({ + width: 500 + }, props.dialogProps && props.dialogProps.style) }, props.dialogProps, { visible: dialogVisible }), node)); @@ -189,7 +204,7 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { }, props.balloonProps), node); case 'Custom': - return dotted ? React.createElement(_Badge, { + return marked ? React.createElement(_Badge, { dot: true }, node) : node; @@ -201,12 +216,12 @@ var TopPlugin = /*#__PURE__*/function (_PureComponent) { return TopPlugin; }(PureComponent); -TopPlugin.displayName = 'lowcodeTopPlugin'; +TopPlugin.displayName = 'LowcodeTopPlugin'; TopPlugin.defaultProps = { active: false, config: {}, disabled: false, - dotted: false, + marked: false, locked: false, onClick: function onClick() {} }; diff --git a/packages/editor-skeleton/es/config/skeleton.d.ts b/packages/editor-skeleton/es/config/skeleton.d.ts index 67ae8a0ae..d87c48512 100644 --- a/packages/editor-skeleton/es/config/skeleton.d.ts +++ b/packages/editor-skeleton/es/config/skeleton.d.ts @@ -1,14 +1,2 @@ -declare const routerConfig: { - path: string; - component: any; - children: ({ - path: string; - component: any; - redirect?: undefined; - } | { - path: string; - redirect: string; - component?: undefined; - })[]; -}[]; -export default routerConfig; +declare const _default: {}; +export default _default; diff --git a/packages/editor-skeleton/es/config/skeleton.js b/packages/editor-skeleton/es/config/skeleton.js index 8fb0727ab..7c645e42f 100644 --- a/packages/editor-skeleton/es/config/skeleton.js +++ b/packages/editor-skeleton/es/config/skeleton.js @@ -1,14 +1 @@ -import Dashboard from '@/pages/Dashboard'; -import BasicLayout from '@/layouts/BasicLayout'; -var routerConfig = [{ - path: '/', - component: BasicLayout, - children: [{ - path: '/dashboard', - component: Dashboard - }, { - path: '/', - redirect: '/dashboard' - }] -}]; -export default routerConfig; \ No newline at end of file +export default {}; \ No newline at end of file diff --git a/packages/editor-skeleton/es/config/utils.d.ts b/packages/editor-skeleton/es/config/utils.d.ts index 5e5bda5ab..d87c48512 100644 --- a/packages/editor-skeleton/es/config/utils.d.ts +++ b/packages/editor-skeleton/es/config/utils.d.ts @@ -1,2 +1,2 @@ -declare const asideMenuConfig: any[]; -export { asideMenuConfig }; +declare const _default: {}; +export default _default; diff --git a/packages/editor-skeleton/es/config/utils.js b/packages/editor-skeleton/es/config/utils.js index 39cee308b..7c645e42f 100644 --- a/packages/editor-skeleton/es/config/utils.js +++ b/packages/editor-skeleton/es/config/utils.js @@ -1,3 +1 @@ -// 菜单配置 -var asideMenuConfig = []; -export { asideMenuConfig }; \ No newline at end of file +export default {}; \ No newline at end of file diff --git a/packages/editor-skeleton/es/global.scss b/packages/editor-skeleton/es/global.scss index 0a710b895..72f7b8525 100644 --- a/packages/editor-skeleton/es/global.scss +++ b/packages/editor-skeleton/es/global.scss @@ -1,13 +1,14 @@ body { - font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, - Arial, PingFang SC-Light, Microsoft YaHei; + font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, Arial, PingFang SC-Light, Microsoft YaHei; font-size: 12px; padding: 0; margin: 0; * { box-sizing: border-box; } + color: $color-text1-3; } + .next-loading { .next-loading-wrap { height: 100%; @@ -16,18 +17,17 @@ body { .lowcode-editor { .lowcode-main-content { position: absolute; - top: 48px; + top: 50px; left: 0; right: 0; bottom: 0; display: flex; - background-color: #d8d8d8; + background-color: rgba(31, 56, 88, 0.06); } .lowcode-center-area { flex: 1; display: flex; flex-direction: column; - padding: 10px; overflow: auto; } } diff --git a/packages/editor-skeleton/es/index.d.ts b/packages/editor-skeleton/es/index.d.ts index 468afa29c..66a91524c 100644 --- a/packages/editor-skeleton/es/index.d.ts +++ b/packages/editor-skeleton/es/index.d.ts @@ -1,8 +1,42 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { EditorConfig, Utils, PluginClassSet } from '@ali/lowcode-editor-framework/lib/definitions'; import './global.scss'; -export default class Skeleton extends PureComponent { +declare global { + interface Window { + __ctx: { + editor: Editor; + appHelper: Editor; + }; + } +} +export interface SkeletonProps { + components: PluginClassSet; + config: EditorConfig; + history: object; + location: object; + match: object; + utils: Utils; +} +export interface SkeletonState { + initReady?: boolean; + skeletonKey?: string; + __hasError?: boolean; +} +export declare class Skeleton extends PureComponent { static displayName: string; + static getDerivedStateFromError(): SkeletonState; + private editor; constructor(props: any); componentWillUnmount(): void; - render(): JSX.Element; + componentDidCatch(err: any): void; + init: (isReset?: boolean) => void; + render(): React.ReactNode; } +export interface SkeletonWithRouterProps { + components: PluginClassSet; + config: EditorConfig; + utils: Utils; +} +declare const SkeletonWithRouter: React.FC; +export default SkeletonWithRouter; diff --git a/packages/editor-skeleton/es/index.js b/packages/editor-skeleton/es/index.js index f875f6604..c853d170a 100644 --- a/packages/editor-skeleton/es/index.js +++ b/packages/editor-skeleton/es/index.js @@ -1,53 +1,125 @@ +import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; import _ConfigProvider from "@alifd/next/es/config-provider"; import _Loading from "@alifd/next/es/loading"; +import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; -import React, { PureComponent } from 'react'; // import Editor from '@ali/lowcode-engine-editor'; - +import React, { PureComponent } from 'react'; +import { HashRouter as Router, Route } from 'react-router-dom'; +import Editor, { utils } from '@ali/lowcode-editor-framework'; +import defaultConfig from './config/skeleton'; +import skeletonUtils from './config/utils'; import TopArea from './layouts/TopArea'; import LeftArea from './layouts/LeftArea'; import CenterArea from './layouts/CenterArea'; import RightArea from './layouts/RightArea'; import './global.scss'; - -var Skeleton = /*#__PURE__*/function (_PureComponent) { +var comboEditorConfig = utils.comboEditorConfig, + parseSearch = utils.parseSearch; +var renderIdx = 0; +export var Skeleton = /*#__PURE__*/function (_PureComponent) { _inheritsLoose(Skeleton, _PureComponent); + Skeleton.getDerivedStateFromError = function getDerivedStateFromError() { + return { + __hasError: true + }; + }; + function Skeleton(props) { var _this; - _this = _PureComponent.call(this, props) || this; // this.editor = new Editor(props.config, props.utils); + _this = _PureComponent.call(this, props) || this; + _this.editor = void 0; - _this.editor = { - on: function on() {}, - off: function off() {}, - config: props.config, - pluginComponents: props.pluginComponents + _this.init = function (isReset) { + if (isReset === void 0) { + isReset = false; + } + + if (_this.editor) { + _this.editor.destroy(); + } + + var _this$props = _this.props, + utils = _this$props.utils, + config = _this$props.config, + components = _this$props.components; + var editor = new Editor(comboEditorConfig(defaultConfig, config), components, _extends({}, skeletonUtils, {}, utils)); + _this.editor = editor; // eslint-disable-next-line no-underscore-dangle + + window.__ctx = { + editor: editor, + appHelper: editor + }; + editor.once('editor.reset', function () { + _this.setState({ + initReady: false + }); + + editor.emit('editor.beforeReset'); + + _this.init(true); + }); + + _this.editor.init().then(function () { + _this.setState({ + initReady: true, + // 刷新IDE时生成新的skeletonKey保证插件生命周期重新执行 + skeletonKey: isReset ? "skeleton" + ++renderIdx : _this.state.skeletonKey + }, function () { + editor.emit('editor.ready'); + editor.emit('ide.ready'); + isReset && editor.emit('ide.afterReset'); + }); + }); }; + + _this.state = { + initReady: false, + skeletonKey: "skeleton" + renderIdx + }; + + _this.init(); + return _this; } var _proto = Skeleton.prototype; - _proto.componentWillUnmount = function componentWillUnmount() {// this.editor && this.editor.destroy(); - // this.editor = null; + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor && this.editor.destroy(); + }; + + _proto.componentDidCatch = function componentDidCatch(err) { + console.error(err); }; _proto.render = function render() { - var _this$props = this.props, - location = _this$props.location, - history = _this$props.history, - messages = _this$props.messages; - this.editor.location = location; - this.editor.history = history; - this.editor.messages = messages; + var _this$state = this.state, + initReady = _this$state.initReady, + skeletonKey = _this$state.skeletonKey, + __hasError = _this$state.__hasError; + var _this$props2 = this.props, + location = _this$props2.location, + history = _this$props2.history, + match = _this$props2.match; + + if (__hasError || !this.editor) { + return 'error'; + } + + location.query = parseSearch(location.search); + this.editor.set('location', location); + this.editor.set('history', history); + this.editor.set('match', match); return React.createElement(_ConfigProvider, null, React.createElement(_Loading, { tip: "Loading", size: "large", - visible: false, - shape: "fusion-reactor", + visible: !initReady, fullScreen: true }, React.createElement("div", { - className: "lowcode-editor" + className: "lowcode-editor", + key: skeletonKey }, React.createElement(TopArea, { editor: this.editor }), React.createElement("div", { @@ -64,7 +136,23 @@ var Skeleton = /*#__PURE__*/function (_PureComponent) { }; return Skeleton; -}(PureComponent); +}(PureComponent); // 通过React-Router包裹,支持编辑器内页面根据路由切换 -Skeleton.displayName = 'lowcodeEditorSkeleton'; -export { Skeleton as default }; \ No newline at end of file +Skeleton.displayName = 'LowcodeEditorSkeleton'; +; + +var SkeletonWithRouter = function SkeletonWithRouter(props) { + var config = props.config, + otherProps = _objectWithoutPropertiesLoose(props, ["config"]); + + return React.createElement(Router, null, React.createElement(Route, { + path: "/*", + component: function component(routerProps) { + return React.createElement(Skeleton, _extends({}, routerProps, otherProps, config.skeleton && config.skeleton.props, { + config: config + })); + } + })); +}; + +export default SkeletonWithRouter; \ No newline at end of file diff --git a/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts b/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts index 201db137a..17fc0df75 100644 --- a/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts +++ b/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts @@ -1,7 +1,16 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; import './index.scss'; -export default class CenterArea extends PureComponent { - static displayName: string; - constructor(props: any); - render(): JSX.Element; +export interface CenterAreaProps { + editor: Editor; +} +export default class CenterArea extends PureComponent { + static displayName: string; + private editor; + private areaManager; + constructor(props: any); + componentDidMount(): void; + componentWillUnmount(): void; + handleSkeletonUpdate: () => void; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/CenterArea/index.js b/packages/editor-skeleton/es/layouts/CenterArea/index.js index 4b9710f81..bc7c3f2c1 100644 --- a/packages/editor-skeleton/es/layouts/CenterArea/index.js +++ b/packages/editor-skeleton/es/layouts/CenterArea/index.js @@ -1,24 +1,64 @@ +import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; +import { AreaManager } from '@ali/lowcode-editor-framework'; import './index.scss'; var CenterArea = /*#__PURE__*/function (_PureComponent) { _inheritsLoose(CenterArea, _PureComponent); function CenterArea(props) { - return _PureComponent.call(this, props) || this; + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.editor = void 0; + _this.areaManager = void 0; + + _this.handleSkeletonUpdate = function () { + // 当前区域插件状态改变是更新区域 + if (_this.areaManager.isPluginStatusUpdate()) { + _this.forceUpdate(); + } + }; + + _this.editor = props.editor; + _this.areaManager = new AreaManager(_this.editor, 'centerArea'); + return _this; } var _proto = CenterArea.prototype; + _proto.componentDidMount = function componentDidMount() { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + }; + + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + }; + _proto.render = function render() { + var _this2 = this; + + var visiblePluginList = this.areaManager.getVisiblePluginList(); return React.createElement("div", { className: "lowcode-center-area" - }); + }, visiblePluginList.map(function (item) { + var Comp = _this2.areaManager.getPluginClass(item.pluginKey); + + if (Comp) { + return React.createElement(Comp, _extends({ + key: item.pluginKey, + editor: _this2.editor, + config: item + }, item.pluginProps)); + } + + return null; + })); }; return CenterArea; }(PureComponent); -CenterArea.displayName = 'lowcodeCenterArea'; +CenterArea.displayName = 'LowcodeCenterArea'; export { CenterArea as default }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/layouts/CenterArea/index.scss b/packages/editor-skeleton/es/layouts/CenterArea/index.scss index b2584ed2b..40a1806a6 100644 --- a/packages/editor-skeleton/es/layouts/CenterArea/index.scss +++ b/packages/editor-skeleton/es/layouts/CenterArea/index.scss @@ -1,3 +1,3 @@ .lowcode-center-area { - padding: 12px; + padding: 0; } diff --git a/packages/editor-skeleton/es/layouts/LeftArea/index.scss b/packages/editor-skeleton/es/layouts/LeftArea/index.scss index dac1b6b0a..8c69f42fc 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/index.scss +++ b/packages/editor-skeleton/es/layouts/LeftArea/index.scss @@ -1,21 +1,23 @@ .lowcode-left-area-nav { - width: 48px; + width: 50px; height: 100%; - background: #ffffff; - border-right: 1px solid #e8ebee; + background-color: $card-background; + border-right: 2px solid $color-line1-1; position: relative; .top-area { position: absolute; top: 0; width: 100%; - background: #ffffff; + padding: 12px 0; + background-color: $card-background; max-height: 100%; } .bottom-area { position: absolute; - bottom: 20px; + bottom: 0; width: 100%; - background: #ffffff; + padding: 12px 0; + background-color: $card-background; max-height: calc(100% - 20px); } } diff --git a/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts b/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts index c44a09527..e12b41c0e 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts +++ b/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts @@ -1,7 +1,24 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class LeftAreaPanel extends PureComponent { - static displayName: string; - constructor(props: any); - render(): JSX.Element; +export interface LeftAreaNavProps { + editor: Editor; +} +export interface LeftAreaNavState { + activeKey: string; +} +export default class LeftAreaNav extends PureComponent { + static displayName: string; + private editor; + private areaManager; + constructor(props: any); + componentDidMount(): void; + componentWillUnmount(): void; + handleSkeletonUpdate: () => void; + handlePluginChange: (key: string) => void; + handlePluginClick: (item: PluginConfig) => void; + updateActiveKey: (key: string) => void; + renderPluginList: (list?: PluginConfig[]) => any[]; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/LeftArea/nav.js b/packages/editor-skeleton/es/layouts/LeftArea/nav.js index 962129007..5401ced91 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/nav.js +++ b/packages/editor-skeleton/es/layouts/LeftArea/nav.js @@ -1,24 +1,150 @@ +import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; +import LeftPlugin from '../../components/LeftPlugin'; +import { utils, AreaManager } from '@ali/lowcode-editor-framework'; import './index.scss'; +var isEmpty = utils.isEmpty; -var LeftAreaPanel = /*#__PURE__*/function (_PureComponent) { - _inheritsLoose(LeftAreaPanel, _PureComponent); +var LeftAreaNav = /*#__PURE__*/function (_PureComponent) { + _inheritsLoose(LeftAreaNav, _PureComponent); - function LeftAreaPanel(props) { - return _PureComponent.call(this, props) || this; + function LeftAreaNav(props) { + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.editor = void 0; + _this.areaManager = void 0; + + _this.handleSkeletonUpdate = function () { + // 当前区域插件状态改变是更新区域 + if (_this.areaManager.isPluginStatusUpdate()) { + _this.forceUpdate(); + } + }; + + _this.handlePluginChange = function (key) { + var activeKey = _this.state.activeKey; + var plugins = _this.editor.plugins; + var prePlugin = plugins[activeKey]; + var nextPlugin = plugins[key]; + + if (activeKey === 'none') { + if (nextPlugin) { + nextPlugin.open().then(function () { + _this.updateActiveKey(key); + }); + } + } else if (activeKey === key) { + if (prePlugin) { + prePlugin.close().then(function () { + _this.updateActiveKey('none'); + }); + } + } else if (prePlugin) { + // 先关后开 + prePlugin.close().then(function () { + if (nextPlugin) { + nextPlugin.open().then(function () { + _this.updateActiveKey(key); + }); + } + }); + } + }; + + _this.handlePluginClick = function (item) { + if (item.type === 'PanelIcon') { + _this.handlePluginChange(item.pluginKey); + } + }; + + _this.updateActiveKey = function (key) { + _this.editor.set('leftNav', key); + + _this.setState({ + activeKey: key + }); + + _this.editor.emit('leftPanel.show', key); + }; + + _this.renderPluginList = function (list) { + if (list === void 0) { + list = []; + } + + var activeKey = _this.state.activeKey; + return list.map(function (item) { + var pluginStatus = _this.areaManager.getPluginStatus(item.pluginKey); + + var pluginClass = _this.areaManager.getPluginClass(item.pluginKey); + + return React.createElement(LeftPlugin, _extends({ + key: item.pluginKey, + config: item, + editor: _this.editor, + pluginClass: pluginClass, + onClick: function onClick() { + return _this.handlePluginClick(item); + }, + active: activeKey === item.pluginKey + }, pluginStatus)); + }); + }; + + _this.editor = props.editor; + _this.areaManager = new AreaManager(_this.editor, 'leftArea'); + _this.state = { + activeKey: 'none' + }; + return _this; } - var _proto = LeftAreaPanel.prototype; + var _proto = LeftAreaNav.prototype; - _proto.render = function render() { - return React.createElement("div", { - className: "lowcode-left-area-nav" - }); + _proto.componentDidMount = function componentDidMount() { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + this.editor.on('leftNav.change', this.handlePluginChange); + var visiblePanelPluginList = this.areaManager.getVisiblePluginList('IconPanel'); + var defaultKey = visiblePanelPluginList[0] && visiblePanelPluginList[0].pluginKey || 'componentAttr'; + this.handlePluginChange(defaultKey); }; - return LeftAreaPanel; + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + this.editor.off('leftNav.change', this.handlePluginChange); + }; + + _proto.render = function render() { + var topList = []; + var bottomList = []; + var visiblePluginList = this.areaManager.getVisiblePluginList(); + + if (isEmpty(visiblePluginList)) { + return null; + } + + visiblePluginList.forEach(function (item) { + var align = item.props && item.props.align === 'bottom' ? 'bottom' : 'top'; + + if (align === 'bottom') { + bottomList.push(item); + } else { + topList.push(item); + } + }); + return React.createElement("div", { + className: "lowcode-left-area-nav" + }, React.createElement("div", { + className: "bottom-area" + }, this.renderPluginList(bottomList)), React.createElement("div", { + className: "top-area" + }, this.renderPluginList(topList))); + }; + + return LeftAreaNav; }(PureComponent); -LeftAreaPanel.displayName = 'lowcodeLeftAreaNav'; -export { LeftAreaPanel as default }; \ No newline at end of file +LeftAreaNav.displayName = 'LowcodeLeftAreaNav'; +export { LeftAreaNav as default }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts b/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts index c44a09527..c9320350c 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts +++ b/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts @@ -1,7 +1,20 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; import './index.scss'; -export default class LeftAreaPanel extends PureComponent { - static displayName: string; - constructor(props: any); - render(): JSX.Element; +export interface LeftAreaPanelProps { + editor: Editor; +} +export interface LeftAreaPanelState { + activeKey: string; +} +export default class LeftAreaPanel extends PureComponent { + static displayName: string; + private editor; + private areaManager; + constructor(props: any); + componentDidMount(): void; + componentWillUnmount(): void; + handleSkeletonUpdate: () => void; + handlePluginChange: (key: string) => void; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/LeftArea/panel.js b/packages/editor-skeleton/es/layouts/LeftArea/panel.js index 332529ce2..2104ab096 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/panel.js +++ b/packages/editor-skeleton/es/layouts/LeftArea/panel.js @@ -1,24 +1,77 @@ +import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; -import React, { PureComponent } from 'react'; +import React, { PureComponent, Fragment } from 'react'; +import { AreaManager } from '@ali/lowcode-editor-framework'; +import Panel from '../../components/Panel'; import './index.scss'; var LeftAreaPanel = /*#__PURE__*/function (_PureComponent) { _inheritsLoose(LeftAreaPanel, _PureComponent); function LeftAreaPanel(props) { - return _PureComponent.call(this, props) || this; + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.editor = void 0; + _this.areaManager = void 0; + + _this.handleSkeletonUpdate = function () { + // 当前区域插件状态改变是更新区域 + if (_this.areaManager.isPluginStatusUpdate('PanelIcon')) { + _this.forceUpdate(); + } + }; + + _this.handlePluginChange = function (key) { + _this.setState({ + activeKey: key + }); + }; + + _this.editor = props.editor; + _this.areaManager = new AreaManager(_this.editor, 'leftArea'); + _this.state = { + activeKey: 'none' + }; + return _this; } var _proto = LeftAreaPanel.prototype; + _proto.componentDidMount = function componentDidMount() { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + this.editor.on('leftPanel.show', this.handlePluginChange); + }; + + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + this.editor.off('leftPanel.show', this.handlePluginChange); + }; + _proto.render = function render() { - return React.createElement("div", { - className: "lowcode-left-area-panel" - }); + var _this2 = this; + + var activeKey = this.state.activeKey; + var list = this.areaManager.getVisiblePluginList('PanelIcon'); + return React.createElement(Fragment, null, list.map(function (item) { + var Comp = _this2.areaManager.getPluginClass(item.pluginKey); + + if (Comp) { + return React.createElement(Panel, _extends({ + key: item.pluginKey, + visible: item.pluginKey === activeKey + }, item.props && item.props.panelProps), React.createElement(Comp, _extends({ + editor: _this2.editor, + config: item + }, item.pluginProps))); + } + + return null; + })); }; return LeftAreaPanel; }(PureComponent); -LeftAreaPanel.displayName = 'lowcodeLeftAreaPanel'; +LeftAreaPanel.displayName = 'LowcodeLeftAreaPanel'; export { LeftAreaPanel as default }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/layouts/RightArea/index.d.ts b/packages/editor-skeleton/es/layouts/RightArea/index.d.ts index ad87a57de..8ecf5b466 100644 --- a/packages/editor-skeleton/es/layouts/RightArea/index.d.ts +++ b/packages/editor-skeleton/es/layouts/RightArea/index.d.ts @@ -1,7 +1,24 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class RightArea extends PureComponent { - static displayName: string; - constructor(props: any); - render(): JSX.Element; +export interface RightAreaProps { + editor: Editor; +} +export interface RightAreaState { + activeKey: string; +} +export default class RightArea extends PureComponent { + static displayName: string; + private editor; + private areaManager; + constructor(props: any); + componentDidMount(): void; + componentWillUnmount(): void; + handleSkeletonUpdate: () => void; + handlePluginChange: (key: string, isinit?: boolean) => void; + renderTabTitle: (config: PluginConfig) => any; + renderTabPanels: (list: PluginConfig[], height: string) => any; + renderPanels: (list: PluginConfig[], height: string) => any; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/RightArea/index.js b/packages/editor-skeleton/es/layouts/RightArea/index.js index d1d38689d..f66672d48 100644 --- a/packages/editor-skeleton/es/layouts/RightArea/index.js +++ b/packages/editor-skeleton/es/layouts/RightArea/index.js @@ -1,24 +1,218 @@ +import _Tab from "@alifd/next/es/tab"; +import _extends from "@babel/runtime/helpers/extends"; +import _Badge from "@alifd/next/es/badge"; +import _Icon from "@alifd/next/es/icon"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; +import classNames from 'classnames'; +import { AreaManager, utils } from '@ali/lowcode-editor-framework'; import './index.scss'; +var isEmpty = utils.isEmpty; var RightArea = /*#__PURE__*/function (_PureComponent) { _inheritsLoose(RightArea, _PureComponent); function RightArea(props) { - return _PureComponent.call(this, props) || this; + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.editor = void 0; + _this.areaManager = void 0; + + _this.handleSkeletonUpdate = function () { + // 当前区域插件状态改变是更新区域 + if (_this.areaManager.isPluginStatusUpdate()) { + var activeKey = _this.state.activeKey; + + var activePluginStatus = _this.areaManager.getPluginStatus(activeKey); + + if (activePluginStatus && activePluginStatus.visible) { + _this.forceUpdate(); + } else { + var currentPlugin = _this.areaManager.getPlugin(activeKey); + + if (currentPlugin) { + currentPlugin.close().then(function () { + _this.setState({ + activeKey: '' + }, function () { + var visiblePluginList = _this.areaManager.getVisiblePluginList('TabPanel'); + + var firstPlugin = visiblePluginList && visiblePluginList[0]; + + if (firstPlugin) { + _this.handlePluginChange(firstPlugin.pluginKey); + } + }); + }); + } + } + } + }; + + _this.handlePluginChange = function (key, isinit) { + var activeKey = _this.state.activeKey; + + var currentPlugin = _this.areaManager.getPlugin(activeKey); + + var nextPlugin = _this.areaManager.getPlugin(key); + + var openPlugin = function openPlugin() { + if (!nextPlugin) { + console.error("plugin " + key + " has not regist in the editor"); + return; + } + + nextPlugin.open().then(function () { + _this.editor.set('rightNav', key); + + _this.setState({ + activeKey: key + }); + }); + }; + + if (key === activeKey && !isinit) return; + + if (currentPlugin) { + currentPlugin.close().then(function () { + openPlugin(); + }); + } else { + openPlugin(); + } + }; + + _this.renderTabTitle = function (config) { + var _ref = config.props || {}, + icon = _ref.icon, + title = _ref.title; + + var pluginStatus = _this.editor.pluginStatus[config.pluginKey]; + var marked = pluginStatus.marked, + disabled = pluginStatus.disabled, + locked = pluginStatus.locked; + var active = _this.state.activeKey === config.pluginKey; + + var renderTitle = function renderTitle() { + return React.createElement("div", { + className: classNames('right-plugin-title', { + active: active, + locked: locked, + disabled: disabled + }) + }, !!icon && React.createElement(_Icon, { + size: "xs", + type: icon + }), title); + }; + + if (marked) { + return React.createElement(_Badge, { + dot: true + }, renderTitle()); + } + + return renderTitle(); + }; + + _this.renderTabPanels = function (list, height) { + if (isEmpty(list)) { + return null; + } + + return React.createElement(_Tab, { + className: "right-tabs", + style: { + height: height + }, + activeKey: _this.state.activeKey, + lazyLoad: false, + onChange: _this.handlePluginChange + }, list.map(function (item) { + var Comp = _this.areaManager.getPluginClass(item.pluginKey); + + if (Comp) { + return React.createElement(_Tab.Item, { + key: item.pluginKey, + title: _this.renderTabTitle(item), + disabled: _this.editor.pluginStatus[item.pluginKey].disabled, + style: { + width: 100 / list.length + "%" + } + }, React.createElement(Comp, _extends({ + editor: _this.editor, + config: item + }, item.pluginProps))); + } + + return null; + })); + }; + + _this.renderPanels = function (list, height) { + return list.map(function (item) { + var Comp = _this.areaManager.getPluginClass(item.pluginKey); + + if (Comp) { + return React.createElement("div", { + className: "right-panel", + style: { + height: height + }, + key: item.pluginKey + }, React.createElement(Comp, _extends({ + editor: _this.editor, + config: item + }, item.pluginProps))); + } + + return null; + }); + }; + + _this.editor = props.editor; + _this.areaManager = new AreaManager(_this.editor, 'rightArea'); + _this.state = { + activeKey: '' + }; + return _this; } var _proto = RightArea.prototype; + _proto.componentDidMount = function componentDidMount() { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + this.editor.on('rightNav.change', this.handlePluginChange); + var visiblePluginList = this.areaManager.getVisiblePluginList('TabPanel'); + var defaultKey = visiblePluginList[0] && visiblePluginList[0].pluginKey || 'componentAttr'; + this.handlePluginChange(defaultKey, true); + }; + + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + this.editor.off('rightNav.change', this.handlePluginChange); + }; + _proto.render = function render() { + var tabList = this.areaManager.getVisiblePluginList('TabPanel'); + var panelList = this.areaManager.getVisiblePluginList('Panel'); + + if (isEmpty(panelList) && isEmpty(tabList)) { + return null; + } else if (tabList.length === 1) { + panelList.unshift(tabList[0]); + tabList.splice(0, 1); + } + + var height = Math.floor(100 / (panelList.length + (tabList.length > 0 ? 1 : 0))) + "%"; return React.createElement("div", { className: "lowcode-right-area" - }); + }, this.renderTabPanels(tabList, height), this.renderPanels(panelList, height)); }; return RightArea; }(PureComponent); -RightArea.displayName = 'lowcodeRightArea'; +RightArea.displayName = 'LowcodeRightArea'; export { RightArea as default }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/layouts/RightArea/index.scss b/packages/editor-skeleton/es/layouts/RightArea/index.scss index 120ef4f11..7373933b0 100644 --- a/packages/editor-skeleton/es/layouts/RightArea/index.scss +++ b/packages/editor-skeleton/es/layouts/RightArea/index.scss @@ -1,155 +1,37 @@ .lowcode-right-area { - width: 300px; + width: 262px; height: 100%; - background-color: #ffffff; - border-left: 1px solid #e8ebee; - .right-plugin-title { - &.locked { - color: red !important; - } - &.active { - color: $color-brand1-9 !important; - } - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - } + background-color: $card-background; + border-left: 2px solid $color-line1-1; + + .right-panel { + overflow: auto; + // border-top: 2px solid $color-line1-1; } //tab定义 - .next-tabs-wrapped.right-tabs { - display: flex; - flex-direction: column; - margin-top: -1px; - .next-tabs-bar { - z-index: 1; - } + .right-tabs.next-tabs { .next-tabs-nav { - display: block; - .next-tabs-tab { - &:first-child { - border-left: none; - } - font-size: 14px; + width: 100%; + .next-tabs-tab-inner { + padding-left: 0; + padding-right: 0; + } + .right-plugin-title { text-align: center; - border-right: none !important; - margin-right: 0 !important; - width: 25%; + &.locked { + color: red !important; + } &.active { - background: none; - border-bottom-color: #f7f7f7 !important; + color: $color-brand1-9 !important; } - } - } - } - .next-tabs-content { - flex: 1; - .next-tabs-tabpane.active { - height: 100%; - overflow-y: auto; - } - } - //组件 - .select-comp { - padding: 10px 16px; - line-height: 16px; - color: #989a9c; - & > span { - font-size: 12px; - line-height: 16px; - font-weight: 400; - } - & > .btn-wrap, - & > .next-btn { - width: auto; - margin: 0 5px; - float: right; - } - } - - .unselected { - padding: 60px 0; - text-align: center; - } - //右侧属性面板样式调整; - .offset-56 { - padding-left: 56px; - margin-bottom: 16px; - overflow: hidden; - } - .fixedSpan.next-form-item { - & > .next-form-item-label { - width: 56px; - flex: none; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - & > .next-form-item-control { - padding-right: 24px; - } - } - .fixedSpan.next-form-item, - .offset-56 .next-form-item { - display: flex; - & > .next-form-item-control { - width: auto; - flex: 1; - max-width: none; - .next-input, - .next-select, - .next-radio-group, - .next-number-picker, - .luna-reactnode-btn, - .luna-monaco-button button, - .luna-object-button button { - width: 100%; - } - .next-number-picker { - width: 100%; - .next-after { - padding-right: 5px; + &.disabled { + cursor: not-allowed; + color: $color-text1-1; } - } - .next-radio-group { - display: flex; - label { - flex: 1; - text-align: center; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - } - } - .topSpan.next-form-item { - margin-bottom: 4px; - & > .next-form-item-control { - padding-right: 24px; - .next-input, - .next-select, - .next-radio-group, - .next-number-picker, - .luna-reactnode-btn, - .luna-monaco-button button, - .luna-object-button button { - width: 100%; - } - .next-number-picker { - width: 100%; - .next-after { - padding-right: 5px; - } - } - .next-radio-group { - display: flex; - label { - flex: 1; - text-align: center; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + .next-icon { + line-height: 15px; + margin-right: 2px; } } } diff --git a/packages/editor-skeleton/es/layouts/TopArea/index.d.ts b/packages/editor-skeleton/es/layouts/TopArea/index.d.ts index e800a1e74..658aea93d 100644 --- a/packages/editor-skeleton/es/layouts/TopArea/index.d.ts +++ b/packages/editor-skeleton/es/layouts/TopArea/index.d.ts @@ -1,11 +1,18 @@ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class TopArea extends PureComponent { +export interface TopAreaProps { + editor: Editor; +} +export default class TopArea extends PureComponent { static displayName: string; + private areaManager; + private editor; constructor(props: any); componentDidMount(): void; componentWillUnmount(): void; - handlePluginStatusChange: () => void; - renderPluginList: (list?: any[]) => JSX.Element[]; - render(): JSX.Element; + handleSkeletonUpdate: () => void; + renderPluginList: (list?: PluginConfig[]) => any[]; + render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/TopArea/index.js b/packages/editor-skeleton/es/layouts/TopArea/index.js index c82eefc61..edc1e793a 100644 --- a/packages/editor-skeleton/es/layouts/TopArea/index.js +++ b/packages/editor-skeleton/es/layouts/TopArea/index.js @@ -1,6 +1,7 @@ import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import _Grid from "@alifd/next/es/grid"; import React, { PureComponent } from 'react'; +import { AreaManager } from '@ali/lowcode-editor-framework'; import TopPlugin from '../../components/TopPlugin'; import './index.scss'; var Row = _Grid.Row, @@ -13,8 +14,15 @@ var TopArea = /*#__PURE__*/function (_PureComponent) { var _this; _this = _PureComponent.call(this, props) || this; + _this.areaManager = void 0; + _this.editor = void 0; - _this.handlePluginStatusChange = function () {}; + _this.handleSkeletonUpdate = function () { + // 当前区域插件状态改变是更新区域 + if (_this.areaManager.isPluginStatusUpdate()) { + _this.forceUpdate(); + } + }; _this.renderPluginList = function (list) { if (list === void 0) { @@ -23,41 +31,48 @@ var TopArea = /*#__PURE__*/function (_PureComponent) { return list.map(function (item, idx) { var isDivider = item.type === 'Divider'; + + var PluginClass = _this.areaManager.getPluginClass(item.pluginKey); + return React.createElement(Col, { className: isDivider ? 'divider' : '', key: isDivider ? idx : item.pluginKey, style: { - width: item.props && item.props.width || 40, + width: item.props && item.props.width || 36, flex: 'none' } }, !isDivider && React.createElement(TopPlugin, { config: item, - pluginClass: _this.editor.pluginComponents[item.pluginKey], - status: _this.editor.pluginStatus[item.pluginKey] + pluginClass: PluginClass, + editor: _this.editor })); }); }; _this.editor = props.editor; - _this.config = _this.editor.config.plugins && _this.editor.config.plugins.topArea; + _this.areaManager = new AreaManager(props.editor, 'topArea'); return _this; } var _proto = TopArea.prototype; - _proto.componentDidMount = function componentDidMount() {}; + _proto.componentDidMount = function componentDidMount() { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + }; - _proto.componentWillUnmount = function componentWillUnmount() {}; + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + }; _proto.render = function render() { - if (!this.config) return null; var leftList = []; var rightList = []; - this.config.forEach(function (item) { + var visiblePluginList = this.areaManager.getVisiblePluginList(); + visiblePluginList.forEach(function (item) { var align = item.props && item.props.align === 'right' ? 'right' : 'left'; // 分隔符不允许相邻 if (item.type === 'Divider') { - var currentList = align === 'right' ? rightList : leftList; + var currList = align === 'right' ? rightList : leftList; if (currList.length === 0 || currList[currList.length - 1].type === 'Divider') return; } @@ -71,13 +86,15 @@ var TopArea = /*#__PURE__*/function (_PureComponent) { className: "lowcode-top-area" }, React.createElement("div", { className: "left-area" - }, this.renderPluginList(leftList)), React.createElement("div", { - classname: "right-area" - }, this.renderPluginList(rightList))); + }, React.createElement(Row, null, this.renderPluginList(leftList))), React.createElement("div", { + className: "right-area" + }, React.createElement(Row, { + justify: "end" + }, this.renderPluginList(rightList)))); }; return TopArea; }(PureComponent); -TopArea.displayName = 'lowcodeTopArea'; +TopArea.displayName = 'LowcodeTopArea'; export { TopArea as default }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/layouts/TopArea/index.scss b/packages/editor-skeleton/es/layouts/TopArea/index.scss index ca8bbd825..c0a132f84 100644 --- a/packages/editor-skeleton/es/layouts/TopArea/index.scss +++ b/packages/editor-skeleton/es/layouts/TopArea/index.scss @@ -1,5 +1,30 @@ .lowcode-top-area { - height: 48px; - background-color: #ffffff; - border-bottom: 1px solid #e8ebee; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 50px; + background-color: $card-background; + border-bottom: 2px solid $color-line1-1; + user-select: none; + .divider { + max-width: 0; + margin: 12px 16px; + height: 24px; + border-right: 1px solid $color-line1-2; + } + .next-col { + text-align: center; + } + .left-area { + padding: 0 16px; + } + .right-area { + position: absolute; + right: 0; + top: 0; + padding: 0 16px; + height: 100%; + background: $card-background; + } } diff --git a/packages/editor-skeleton/es/locale/en-US.js b/packages/editor-skeleton/es/locale/en-US.js index f190625da..7c645e42f 100644 --- a/packages/editor-skeleton/es/locale/en-US.js +++ b/packages/editor-skeleton/es/locale/en-US.js @@ -1,10 +1 @@ -export default { - loading: 'loading...', - rejectRedirect: 'Redirect is not allowed', - expand: 'Unfold', - fold: 'Fold', - pageNotExist: 'The current Page not exist', - enterFromAppCenter: 'Please enter from the app center', - noPermission: 'Sorry, you do not have the develop permission', - getPermission: 'Please connect the app owners {owners} to get the permission' -}; \ No newline at end of file +export default {}; \ No newline at end of file diff --git a/packages/editor-skeleton/es/locale/zh-CN.js b/packages/editor-skeleton/es/locale/zh-CN.js index 51791f741..7c645e42f 100644 --- a/packages/editor-skeleton/es/locale/zh-CN.js +++ b/packages/editor-skeleton/es/locale/zh-CN.js @@ -1,10 +1 @@ -export default { - loading: '加载中...', - rejectRedirect: '开发中,已阻止发生跳转', - expand: '展开', - fold: '收起', - pageNotExist: '当前访问地址不存在', - enterFromAppCenter: '请从应用中心入口重新进入', - noPermission: '抱歉,您暂无开发权限', - getPermission: '请移步应用中心申请开发权限, 或联系 {owners} 开通权限' -}; \ No newline at end of file +export default {}; \ No newline at end of file diff --git a/packages/editor-skeleton/es/style.js b/packages/editor-skeleton/es/style.js index 7f81d0018..36f598306 100644 --- a/packages/editor-skeleton/es/style.js +++ b/packages/editor-skeleton/es/style.js @@ -1,8 +1,9 @@ import '@alifd/next/es/config-provider/style'; import '@alifd/next/es/loading/style'; +import '@ali/lowcode-editor-framework/es/style'; import '@alifd/next/es/grid/style'; import '@alifd/next/es/balloon/style'; import '@alifd/next/es/dialog/style'; import '@alifd/next/es/badge/style'; -import '@alifd/next/es/button/style'; -import '@alifd/next/es/icon/style'; \ No newline at end of file +import '@alifd/next/es/icon/style'; +import '@alifd/next/es/tab/style'; \ No newline at end of file diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index 1320d2903..4fa9dfb69 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -1,5 +1,5 @@ { - "name": "@ali/lowcode-engine-skeleton", + "name": "@ali/lowcode-editor-skeleton", "version": "0.0.1", "description": "alibaba lowcode editor skeleton", "files": [ @@ -24,15 +24,13 @@ ], "author": "xiayang.xy", "dependencies": { + "@ali/lowcode-editor-framework": "0.0.1", "@alifd/next": "^1.x", - "@icedesign/theme": "^1.x", - "@types/react": "^16.8.3", - "@types/react-dom": "^16.8.2", - "moment": "^2.23.0", "prop-types": "^15.5.8", - "react": "^16.4.1", - "react-dom": "^16.4.1", - "react-router-dom": "^5.0.1" + "react": "^16.8.1", + "react-dom": "^16.8.1", + "react-router-dom": "^5.1.2", + "store": "^2.0.12" }, "devDependencies": { "@alib/build-scripts": "^0.1.3", diff --git a/packages/editor-skeleton/src/components/LeftIcon/index.scss b/packages/editor-skeleton/src/components/LeftIcon/index.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/editor-skeleton/src/components/LeftIcon/index.tsx b/packages/editor-skeleton/src/components/LeftIcon/index.tsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/editor-skeleton/src/components/LeftPlugin/index.scss b/packages/editor-skeleton/src/components/LeftPlugin/index.scss index 9c6922129..37b79669b 100644 --- a/packages/editor-skeleton/src/components/LeftPlugin/index.scss +++ b/packages/editor-skeleton/src/components/LeftPlugin/index.scss @@ -1,59 +1,60 @@ -.luna-left-addon { - font-size: 16px; +.lowcode-left-plugin { + font-size: 20px; text-align: center; - line-height: 36px; - height: 36px; + line-height: 44px; + height: 44px; position: relative; cursor: pointer; transition: all 0.3s ease; - color: #777; - &.collapse { - height: 40px; - color: #8c8c8c; - border-bottom: 1px solid #bfbfbf; - } + color: $color-text1-3; &.locked { color: red !important; } - &.active { - color: #fff !important; - background-color: $color-brand1-9 !important; - &.disabled { - color: #fff; - background-color: $color-fill1-7; - } - } - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - } &:hover { - background-color: $color-brand1-1; color: $color-brand1-6; &:before { content: attr(data-tooltip); display: block; position: absolute; - left: 50px; - top: 5px; + left: 45px; + top: 8px; line-height: 18px; font-size: 12px; white-space: nowrap; padding: 6px 8px; border-radius: 4px; - background: rgba(0, 0, 0, 0.75); - color: #fff; + background: $balloon-normal-color-bg; + border: 1px solid $balloon-normal-color-border; + opacity: 0.8; + color: $color-text1-3; z-index: 100; } &:after { content: ''; display: block; position: absolute; + width: 10px; + height: 10px; + transform: rotate(45deg); left: 40px; - top: 15px; - border: 5px solid transparent; - border-right-color: rgba(0, 0, 0, 0.75); + top: 18px; + background: $balloon-normal-color-bg; + border-left: 1px solid $balloon-normal-color-border; + border-bottom: 1px solid $balloon-normal-color-border; z-index: 100; } } + &.active { + color: $color-brand1-9; + &.disabled { + color: $color-text1-1; + } + &:hover { + color: $color-brand1-6; + } + } + &.disabled { + cursor: not-allowed; + color: $color-text1-1; + } } diff --git a/packages/editor-skeleton/src/components/LeftPlugin/index.tsx b/packages/editor-skeleton/src/components/LeftPlugin/index.tsx index d9a637a21..66b718226 100644 --- a/packages/editor-skeleton/src/components/LeftPlugin/index.tsx +++ b/packages/editor-skeleton/src/components/LeftPlugin/index.tsx @@ -1,79 +1,74 @@ import React, { PureComponent, Fragment } from 'react'; - -import PropTypes from 'prop-types'; import classNames from 'classnames'; -import AppContext from '@ali/iceluna-sdk/lib/context/appContext'; -import { Balloon, Dialog, Icon, Badge } from '@alife/next'; - +import { Balloon, Dialog, Icon, Badge } from '@alifd/next'; +import Editor from '@ali/lowcode-editor-framework'; +import { + PluginConfig, + PluginClass, +} from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class LeftAddon extends PureComponent { - static displayName = 'LunaLeftAddon'; - static propTypes = { - active: PropTypes.bool, - config: PropTypes.shape({ - addonKey: PropTypes.string, - addonProps: PropTypes.object, - props: PropTypes.object, - type: PropTypes.oneOf([ - 'DialogIcon', - 'BalloonIcon', - 'PanelIcon', - 'LinkIcon', - 'Icon', - 'Custom', - ]), - }), - disabled: PropTypes.bool, - dotted: PropTypes.bool, - locked: PropTypes.bool, - onClick: PropTypes.func, - }; + +export interface LeftPluginProps { + active?: boolean; + config: PluginConfig; + disabled?: boolean; + editor: Editor; + locked?: boolean; + marked?: boolean; + onClick?: () => void; + pluginClass: PluginClass | undefined; +} + +export interface LeftPluginState { + dialogVisible: boolean; +} + +export default class LeftPlugin extends PureComponent< + LeftPluginProps, + LeftPluginState +> { + static displayName = 'LowcodeLeftPlugin'; + static defaultProps = { active: false, config: {}, disabled: false, - dotted: false, + marked: false, locked: false, - onClick: () => {}, + onClick: (): void => {}, }; - static contextType = AppContext; constructor(props, context) { super(props, context); this.state = { dialogVisible: false, }; - this.appHelper = context.appHelper; - this.utils = this.appHelper.utils; - this.constants = this.appHelper.constants; } - componentDidMount() { - const { config } = this.props; - const addonKey = config && config.addonKey; - const appHelper = this.appHelper; - if (appHelper && addonKey) { - appHelper.on(`${addonKey}.dialog.show`, this.handleShow); - appHelper.on(`${addonKey}.dialog.close`, this.handleClose); + componentDidMount(): void { + const { config, editor } = this.props; + const pluginKey = config && config.pluginKey; + if (editor && pluginKey) { + editor.on(`${pluginKey}.dialog.show`, this.handleShow); + editor.on(`${pluginKey}.dialog.close`, this.handleClose); } } - componentWillUnmount() { - const { config } = this.props; - const appHelper = this.appHelper; - const addonKey = config && config.addonKey; - if (appHelper && addonKey) { - appHelper.off(`${addonKey}.dialog.show`, this.handleShow); - appHelper.off(`${addonKey}.dialog.close`, this.handleClose); + componentWillUnmount(): void { + const { config, editor } = this.props; + const pluginKey = config && config.pluginKey; + if (editor && pluginKey) { + editor.off(`${pluginKey}.dialog.show`, this.handleShow); + editor.off(`${pluginKey}.dialog.close`, this.handleClose); } } - handleClose = () => { - const addonKey = this.props.config && this.props.config.addonKey; - const currentAddon = - this.appHelper.addons && this.appHelper.addons[addonKey]; - if (currentAddon) { - this.utils.transformToPromise(currentAddon.close()).then(() => { + handleClose = (): void => { + const { config, editor } = this.props; + const pluginKey = config && config.pluginKey; + const plugin = editor.plugins && editor.plugins[pluginKey]; + if (plugin) { + plugin.close().then((): void => { this.setState({ dialogVisible: false, }); @@ -81,43 +76,48 @@ export default class LeftAddon extends PureComponent { } }; - handleOpen = () => { + handleOpen = (): void => { // todo 对话框类型的插件初始时拿不到插件实例 this.setState({ dialogVisible: true, }); }; - handleShow = () => { - const { disabled, config, onClick } = this.props; - const addonKey = config && config.addonKey; - if (disabled || !addonKey) return; - //考虑到弹窗情况,延时发送消息 - setTimeout(() => this.appHelper.emit(`${addonKey}.addon.activate`), 0); + handleShow = (): void => { + const { disabled, config, onClick, editor } = this.props; + const pluginKey = config && config.pluginKey; + if (disabled || !pluginKey) return; this.handleOpen(); - onClick && onClick(); + // 考虑到弹窗情况,延时发送消息 + setTimeout((): void => { + editor.emit(`${pluginKey}.plugin.activate`); + }, 0); + if (onClick) { + onClick(); + } }; - renderIcon = clickCallback => { - const { active, disabled, dotted, locked, onClick, config } = this.props; - const { addonKey, props } = config || {}; + renderIcon = (clickCallback): React.ReactNode => { + const { active, disabled, marked, locked, onClick, config } = this.props; + const { pluginKey, props } = config || {}; const { icon, title } = props || {}; return (
{ + onClick={(): void => { if (disabled) return; - //考虑到弹窗情况,延时发送消息 + // 考虑到弹窗情况,延时发送消息 clickCallback && clickCallback(); + onClick && onClick(); }} > - {dotted ? ( + {marked ? ( @@ -128,67 +128,66 @@ export default class LeftAddon extends PureComponent { ); }; - render() { - const { dotted, locked, active, disabled, config } = this.props; - const { addonKey, props, type, addonProps } = config || {}; + render(): React.ReactNode { + const { + marked, + locked, + active, + disabled, + config, + editor, + pluginClass: Comp, + } = this.props; + const { pluginKey, props, type, pluginProps } = config || {}; const { onClick, title } = props || {}; const { dialogVisible } = this.state; - const { appHelper, components } = this.context; - if (!addonKey || !type || !props) return null; - const componentName = appHelper.utils.generateAddonCompName(addonKey); - const localeProps = {}; - const { locale, messages } = appHelper; - if (locale) { - localeProps.locale = locale; - } - if (messages && messages[componentName]) { - localeProps.messages = messages[componentName]; - } - const AddonComp = components && components[componentName]; - const node = - (AddonComp && ( - { - onClick && onClick.call(null, appHelper); - }} - {...localeProps} - {...(addonProps || {})} - /> - )) || - null; + if (!pluginKey || !type || !props) return null; + const node = Comp ? ( + { + onClick && onClick.call(null, editor); + }} + {...pluginProps} + /> + ) : null; switch (type) { case 'LinkIcon': return ( - {this.renderIcon(() => { - onClick && onClick.call(null, appHelper); + {this.renderIcon((): void => { + onClick && onClick.call(null, editor); })} ); case 'Icon': - return this.renderIcon(() => { - onClick && onClick.call(null, appHelper); + return this.renderIcon((): void => { + onClick && onClick.call(null, editor); }); case 'DialogIcon': return ( - {this.renderIcon(() => { - onClick && onClick.call(null, appHelper); + {this.renderIcon((): void => { + onClick && onClick.call(null, editor); this.handleOpen(); })} { - appHelper.emit(`${addonKey}.dialog.onOk`); + onOk={(): void => { + editor.emit(`${pluginKey}.dialog.onOk`); this.handleClose(); }} onCancel={this.handleClose} onClose={this.handleClose} title={title} + style={{ + width: 500, + ...(props.dialogProps && props.dialogProps.style), + }} {...(props.dialogProps || {})} visible={dialogVisible} > @@ -199,8 +198,8 @@ export default class LeftAddon extends PureComponent { case 'BalloonIcon': return ( { - onClick && onClick.call(null, appHelper); + trigger={this.renderIcon((): void => { + onClick && onClick.call(null, editor); })} align="r" triggerType={['click', 'hover']} @@ -210,12 +209,11 @@ export default class LeftAddon extends PureComponent { ); case 'PanelIcon': - return this.renderIcon(() => { - onClick && onClick.call(null, appHelper); - this.handleOpen(); + return this.renderIcon((): void => { + onClick && onClick.call(null, editor); }); case 'Custom': - return dotted ? {node} : node; + return marked ? {node} : node; default: return null; } diff --git a/packages/editor-skeleton/src/components/Panel/index.scss b/packages/editor-skeleton/src/components/Panel/index.scss new file mode 100644 index 000000000..8a9660638 --- /dev/null +++ b/packages/editor-skeleton/src/components/Panel/index.scss @@ -0,0 +1,52 @@ +.lowcode-panel { + user-select: none; + overflow: hidden; + position: relative; + background: $card-background; + transition: width 0.3s ease; + transform: translate3d(0, 0, 0); + height: 100%; + &.visible { + border-right: 1px solid $color-line1-1; + } + .drag-area { + display: none; + } + &.floatable { + position: absolute; + top: 0; + bottom: 0; + z-index: 999; + } + &.draggable { + .drag-area { + display: block; + width: 10px; + position: absolute; + top: 0; + bottom: 0; + cursor: col-resize; + z-index: 9999; + } + &.left { + .drag-area { + right: 0; + } + } + &.right { + .drag-area { + left: 0; + } + } + } + &.left { + &.floatable { + left: 50px; + } + } + &.right { + &.floatable { + right: 48px; + } + } +} diff --git a/packages/editor-skeleton/src/components/Panel/index.tsx b/packages/editor-skeleton/src/components/Panel/index.tsx index e69de29bb..6cdb1bd40 100644 --- a/packages/editor-skeleton/src/components/Panel/index.tsx +++ b/packages/editor-skeleton/src/components/Panel/index.tsx @@ -0,0 +1,60 @@ +import React, { PureComponent } from 'react'; +import classNames from 'classnames'; + +import './index.scss'; + +export interface PanelProps { + align: 'left' | 'right'; + defaultWidth: number; + minWidth: number; + draggable: boolean; + floatable: boolean; + children: Plugin; + visible: boolean; +} + +export interface PanelState { + width: number; +} + +export default class Panel extends PureComponent { + static displayName = 'LowcodePanel'; + + static defaultProps = { + align: 'left', + defaultWidth: 240, + minWidth: 100, + draggable: true, + floatable: false, + visible: true, + }; + + constructor(props) { + super(props); + + this.state = { + width: props.defaultWidth, + }; + } + + render(): React.ReactNode { + const { align, draggable, floatable, visible } = this.props; + const { width } = this.state; + return ( +
+ {this.props.children} +
+
+ ); + } +} diff --git a/packages/editor-skeleton/src/components/TopIcon/index.scss b/packages/editor-skeleton/src/components/TopIcon/index.scss index 1cb3bdfdf..4a826b05f 100644 --- a/packages/editor-skeleton/src/components/TopIcon/index.scss +++ b/packages/editor-skeleton/src/components/TopIcon/index.scss @@ -1,22 +1,68 @@ -.next-btn.next-large.lowcode-top-btn { +.lowcode-top-icon { + display: inline-block; width: 44px; - height: 44px; - padding: 0; - margin: 4px -2px; - text-align: center; - border-radius: 8px; - border: 1px solid transparent; - color: #777; + font-size: 20px; + line-height: 48px; + color: $color-text1-3; + position: relative; &.disabled { cursor: not-allowed; color: $color-text1-1; + &:hover { + color: $color-text1-1; + } + } + &.active { + color: $color-brand1-9; + &:hover { + color: $color-brand1-6; + } } &.locked { color: red !important; } + &:hover { + color: $color-brand1-6; + &:before { + content: attr(data-tooltip); + display: block; + height: auto; + width: auto; + position: absolute; + left: 50%; + transform: translate(-50%, 0); + bottom: -32px; + line-height: 18px; + font-size: 12px; + white-space: nowrap; + padding: 6px 8px; + border-radius: 4px; + background: $balloon-normal-color-bg; + border: 1px solid $balloon-normal-color-border; + opacity: 0.8; + color: $color-text1-3; + z-index: 100; + } + &:after { + content: ''; + display: block; + position: absolute; + width: 10px; + height: 10px; + left: 50%; + transform: translate(-50%, 0) rotate(45deg); + bottom: -5px; + background: $balloon-normal-color-bg; + border-left: 1px solid $balloon-normal-color-border; + border-top: 1px solid $balloon-normal-color-border; + opacity: 1; + visibility: visible; + z-index: 100; + } + } i.next-icon { &:before { - font-size: 17px; + font-size: 16px; } margin-right: 0; line-height: 18px; diff --git a/packages/editor-skeleton/src/components/TopIcon/index.tsx b/packages/editor-skeleton/src/components/TopIcon/index.tsx index 8e81c9c3a..939f77ffc 100644 --- a/packages/editor-skeleton/src/components/TopIcon/index.tsx +++ b/packages/editor-skeleton/src/components/TopIcon/index.tsx @@ -1,23 +1,25 @@ import React, { PureComponent } from 'react'; - -import PropTypes from 'prop-types'; import classNames from 'classnames'; -import { Icon, Button } from '@alifd/next'; +import { Icon } from '@alifd/next'; + import './index.scss'; -export default class TopIcon extends PureComponent { - static displayName = 'TopIcon'; - static propTypes = { - active: PropTypes.bool, - className: PropTypes.string, - disabled: PropTypes.bool, - icon: PropTypes.string, - id: PropTypes.string, - locked: PropTypes.bool, - onClick: PropTypes.func, - showTitle: PropTypes.bool, - style: PropTypes.object, - title: PropTypes.string, - }; + +export interface TopIconProps { + active?: boolean; + className?: string; + disabled?: boolean; + icon: string; + id?: string; + locked?: boolean; + marked?: boolean; + onClick?: () => void; + style?: React.CSSProperties; + title?: string; +} + +export default class TopIcon extends PureComponent { + static displayName = 'LowcodeTopIcon'; + static defaultProps = { active: false, className: '', @@ -25,13 +27,12 @@ export default class TopIcon extends PureComponent { icon: '', id: '', locked: false, - onClick: () => {}, - showTitle: false, + onClick: (): void => {}, style: {}, title: '', }; - render() { + render(): React.ReactNode { const { active, disabled, @@ -41,28 +42,22 @@ export default class TopIcon extends PureComponent { className, id, style, - showTitle, onClick, } = this.props; return ( - + +
); } } diff --git a/packages/editor-skeleton/src/components/TopPlugin/index.tsx b/packages/editor-skeleton/src/components/TopPlugin/index.tsx index 04f5d0e59..2f00402d5 100644 --- a/packages/editor-skeleton/src/components/TopPlugin/index.tsx +++ b/packages/editor-skeleton/src/components/TopPlugin/index.tsx @@ -1,20 +1,43 @@ import React, { PureComponent, Fragment } from 'react'; -import PropTypes from 'prop-types'; -import TopIcon from '../TopIcon'; import { Balloon, Badge, Dialog } from '@alifd/next'; +import Editor from '@ali/lowcode-editor-framework'; +import { + PluginConfig, + PluginClass, +} from '@ali/lowcode-editor-framework/lib/definitions'; +import TopIcon from '../TopIcon'; import './index.scss'; -export default class TopPlugin extends PureComponent { - static displayName = 'lowcodeTopPlugin'; - + +export interface TopPluginProps { + active?: boolean; + config: PluginConfig; + disabled?: boolean; + editor: Editor; + locked?: boolean; + marked?: boolean; + onClick?: () => void; + pluginClass: PluginClass | undefined; +} + +export interface TopPluginState { + dialogVisible: boolean; +} + +export default class TopPlugin extends PureComponent< + TopPluginProps, + TopPluginState +> { + static displayName = 'LowcodeTopPlugin'; + static defaultProps = { active: false, config: {}, disabled: false, - dotted: false, + marked: false, locked: false, - onClick: () => {}, + onClick: (): void => {}, }; constructor(props, context) { @@ -24,42 +47,42 @@ export default class TopPlugin extends PureComponent { }; } - componentDidMount() { - const { config } = this.props; + componentDidMount(): void { + const { config, editor } = this.props; const pluginKey = config && config.pluginKey; - // const appHelper = this.appHelper; - // if (appHelper && addonKey) { - // appHelper.on(`${addonKey}.dialog.show`, this.handleShow); - // appHelper.on(`${addonKey}.dialog.close`, this.handleClose); - // } + if (editor && pluginKey) { + editor.on(`${pluginKey}.dialog.show`, this.handleShow); + editor.on(`${pluginKey}.dialog.close`, this.handleClose); + } } - componentWillUnmount() { - // const { config } = this.props; - // const addonKey = config && config.addonKey; - // const appHelper = this.appHelper; - // if (appHelper && addonKey) { - // appHelper.off(`${addonKey}.dialog.show`, this.handleShow); - // appHelper.off(`${addonKey}.dialog.close`, this.handleClose); - // } + componentWillUnmount(): void { + const { config, editor } = this.props; + const pluginKey = config && config.pluginKey; + if (editor && pluginKey) { + editor.off(`${pluginKey}.dialog.show`, this.handleShow); + editor.off(`${pluginKey}.dialog.close`, this.handleClose); + } } - handleShow = () => { - const { disabled, config, onClick } = this.props; - const addonKey = config && config.addonKey; - if (disabled || !addonKey) return; - //考虑到弹窗情况,延时发送消息 - setTimeout(() => this.appHelper.emit(`${addonKey}.addon.activate`), 0); + handleShow = (): void => { + const { disabled, config, onClick, editor } = this.props; + const pluginKey = config && config.pluginKey; + if (disabled || !pluginKey) return; this.handleOpen(); + // 考虑到弹窗情况,延时发送消息 + setTimeout((): void => { + editor.emit(`${pluginKey}.plugin.activate`); + }, 0); onClick && onClick(); }; - handleClose = () => { - const addonKey = this.props.config && this.props.config.addonKey; - const currentAddon = - this.appHelper.addons && this.appHelper.addons[addonKey]; - if (currentAddon) { - this.utils.transformToPromise(currentAddon.close()).then(() => { + handleClose = (): void => { + const { config, editor } = this.props; + const pluginKey = config && config.pluginKey; + const plugin = editor.plugins && editor.plugins[pluginKey]; + if (plugin) { + plugin.close().then((): void => { this.setState({ dialogVisible: false, }); @@ -67,85 +90,107 @@ export default class TopPlugin extends PureComponent { } }; - handleOpen = () => { + handleOpen = (): void => { // todo dialog类型的插件初始时拿不动插件实例 this.setState({ dialogVisible: true, }); }; - renderIcon = clickCallback => { - const { active, disabled, dotted, locked, config, onClick } = this.props; + renderIcon = (clickCallback): React.ReactNode => { + const { + active, + disabled, + marked, + locked, + config, + onClick, + editor, + } = this.props; const { pluginKey, props } = config || {}; const { icon, title } = props || {}; const node = ( { + onClick={(): void => { if (disabled) return; - //考虑到弹窗情况,延时发送消息 - setTimeout( - () => this.appHelper.emit(`${pluginKey}.addon.activate`), - 0, - ); + // 考虑到弹窗情况,延时发送消息 + setTimeout((): void => { + editor.emit(`${pluginKey}.plugin.activate`); + }, 0); clickCallback && clickCallback(); onClick && onClick(); }} /> ); - return dotted ? {node} : node; + return marked ? {node} : node; }; - render() { - const { active, dotted, locked, disabled, config, editor, pluginClass: Comp } = this.props; + render(): React.ReactNode { + const { + active, + marked, + locked, + disabled, + config, + editor, + pluginClass: Comp, + } = this.props; const { pluginKey, pluginProps, props, type } = config || {}; const { onClick, title } = props || {}; const { dialogVisible } = this.state; - if (!pluginKey || !type || !Comp) return null; - const node = { - onClick && onClick.call(null, editor); - }} - {...pluginProps} - />; + if (!pluginKey || !type) return null; + const node = Comp ? ( + { + onClick && onClick.call(null, editor); + }} + {...pluginProps} + /> + ) : null; switch (type) { case 'LinkIcon': return ( - {this.renderIcon(() => { + {this.renderIcon((): void => { onClick && onClick.call(null, editor); })} ); case 'Icon': - return this.renderIcon(() => { + return this.renderIcon((): void => { onClick && onClick.call(null, editor); }); case 'DialogIcon': return ( - {this.renderIcon(() => { + {this.renderIcon((): void => { onClick && onClick.call(null, editor); this.handleOpen(); })} { + onOk={(): void => { editor.emit(`${pluginKey}.dialog.onOk`); this.handleClose(); }} onCancel={this.handleClose} onClose={this.handleClose} title={title} + style={{ + width: 500, + ...(props.dialogProps && props.dialogProps.style), + }} {...props.dialogProps} visible={dialogVisible} > @@ -156,7 +201,7 @@ export default class TopPlugin extends PureComponent { case 'BalloonIcon': return ( { + trigger={this.renderIcon((): void => { onClick && onClick.call(null, editor); })} triggerType={['click', 'hover']} @@ -166,7 +211,7 @@ export default class TopPlugin extends PureComponent { ); case 'Custom': - return dotted ? {node} : node; + return marked ? {node} : node; default: return null; } diff --git a/packages/editor-skeleton/src/config/skeleton.ts b/packages/editor-skeleton/src/config/skeleton.ts index 9e3f6898f..ff8b4c563 100644 --- a/packages/editor-skeleton/src/config/skeleton.ts +++ b/packages/editor-skeleton/src/config/skeleton.ts @@ -1,21 +1 @@ -import Dashboard from '@/pages/Dashboard'; -import BasicLayout from '@/layouts/BasicLayout'; - -const routerConfig = [ - { - path: '/', - component: BasicLayout, - children: [ - { - path: '/dashboard', - component: Dashboard, - }, - { - path: '/', - redirect: '/dashboard', - }, - ], - }, -]; - -export default routerConfig; +export default {}; diff --git a/packages/editor-skeleton/src/config/utils.ts b/packages/editor-skeleton/src/config/utils.ts index e3c4c9e37..ff8b4c563 100644 --- a/packages/editor-skeleton/src/config/utils.ts +++ b/packages/editor-skeleton/src/config/utils.ts @@ -1,5 +1 @@ -// 菜单配置 - -const asideMenuConfig = []; - -export { asideMenuConfig }; +export default {}; diff --git a/packages/editor-skeleton/src/global.scss b/packages/editor-skeleton/src/global.scss index 0a710b895..a6b6aea91 100644 --- a/packages/editor-skeleton/src/global.scss +++ b/packages/editor-skeleton/src/global.scss @@ -7,7 +7,9 @@ body { * { box-sizing: border-box; } + color: $color-text1-3; } + .next-loading { .next-loading-wrap { height: 100%; @@ -16,18 +18,17 @@ body { .lowcode-editor { .lowcode-main-content { position: absolute; - top: 48px; + top: 50px; left: 0; right: 0; bottom: 0; display: flex; - background-color: #d8d8d8; + background-color: rgba(31, 56, 88, 0.06); } .lowcode-center-area { flex: 1; display: flex; flex-direction: column; - padding: 10px; overflow: auto; } } diff --git a/packages/editor-skeleton/src/index.tsx b/packages/editor-skeleton/src/index.tsx index 3f1c89522..b4a32480e 100644 --- a/packages/editor-skeleton/src/index.tsx +++ b/packages/editor-skeleton/src/index.tsx @@ -1,56 +1,147 @@ import React, { PureComponent } from 'react'; -// import Editor from '@ali/lowcode-engine-editor'; import { Loading, ConfigProvider } from '@alifd/next'; +import { HashRouter as Router, Route } from 'react-router-dom'; +import Editor, { utils } from '@ali/lowcode-editor-framework'; +import { + EditorConfig, + Utils, + PluginClassSet, +} from '@ali/lowcode-editor-framework/lib/definitions'; import defaultConfig from './config/skeleton'; +import skeletonUtils from './config/utils'; import TopArea from './layouts/TopArea'; import LeftArea from './layouts/LeftArea'; import CenterArea from './layouts/CenterArea'; import RightArea from './layouts/RightArea'; - import './global.scss'; -export default class Skeleton extends PureComponent { - static displayName = 'lowcodeEditorSkeleton'; +const { comboEditorConfig, parseSearch } = utils; - constructor(props) { - super(props); - // this.editor = new Editor(props.config, props.utils); - this.editor = { - on: () => {}, - off: () => {}, - config: props.config, - pluginComponents: props.pluginComponents +let renderIdx = 0; + +declare global { + interface Window { + __ctx: { + editor: Editor; + appHelper: Editor; + }; + } +} + +export interface SkeletonProps { + components: PluginClassSet; + config: EditorConfig; + history: object; + location: object; + match: object; + utils: Utils; +} + +export interface SkeletonState { + initReady?: boolean; + skeletonKey?: string; + __hasError?: boolean; +} + +export class Skeleton extends PureComponent { + static displayName = 'LowcodeEditorSkeleton'; + + static getDerivedStateFromError(): SkeletonState { + return { + __hasError: true, }; } - componentWillUnmount() { - // this.editor && this.editor.destroy(); - // this.editor = null; + private editor: Editor; + + constructor(props) { + super(props); + + this.state = { + initReady: false, + skeletonKey: `skeleton${renderIdx}`, + }; + + this.init(); } - render() { - const { location, history, messages } = this.props; - this.editor.location = location; - this.editor.history = history; - this.editor.messages = messages; + componentWillUnmount(): void { + this.editor && this.editor.destroy(); + } + + componentDidCatch(err): void { + console.error(err); + } + + init = (isReset: boolean = false): void => { + if (this.editor) { + this.editor.destroy(); + } + const { utils, config, components } = this.props; + const editor = new Editor( + comboEditorConfig(defaultConfig, config), + components, + { + ...skeletonUtils, + ...utils, + }, + ); + this.editor = editor; + // eslint-disable-next-line no-underscore-dangle + window.__ctx = { + editor, + appHelper: editor, + }; + editor.once('editor.reset', (): void => { + this.setState({ + initReady: false, + }); + editor.emit('editor.beforeReset'); + this.init(true); + }); + + this.editor.init().then((): void => { + this.setState( + { + initReady: true, + // 刷新IDE时生成新的skeletonKey保证插件生命周期重新执行 + skeletonKey: isReset + ? `skeleton${++renderIdx}` + : this.state.skeletonKey, + }, + (): void => { + editor.emit('editor.ready'); + editor.emit('ide.ready'); + isReset && editor.emit('ide.afterReset'); + }, + ); + }); + }; + + render(): React.ReactNode { + const { initReady, skeletonKey, __hasError } = this.state; + const { location, history, match } = this.props; + if (__hasError || !this.editor) { + return 'error'; + } + + location.query = parseSearch(location.search); + this.editor.set('location', location); + this.editor.set('history', history); + this.editor.set('match', match); + return ( - -
- + +
+
- - - - + + + +
@@ -58,3 +149,33 @@ export default class Skeleton extends PureComponent { ); } } + +// 通过React-Router包裹,支持编辑器内页面根据路由切换 +export interface SkeletonWithRouterProps { + components: PluginClassSet; + config: EditorConfig; + utils: Utils; +} + +const SkeletonWithRouter: React.FC = ( + props, +): React.ReactElement => { + const { config, ...otherProps } = props; + return ( + + ( + + )} + /> + + ); +}; + +export default SkeletonWithRouter; diff --git a/packages/editor-skeleton/src/layouts/CenterArea/index.scss b/packages/editor-skeleton/src/layouts/CenterArea/index.scss index b2584ed2b..40a1806a6 100644 --- a/packages/editor-skeleton/src/layouts/CenterArea/index.scss +++ b/packages/editor-skeleton/src/layouts/CenterArea/index.scss @@ -1,3 +1,3 @@ .lowcode-center-area { - padding: 12px; + padding: 0; } diff --git a/packages/editor-skeleton/src/layouts/CenterArea/index.tsx b/packages/editor-skeleton/src/layouts/CenterArea/index.tsx index dc2b38d25..2736b9005 100644 --- a/packages/editor-skeleton/src/layouts/CenterArea/index.tsx +++ b/packages/editor-skeleton/src/layouts/CenterArea/index.tsx @@ -1,15 +1,60 @@ import React, { PureComponent } from 'react'; - +import Editor, { AreaManager } from '@ali/lowcode-editor-framework'; import './index.scss'; -export default class CenterArea extends PureComponent { - static displayName = 'lowcodeCenterArea'; +export interface CenterAreaProps { + editor: Editor; +} + +export default class CenterArea extends PureComponent { + static displayName = 'LowcodeCenterArea'; + + private editor: Editor; + + private areaManager: AreaManager; constructor(props) { super(props); + this.editor = props.editor; + this.areaManager = new AreaManager(this.editor, 'centerArea'); } - render() { - return
; + componentDidMount(): void { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + } + + componentWillUnmount(): void { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + } + + handleSkeletonUpdate = (): void => { + // 当前区域插件状态改变是更新区域 + if (this.areaManager.isPluginStatusUpdate()) { + this.forceUpdate(); + } + }; + + render(): React.ReactNode { + const visiblePluginList = this.areaManager.getVisiblePluginList(); + return ( +
+ {visiblePluginList.map( + (item): React.ReactNode => { + const Comp = this.areaManager.getPluginClass(item.pluginKey); + if (Comp) { + return ( + + ); + } + return null; + }, + )} +
+ ); } } diff --git a/packages/editor-skeleton/src/layouts/LeftArea/index.scss b/packages/editor-skeleton/src/layouts/LeftArea/index.scss index dac1b6b0a..8c69f42fc 100644 --- a/packages/editor-skeleton/src/layouts/LeftArea/index.scss +++ b/packages/editor-skeleton/src/layouts/LeftArea/index.scss @@ -1,21 +1,23 @@ .lowcode-left-area-nav { - width: 48px; + width: 50px; height: 100%; - background: #ffffff; - border-right: 1px solid #e8ebee; + background-color: $card-background; + border-right: 2px solid $color-line1-1; position: relative; .top-area { position: absolute; top: 0; width: 100%; - background: #ffffff; + padding: 12px 0; + background-color: $card-background; max-height: 100%; } .bottom-area { position: absolute; - bottom: 20px; + bottom: 0; width: 100%; - background: #ffffff; + padding: 12px 0; + background-color: $card-background; max-height: calc(100% - 20px); } } diff --git a/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx b/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx index 6c58c12ef..3777fc57a 100644 --- a/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx +++ b/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx @@ -1,15 +1,148 @@ import React, { PureComponent } from 'react'; +import LeftPlugin from '../../components/LeftPlugin'; +import Editor, { utils, AreaManager } from '@ali/lowcode-editor-framework'; +import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class LeftAreaPanel extends PureComponent { - static displayName = 'lowcodeLeftAreaNav'; +const { isEmpty } = utils; + +export interface LeftAreaNavProps { + editor: Editor; +} + +export interface LeftAreaNavState { + activeKey: string; +} + +export default class LeftAreaNav extends PureComponent< + LeftAreaNavProps, + LeftAreaNavState +> { + static displayName = 'LowcodeLeftAreaNav'; + + private editor: Editor; + + private areaManager: AreaManager; constructor(props) { super(props); + this.editor = props.editor; + this.areaManager = new AreaManager(this.editor, 'leftArea'); + + this.state = { + activeKey: 'none', + }; } - render() { - return
; + componentDidMount(): void { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + this.editor.on('leftNav.change', this.handlePluginChange); + const visiblePanelPluginList = this.areaManager.getVisiblePluginList( + 'IconPanel', + ); + const defaultKey = + (visiblePanelPluginList[0] && visiblePanelPluginList[0].pluginKey) || + 'componentAttr'; + this.handlePluginChange(defaultKey); + } + + componentWillUnmount(): void { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + this.editor.off('leftNav.change', this.handlePluginChange); + } + + handleSkeletonUpdate = (): void => { + // 当前区域插件状态改变是更新区域 + if (this.areaManager.isPluginStatusUpdate()) { + this.forceUpdate(); + } + }; + + handlePluginChange = (key: string): void => { + const { activeKey } = this.state; + const plugins = this.editor.plugins; + const prePlugin = plugins[activeKey]; + const nextPlugin = plugins[key]; + if (activeKey === 'none') { + if (nextPlugin) { + nextPlugin.open().then((): void => { + this.updateActiveKey(key); + }); + } + } else if (activeKey === key) { + if (prePlugin) { + prePlugin.close().then((): void => { + this.updateActiveKey('none'); + }); + } + } else if (prePlugin) { + // 先关后开 + prePlugin.close().then((): void => { + if (nextPlugin) { + nextPlugin.open().then((): void => { + this.updateActiveKey(key); + }); + } + }); + } + }; + + handlePluginClick = (item: PluginConfig): void => { + if (item.type === 'PanelIcon') { + this.handlePluginChange(item.pluginKey); + } + }; + + updateActiveKey = (key: string): void => { + this.editor.set('leftNav', key); + this.setState({ activeKey: key }); + this.editor.emit('leftPanel.show', key); + }; + + renderPluginList = (list: PluginConfig[] = []): React.ReactElement[] => { + const { activeKey } = this.state; + return list.map( + (item): React.ReactElement => { + const pluginStatus = this.areaManager.getPluginStatus(item.pluginKey); + const pluginClass = this.areaManager.getPluginClass(item.pluginKey); + return ( + this.handlePluginClick(item)} + active={activeKey === item.pluginKey} + {...pluginStatus} + /> + ); + }, + ); + }; + + render(): React.ReactNode { + const topList: PluginConfig[] = []; + const bottomList: PluginConfig[] = []; + const visiblePluginList = this.areaManager.getVisiblePluginList(); + if (isEmpty(visiblePluginList)) { + return null; + } + visiblePluginList.forEach((item): void => { + const align = + item.props && item.props.align === 'bottom' ? 'bottom' : 'top'; + if (align === 'bottom') { + bottomList.push(item); + } else { + topList.push(item); + } + }); + + return ( +
+
{this.renderPluginList(bottomList)}
+
{this.renderPluginList(topList)}
+
+ ); } } diff --git a/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx b/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx index ab41860fb..0c62f07b2 100644 --- a/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx +++ b/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx @@ -1,15 +1,88 @@ -import React, { PureComponent } from 'react'; +import React, { PureComponent, Fragment } from 'react'; +import Editor, { AreaManager } from '@ali/lowcode-editor-framework'; +import Panel from '../../components/Panel'; import './index.scss'; -export default class LeftAreaPanel extends PureComponent { - static displayName = 'lowcodeLeftAreaPanel'; +export interface LeftAreaPanelProps { + editor: Editor; +} + +export interface LeftAreaPanelState { + activeKey: string; +} + +export default class LeftAreaPanel extends PureComponent< + LeftAreaPanelProps, + LeftAreaPanelState +> { + static displayName = 'LowcodeLeftAreaPanel'; + + private editor: Editor; + + private areaManager: AreaManager; constructor(props) { super(props); + this.editor = props.editor; + this.areaManager = new AreaManager(this.editor, 'leftArea'); + + this.state = { + activeKey: 'none', + }; } - render() { - return
; + componentDidMount(): void { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + this.editor.on('leftPanel.show', this.handlePluginChange); + } + + componentWillUnmount(): void { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + this.editor.off('leftPanel.show', this.handlePluginChange); + } + + handleSkeletonUpdate = (): void => { + // 当前区域插件状态改变是更新区域 + if (this.areaManager.isPluginStatusUpdate('PanelIcon')) { + this.forceUpdate(); + } + }; + + handlePluginChange = (key: string): void => { + this.setState({ + activeKey: key, + }); + }; + + render(): React.ReactNode { + const { activeKey } = this.state; + const list = this.areaManager.getVisiblePluginList('PanelIcon'); + + return ( + + {list.map( + (item): React.ReactNode => { + const Comp = this.areaManager.getPluginClass(item.pluginKey); + if (Comp) { + return ( + + + + ); + } + return null; + }, + )} + + ); } } diff --git a/packages/editor-skeleton/src/layouts/RightArea/index.scss b/packages/editor-skeleton/src/layouts/RightArea/index.scss index 120ef4f11..7373933b0 100644 --- a/packages/editor-skeleton/src/layouts/RightArea/index.scss +++ b/packages/editor-skeleton/src/layouts/RightArea/index.scss @@ -1,155 +1,37 @@ .lowcode-right-area { - width: 300px; + width: 262px; height: 100%; - background-color: #ffffff; - border-left: 1px solid #e8ebee; - .right-plugin-title { - &.locked { - color: red !important; - } - &.active { - color: $color-brand1-9 !important; - } - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - } + background-color: $card-background; + border-left: 2px solid $color-line1-1; + + .right-panel { + overflow: auto; + // border-top: 2px solid $color-line1-1; } //tab定义 - .next-tabs-wrapped.right-tabs { - display: flex; - flex-direction: column; - margin-top: -1px; - .next-tabs-bar { - z-index: 1; - } + .right-tabs.next-tabs { .next-tabs-nav { - display: block; - .next-tabs-tab { - &:first-child { - border-left: none; - } - font-size: 14px; + width: 100%; + .next-tabs-tab-inner { + padding-left: 0; + padding-right: 0; + } + .right-plugin-title { text-align: center; - border-right: none !important; - margin-right: 0 !important; - width: 25%; + &.locked { + color: red !important; + } &.active { - background: none; - border-bottom-color: #f7f7f7 !important; + color: $color-brand1-9 !important; } - } - } - } - .next-tabs-content { - flex: 1; - .next-tabs-tabpane.active { - height: 100%; - overflow-y: auto; - } - } - //组件 - .select-comp { - padding: 10px 16px; - line-height: 16px; - color: #989a9c; - & > span { - font-size: 12px; - line-height: 16px; - font-weight: 400; - } - & > .btn-wrap, - & > .next-btn { - width: auto; - margin: 0 5px; - float: right; - } - } - - .unselected { - padding: 60px 0; - text-align: center; - } - //右侧属性面板样式调整; - .offset-56 { - padding-left: 56px; - margin-bottom: 16px; - overflow: hidden; - } - .fixedSpan.next-form-item { - & > .next-form-item-label { - width: 56px; - flex: none; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - & > .next-form-item-control { - padding-right: 24px; - } - } - .fixedSpan.next-form-item, - .offset-56 .next-form-item { - display: flex; - & > .next-form-item-control { - width: auto; - flex: 1; - max-width: none; - .next-input, - .next-select, - .next-radio-group, - .next-number-picker, - .luna-reactnode-btn, - .luna-monaco-button button, - .luna-object-button button { - width: 100%; - } - .next-number-picker { - width: 100%; - .next-after { - padding-right: 5px; + &.disabled { + cursor: not-allowed; + color: $color-text1-1; } - } - .next-radio-group { - display: flex; - label { - flex: 1; - text-align: center; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - } - } - .topSpan.next-form-item { - margin-bottom: 4px; - & > .next-form-item-control { - padding-right: 24px; - .next-input, - .next-select, - .next-radio-group, - .next-number-picker, - .luna-reactnode-btn, - .luna-monaco-button button, - .luna-object-button button { - width: 100%; - } - .next-number-picker { - width: 100%; - .next-after { - padding-right: 5px; - } - } - .next-radio-group { - display: flex; - label { - flex: 1; - text-align: center; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + .next-icon { + line-height: 15px; + margin-right: 2px; } } } diff --git a/packages/editor-skeleton/src/layouts/RightArea/index.tsx b/packages/editor-skeleton/src/layouts/RightArea/index.tsx index 31273a4e2..40a6d9ad0 100644 --- a/packages/editor-skeleton/src/layouts/RightArea/index.tsx +++ b/packages/editor-skeleton/src/layouts/RightArea/index.tsx @@ -1,15 +1,214 @@ import React, { PureComponent } from 'react'; - +import { Tab, Badge, Icon } from '@alifd/next'; +import classNames from 'classnames'; +import Editor, { AreaManager, utils } from '@ali/lowcode-editor-framework'; +import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; import './index.scss'; -export default class RightArea extends PureComponent { - static displayName = 'lowcodeRightArea'; +const { isEmpty } = utils; + +export interface RightAreaProps { + editor: Editor; +} + +export interface RightAreaState { + activeKey: string; +} + +export default class RightArea extends PureComponent< + RightAreaProps, + RightAreaState +> { + static displayName = 'LowcodeRightArea'; + + private editor: Editor; + + private areaManager: AreaManager; constructor(props) { super(props); + this.editor = props.editor; + this.areaManager = new AreaManager(this.editor, 'rightArea'); + this.state = { + activeKey: '', + }; } - render() { - return
; + componentDidMount(): void { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); + this.editor.on('rightNav.change', this.handlePluginChange); + const visiblePluginList = this.areaManager.getVisiblePluginList('TabPanel'); + const defaultKey = + (visiblePluginList[0] && visiblePluginList[0].pluginKey) || + 'componentAttr'; + this.handlePluginChange(defaultKey, true); + } + + componentWillUnmount(): void { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + this.editor.off('rightNav.change', this.handlePluginChange); + } + + handleSkeletonUpdate = (): void => { + // 当前区域插件状态改变是更新区域 + if (this.areaManager.isPluginStatusUpdate()) { + const activeKey = this.state.activeKey; + const activePluginStatus = this.areaManager.getPluginStatus(activeKey); + if (activePluginStatus && activePluginStatus.visible) { + this.forceUpdate(); + } else { + const currentPlugin = this.areaManager.getPlugin(activeKey); + if (currentPlugin) { + currentPlugin.close().then((): void => { + this.setState( + { + activeKey: '', + }, + (): void => { + const visiblePluginList = this.areaManager.getVisiblePluginList( + 'TabPanel', + ); + const firstPlugin = visiblePluginList && visiblePluginList[0]; + if (firstPlugin) { + this.handlePluginChange(firstPlugin.pluginKey); + } + }, + ); + }); + } + } + } + }; + + handlePluginChange = (key: string, isinit?: boolean): void => { + const activeKey = this.state.activeKey; + const currentPlugin = this.areaManager.getPlugin(activeKey); + const nextPlugin = this.areaManager.getPlugin(key); + const openPlugin = (): void => { + if (!nextPlugin) { + console.error(`plugin ${key} has not regist in the editor`); + return; + } + nextPlugin.open().then((): void => { + this.editor.set('rightNav', key); + this.setState({ + activeKey: key, + }); + }); + }; + if (key === activeKey && !isinit) return; + if (currentPlugin) { + currentPlugin.close().then((): void => { + openPlugin(); + }); + } else { + openPlugin(); + } + }; + + renderTabTitle = (config: PluginConfig): React.ReactElement => { + const { icon, title } = config.props || {}; + const pluginStatus = this.editor.pluginStatus[config.pluginKey]; + const { marked, disabled, locked } = pluginStatus; + const active = this.state.activeKey === config.pluginKey; + + const renderTitle = (): React.ReactElement => ( +
+ {!!icon && } + {title} +
+ ); + if (marked) { + return {renderTitle()}; + } + return renderTitle(); + }; + + renderTabPanels = (list: PluginConfig[], height: string): React.ReactNode => { + if (isEmpty(list)) { + return null; + } + return ( + + {list.map( + (item): React.ReactNode => { + const Comp = this.areaManager.getPluginClass(item.pluginKey); + if (Comp) { + return ( + + + + ); + } + return null; + }, + )} + + ); + }; + + renderPanels = (list: PluginConfig[], height: string): React.ReactNode => { + return list.map( + (item): React.ReactNode => { + const Comp = this.areaManager.getPluginClass(item.pluginKey); + if (Comp) { + return ( +
+ +
+ ); + } + return null; + }, + ); + }; + + render(): React.ReactNode { + const tabList = this.areaManager.getVisiblePluginList('TabPanel'); + const panelList = this.areaManager.getVisiblePluginList('Panel'); + if (isEmpty(panelList) && isEmpty(tabList)) { + return null; + } else if (tabList.length === 1) { + panelList.unshift(tabList[0]); + tabList.splice(0, 1); + } + const height = `${Math.floor( + 100 / (panelList.length + (tabList.length > 0 ? 1 : 0)), + )}%`; + return ( +
+ {this.renderTabPanels(tabList, height)} + {this.renderPanels(panelList, height)} +
+ ); } } diff --git a/packages/editor-skeleton/src/layouts/TopArea/index.scss b/packages/editor-skeleton/src/layouts/TopArea/index.scss index ca8bbd825..c0a132f84 100644 --- a/packages/editor-skeleton/src/layouts/TopArea/index.scss +++ b/packages/editor-skeleton/src/layouts/TopArea/index.scss @@ -1,5 +1,30 @@ .lowcode-top-area { - height: 48px; - background-color: #ffffff; - border-bottom: 1px solid #e8ebee; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 50px; + background-color: $card-background; + border-bottom: 2px solid $color-line1-1; + user-select: none; + .divider { + max-width: 0; + margin: 12px 16px; + height: 24px; + border-right: 1px solid $color-line1-2; + } + .next-col { + text-align: center; + } + .left-area { + padding: 0 16px; + } + .right-area { + position: absolute; + right: 0; + top: 0; + padding: 0 16px; + height: 100%; + background: $card-background; + } } diff --git a/packages/editor-skeleton/src/layouts/TopArea/index.tsx b/packages/editor-skeleton/src/layouts/TopArea/index.tsx index c2f60a637..434e12d60 100644 --- a/packages/editor-skeleton/src/layouts/TopArea/index.tsx +++ b/packages/editor-skeleton/src/layouts/TopArea/index.tsx @@ -1,61 +1,81 @@ import React, { PureComponent } from 'react'; import { Grid } from '@alifd/next'; +import Editor, { AreaManager } from '@ali/lowcode-editor-framework'; +import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; import TopPlugin from '../../components/TopPlugin'; import './index.scss'; const { Row, Col } = Grid; -export default class TopArea extends PureComponent { - static displayName = 'lowcodeTopArea'; +export interface TopAreaProps { + editor: Editor; +} + +export default class TopArea extends PureComponent { + static displayName = 'LowcodeTopArea'; + + private areaManager: AreaManager; + + private editor: Editor; constructor(props) { super(props); this.editor = props.editor; - this.config = this.editor.config.plugins && this.editor.config.plugins.topArea; + this.areaManager = new AreaManager(props.editor, 'topArea'); } - componentDidMount() { - } - componentWillUnmount() { + componentDidMount(): void { + this.editor.on('skeleton.update', this.handleSkeletonUpdate); } - handlePluginStatusChange = () => {}; + componentWillUnmount(): void { + this.editor.off('skeleton.update', this.handleSkeletonUpdate); + } - renderPluginList = (list = []) => { - return list.map((item, idx) => { - const isDivider = item.type === 'Divider'; - - return ( - - {!isDivider && ( - - )} - - ); - }); + handleSkeletonUpdate = (): void => { + // 当前区域插件状态改变是更新区域 + if (this.areaManager.isPluginStatusUpdate()) { + this.forceUpdate(); + } }; - render() { - if (!this.config) return null; - const leftList = []; - const rightList = []; - this.config.forEach(item => { + renderPluginList = (list: PluginConfig[] = []): React.ReactElement[] => { + return list.map( + (item, idx): React.ReactElement => { + const isDivider = item.type === 'Divider'; + const PluginClass = this.areaManager.getPluginClass(item.pluginKey); + return ( + + {!isDivider && ( + + )} + + ); + }, + ); + }; + + render(): React.ReactNode { + const leftList: PluginConfig[] = []; + const rightList: PluginConfig[] = []; + const visiblePluginList = this.areaManager.getVisiblePluginList(); + visiblePluginList.forEach((item): void => { const align = item.props && item.props.align === 'right' ? 'right' : 'left'; // 分隔符不允许相邻 if (item.type === 'Divider') { - const currentList = align === 'right' ? rightList : leftList; + const currList = align === 'right' ? rightList : leftList; if ( currList.length === 0 || currList[currList.length - 1].type === 'Divider' @@ -68,11 +88,14 @@ export default class TopArea extends PureComponent { leftList.push(item); } }); - return (
-
{this.renderPluginList(leftList)}
-
{this.renderPluginList(rightList)}
+
+ {this.renderPluginList(leftList)} +
+
+ {this.renderPluginList(rightList)} +
); } diff --git a/packages/editor-skeleton/src/locale/en-US.js b/packages/editor-skeleton/src/locale/en-US.js index 36e3b219c..ff8b4c563 100644 --- a/packages/editor-skeleton/src/locale/en-US.js +++ b/packages/editor-skeleton/src/locale/en-US.js @@ -1,10 +1 @@ -export default { - loading: 'loading...', - rejectRedirect: 'Redirect is not allowed', - expand: 'Unfold', - fold: 'Fold', - pageNotExist: 'The current Page not exist', - enterFromAppCenter: 'Please enter from the app center', - noPermission: 'Sorry, you do not have the develop permission', - getPermission: 'Please connect the app owners {owners} to get the permission', -}; +export default {}; diff --git a/packages/editor-skeleton/src/locale/zh-CN.js b/packages/editor-skeleton/src/locale/zh-CN.js index 2d5229d2c..ff8b4c563 100644 --- a/packages/editor-skeleton/src/locale/zh-CN.js +++ b/packages/editor-skeleton/src/locale/zh-CN.js @@ -1,10 +1 @@ -export default { - loading: '加载中...', - rejectRedirect: '开发中,已阻止发生跳转', - expand: '展开', - fold: '收起', - pageNotExist: '当前访问地址不存在', - enterFromAppCenter: '请从应用中心入口重新进入', - noPermission: '抱歉,您暂无开发权限', - getPermission: '请移步应用中心申请开发权限, 或联系 {owners} 开通权限', -}; +export default {}; diff --git a/packages/editor/package.json b/packages/editor/package.json index c9864f35f..c5441d220 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -3,6 +3,8 @@ "version": "0.0.1", "description": "低代码编辑器", "dependencies": { + "@ali/lowcode-editor-framework": "0.0.1", + "@ali/lowcode-editor-skeleton": "0.0.1", "@ali/iceluna-addon-2": "^1.0.3", "@ali/iceluna-addon-component-list": "^1.0.11", "@ali/iceluna-sdk": "^1.0.5-beta.26", diff --git a/packages/editor/src/config/skeleton.js b/packages/editor/src/config/skeleton.js index 6fc68aa2a..2e9012768 100644 --- a/packages/editor/src/config/skeleton.js +++ b/packages/editor/src/config/skeleton.js @@ -3,7 +3,7 @@ import assets from './assets'; export default { version: '^1.0.2', theme: { - dpl: { + fusion: { package: '@alife/dpl-iceluna', version: '^2.3.0' }, diff --git a/packages/editor/src/framework/context.ts b/packages/editor/src/framework/context.ts deleted file mode 100644 index 859b79dc4..000000000 --- a/packages/editor/src/framework/context.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createContext } from 'react'; - -const context = createContext({}); -export default context; diff --git a/packages/editor/src/framework/definitions.ts b/packages/editor/src/framework/definitions.ts deleted file mode 100644 index 6bc6d2653..000000000 --- a/packages/editor/src/framework/definitions.ts +++ /dev/null @@ -1,154 +0,0 @@ -import * as React from 'react'; -import Editor from './editor'; - -export interface EditorConfig { - skeleton?: SkeletonConfig; - theme?: ThemeConfig; - plugins?: PluginsConfig; - hooks?: HooksConfig; - shortCuts?: ShortCutsConfig; - utils?: UtilsConfig; - constants?: ConstantsConfig; - lifeCycles?: LifeCyclesConfig; - i18n?: I18nConfig; -} - -export interface NpmConfig { - version: string; - package: string; - main?: string; - exportName?: string; - subName?: string; - destructuring?: boolean; -} - -export interface SkeletonConfig { - config: NpmConfig; - props?: object; - handler?: (EditorConfig) => EditorConfig; -} - -export interface FusionTheme { - package: string; - version: string; -} - -export interface ThemeConfig { - fusion?: FusionTheme; -} - -export interface PluginsConfig { - [propName: string]: PluginConfig[]; -} - -export interface PluginConfig { - pluginKey: string; - type: string; - props: { - icon?: string; - title?: string; - width?: number; - height?: number; - visible?: boolean; - disabled?: boolean; - marked?: boolean; - align?: 'left' | 'right' | 'top' | 'bottom'; - onClick?: () => void; - dialogProps?: object; - balloonProps?: object; - panelProps?: object; - linkProps?: object; - }; - config?: NpmConfig; - pluginProps?: object; -} - -export type HooksConfig = HookConfig[]; - -export interface HookConfig { - message: string; - type: 'on' | 'once'; - handler: (editor: Editor, ...args) => void; -} - -export type ShortCutsConfig = ShortCutConfig[]; - -export interface ShortCutConfig { - keyboard: string; - handler: (editor: Editor, ev: Event, keymaster: any) => void; -} - -export type UtilsConfig = UtilConfig[]; - -export interface UtilConfig { - name: string; - type: 'npm' | 'function'; - content: NpmConfig | ((...args) => any); -} - -export type ConstantsConfig = object; - -export interface LifeCyclesConfig { - init?: (editor: Editor) => any; - destroy?: (editor: Editor) => any; -} - -export type LocaleType = 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP'; - -export interface I18nMessages { - [key: string]: string; -} - -export interface I18nConfig { - 'zh-CN'?: I18nMessages; - 'zh-TW'?: I18nMessages; - 'en-US'?: I18nMessages; - 'ja-JP'?: I18nMessages; -} - -export type I18nFunction = (key: string, params: any) => string; - -export interface Utils { - [key: string]: (...args) => any; -} - -export interface PluginProps { - editor: Editor; - config: PluginConfig; - i18n?: I18nFunction; - ref?: React.RefObject; - [key: string]: any; -} - -export type Plugin = React.ReactNode & { - open?: () => boolean | void | Promise; - close?: () => boolean | void | Promise; -}; - -export type HOCPlugin = React.ReactNode & { - open: () => Promise; - close: () => Promise; -}; - -export interface PluginSet { - [key: string]: HOCPlugin; -} - -export type PluginClass = React.ComponentType & { - init?: (editor: Editor) => void; -}; - -export interface PluginClassSet { - [key: string]: PluginClass; -} - -export interface PluginStatus { - disabled?: boolean; - visible?: boolean; - marked?: boolean; - locked?: boolean; -} - -export interface PluginStatusSet { - [key: string]: PluginStatus; -} diff --git a/packages/editor/src/framework/editor.ts b/packages/editor/src/framework/editor.ts deleted file mode 100644 index cf1147e2c..000000000 --- a/packages/editor/src/framework/editor.ts +++ /dev/null @@ -1,230 +0,0 @@ -import Debug from 'debug'; -import EventEmitter from 'events'; -import store from 'store'; -import { - EditorConfig, - HooksConfig, - LocaleType, - PluginStatusSet, - Utils, - PluginClassSet, - PluginSet -} from './definitions'; - -import * as editorUtils from './utils'; - -const { registShortCuts, transformToPromise, unRegistShortCuts } = editorUtils; - -declare global { - interface Window { - __isDebug?: boolean; - __newFunc?: (funcStr: string) => (...args: any[]) => any; - } -} - -// 根据url参数设置debug选项 -const debugRegRes = /_?debug=(.*?)(&|$)/.exec(location.search); -if (debugRegRes && debugRegRes[1]) { - // eslint-disable-next-line no-underscore-dangle - window.__isDebug = true; - store.storage.write('debug', debugRegRes[1] === 'true' ? '*' : debugRegRes[1]); -} else { - // eslint-disable-next-line no-underscore-dangle - window.__isDebug = false; - store.remove('debug'); -} - -// 重要,用于矫正画布执行new Function的window对象上下文 -// eslint-disable-next-line no-underscore-dangle -window.__newFunc = (funContext: string): ((...args: any[]) => any) => { - // eslint-disable-next-line no-new-func - return new Function(funContext) as (...args: any[]) => any; -}; - -// 关闭浏览器前提醒,只有产生过交互才会生效 -window.onbeforeunload = function(e: Event): string | void { - const ev = e || window.event; - // 本地调试不生效 - if (location.href.indexOf('localhost') > 0) { - return; - } - const msg = '您确定要离开此页面吗?'; - ev.cancelBubble = true; - ev.returnValue = true; - if (e.stopPropagation) { - e.stopPropagation(); - e.preventDefault(); - } - return msg; -}; - -let instance: Editor; - -const debug = Debug('editor'); -EventEmitter.defaultMaxListeners = 100; - -export interface HooksFuncs { - [idx: number]: (msg: string, handler: (...args) => void) => void; -} - -export default class Editor extends EventEmitter { - public static getInstance = (config: EditorConfig, components: PluginClassSet, utils?: Utils): Editor => { - if (!instance) { - instance = new Editor(config, components, utils); - } - return instance; - }; - - public config: EditorConfig; - - public components: PluginClassSet; - - public utils: Utils; - - public pluginStatus: PluginStatusSet; - - public plugins: PluginSet; - - public locale: LocaleType; - - public emit: (msg: string, ...args) => void; - - public on: (msg: string, handler: (...args) => void) => void; - - public once: (msg: string, handler: (...args) => void) => void; - - public off: (msg: string, handler: (...args) => void) => void; - - private hooksFuncs: HooksFuncs; - - constructor(config: EditorConfig, components: PluginClassSet, utils?: Utils) { - super(); - this.config = config; - this.components = components; - this.utils = { ...editorUtils, ...utils }; - instance = this; - this.init(); - } - - public init(): Promise { - const { hooks, shortCuts = [], lifeCycles } = this.config || {}; - this.locale = store.get('lowcode-editor-locale') || 'zh-CN'; - // this.messages = this.messagesSet[this.locale]; - // this.i18n = generateI18n(this.locale, this.messages); - this.pluginStatus = this.initPluginStatus(); - this.initHooks(hooks || []); - - this.emit('editor.beforeInit'); - const init = (lifeCycles && lifeCycles.init) || ((): void => {}); - // 用户可以通过设置extensions.init自定义初始化流程; - return transformToPromise(init(this)) - .then((): boolean => { - // 注册快捷键 - registShortCuts(shortCuts, this); - this.emit('editor.afterInit'); - return true; - }) - .catch((err): void => { - console.error(err); - }); - } - - public destroy(): void { - debug('destroy'); - try { - const { hooks = [], shortCuts = [], lifeCycles = {} } = this.config; - unRegistShortCuts(shortCuts); - this.destroyHooks(hooks); - if (lifeCycles.destroy) { - lifeCycles.destroy(this); - } - } catch (err) { - console.warn(err); - } - } - - public get(key: string): any { - return this[key]; - } - - public set(key: string | object, val: any): void { - if (typeof key === 'string') { - if (['init', 'destroy', 'get', 'set', 'batchOn', 'batchOff', 'batchOnce'].includes(key)) { - console.error('init, destroy, get, set, batchOn, batchOff, batchOnce is private attribute'); - return; - } - this[key] = val; - } else if (typeof key === 'object') { - Object.keys(key).forEach((item): void => { - this[item] = key[item]; - }); - } - } - - public batchOn(events: string[], lisenter: (...args) => void): void { - if (!Array.isArray(events)) { - return; - } - events.forEach((event): void => this.on(event, lisenter)); - } - - public batchOnce(events: string[], lisenter: (...args) => void): void { - if (!Array.isArray(events)) { - return; - } - events.forEach((event): void => this.once(event, lisenter)); - } - - public batchOff(events: string[], lisenter: (...args) => void): void { - if (!Array.isArray(events)) { - return; - } - events.forEach((event): void => this.off(event, lisenter)); - } - - // 销毁hooks中的消息监听 - private destroyHooks(hooks: HooksConfig = []): void { - hooks.forEach((item, idx): void => { - if (typeof this.hooksFuncs[idx] === 'function') { - this.off(item.message, this.hooksFuncs[idx]); - } - }); - delete this.hooksFuncs; - } - - // 初始化hooks中的消息监听 - private initHooks(hooks: HooksConfig = []): void { - this.hooksFuncs = hooks.map((item): ((...arg) => void) => { - const func = (...args): void => { - item.handler(this, ...args); - }; - this[item.type](item.message, func); - return func; - }); - } - - private initPluginStatus(): PluginStatusSet { - const { plugins = {} } = this.config; - const pluginAreas = Object.keys(plugins); - const res: PluginStatusSet = {}; - pluginAreas.forEach((area): void => { - (plugins[area] || []).forEach((plugin): void => { - if (plugin.type === 'Divider') { - return; - } - const { visible, disabled, marked } = plugin.props || {}; - res[plugin.pluginKey] = { - visible: typeof visible === 'boolean' ? visible : true, - disabled: typeof disabled === 'boolean' ? disabled : false, - marked: typeof marked === 'boolean' ? marked : false - }; - const pluginClass = this.components[plugin.pluginKey]; - // 判断如果编辑器插件有init静态方法,则在此执行init方法 - if (pluginClass && pluginClass.init) { - pluginClass.init(this); - } - }); - }); - return res; - } -} diff --git a/packages/editor/src/framework/index.ts b/packages/editor/src/framework/index.ts deleted file mode 100644 index 72af6e859..000000000 --- a/packages/editor/src/framework/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import Editor from './editor'; - -import * as editorUtils from './utils'; -import * as editorDefinitions from './definitions'; - -export { default as PluginFactory } from './pluginFactory'; -export { default as EditorContext } from './context'; - -export default Editor; - -export const utils = editorUtils; -export const definitions = editorDefinitions; diff --git a/packages/editor/src/framework/utils.ts b/packages/editor/src/framework/utils.ts deleted file mode 100644 index aced7d318..000000000 --- a/packages/editor/src/framework/utils.ts +++ /dev/null @@ -1,272 +0,0 @@ -import IntlMessageFormat from 'intl-messageformat'; -import keymaster from 'keymaster'; - -import _clone from 'lodash/cloneDeep'; -import _debounce from 'lodash/debounce'; -import _isEmpty from 'lodash/isEmpty'; -import _deepEqual from 'lodash/isEqualWith'; -import _pick from 'lodash/pick'; -import _throttle from 'lodash/throttle'; - -import _serialize from 'serialize-javascript'; -import Editor from './editor'; -import { EditorConfig, I18nFunction, I18nMessages, LocaleType, ShortCutsConfig } from './definitions'; - -export const pick = _pick; -export const deepEqual = _deepEqual; -export const clone = _clone; -export const isEmpty = _isEmpty; -export const throttle = _throttle; -export const debounce = _debounce; - -export const serialize = _serialize; - -const ENV = { - TBE: 'TBE', - WEBIDE: 'WEB-IDE', - VSCODE: 'VSCODE', - WEB: 'WEB' -}; - -declare global { - interface Window { - sendIDEMessage?: (params: IDEMessageParams) => void; - goldlog?: { - record: (logKey: string, gmKey: string, goKey: string, method: 'POST' | 'GET') => (...args: any[]) => any; - }; - is_theia?: boolean; - vscode?: boolean; - } -} - -export interface IDEMessageParams { - action: string; - data: { - logKey: string; - gmKey: string; - goKey: string; - }; -} - -/* - * 用于构造国际化字符串处理函数 - */ -export function generateI18n(locale: LocaleType = 'zh-CN', messages: I18nMessages = {}): I18nFunction { - return (key: string, values): string => { - if (!messages || !messages[key]) { - return ''; - } - const formater = new IntlMessageFormat(messages[key], locale); - return formater.format(values); - }; -} - -/** - * 序列化参数 - */ -export function serializeParams(obj: object): string { - if (typeof obj !== 'object') { - return ''; - } - const res: string[] = []; - Object.entries(obj).forEach(([key, val]): void => { - if (val === null || val === undefined || val === '') { - return; - } - if (typeof val === 'object') { - res.push(`${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(val))}`); - } else { - res.push(`${encodeURIComponent(key)}=${encodeURIComponent(val)}`); - } - }); - return res.join('&'); -} - -/** - * 黄金令箭埋点 - * @param {String} gmKey 为黄金令箭业务类型 - * @param {Object} params 参数 - * @param {String} logKey 属性串 - */ -export function goldlog(gmKey: string, params: object = {}, logKey: string = 'other'): void { - const sendIDEMessage = window.sendIDEMessage || window.parent.sendIDEMessage; - const goKey = serializeParams({ - env: getEnv(), - ...params - }); - if (sendIDEMessage) { - sendIDEMessage({ - action: 'goldlog', - data: { - logKey: `/iceluna.core.${logKey}`, - gmKey, - goKey - } - }); - } - if (window.goldlog) { - window.goldlog.record(`/iceluna.core.${logKey}`, gmKey, goKey, 'POST'); - } -} - -/** - * 获取当前编辑器环境 - */ -export function getEnv(): string { - const userAgent = navigator.userAgent; - const isVscode = /Electron\//.test(userAgent); - if (isVscode) { - return ENV.VSCODE; - } - const isTheia = window.is_theia === true; - if (isTheia) { - return ENV.WEBIDE; - } - return ENV.WEB; -} - -// 注册快捷键 -export function registShortCuts(config: ShortCutsConfig, editor: Editor): void { - (config || []).forEach((item): void => { - keymaster(item.keyboard, (ev: Event): void => { - ev.preventDefault(); - item.handler(editor, ev, keymaster); - }); - }); -} - -// 取消注册快捷 -export function unRegistShortCuts(config: ShortCutsConfig): void { - (config || []).forEach((item): void => { - keymaster.unbind(item.keyboard); - }); - if (window.parent.vscode) { - keymaster.unbind('command+c'); - keymaster.unbind('command+v'); - } -} - -/** - * 将函数返回结果转成promise形式,如果函数有返回值则根据返回值的bool类型判断是reject还是resolve,若函数无返回值默认执行resolve - */ -export function transformToPromise(input: any): Promise<{}> { - if (input instanceof Promise) { - return input; - } - return new Promise((resolve, reject): void => { - if (input || input === undefined) { - resolve(); - } else { - reject(); - } - }); -} - -/** - * 将数组类型转换为Map类型 - */ -interface MapOf { - [propName: string]: T; -} -export function transformArrayToMap(arr: T[], key: string, overwrite: boolean = true): MapOf { - if (isEmpty(arr) || !Array.isArray(arr)) { - return {}; - } - const res = {}; - arr.forEach((item): void => { - const curKey = item[key]; - if (item[key] === undefined) { - return; - } - if (res[curKey] && !overwrite) { - return; - } - res[curKey] = item; - }); - return res; -} - -/** - * 解析url的查询参数 - */ -interface Query { - [propName: string]: string; -} -export function parseSearch(search: string): Query { - if (!search || typeof search !== 'string') { - return {}; - } - const str = search.replace(/^\?/, ''); - const paramStr = str.split('&'); - const res = {}; - paramStr.forEach((item): void => { - const regRes = item.split('='); - if (regRes[0] && regRes[1]) { - res[regRes[0]] = decodeURIComponent(regRes[1]); - } - }); - return res; -} - -export function comboEditorConfig(defaultConfig: EditorConfig = {}, customConfig: EditorConfig): EditorConfig { - const { skeleton, theme, plugins, hooks, shortCuts, lifeCycles, constants, utils, i18n } = customConfig || {}; - - if (skeleton && skeleton.handler && typeof skeleton.handler === 'function') { - return skeleton.handler({ - skeleton, - ...defaultConfig - }); - } - - const defaultShortCuts = transformArrayToMap(defaultConfig.shortCuts || [], 'keyboard'); - const customShortCuts = transformArrayToMap(shortCuts || [], 'keyboard'); - const localeList = ['zh-CN', 'zh-TW', 'en-US', 'ja-JP']; - const i18nConfig = {}; - localeList.forEach((key): void => { - i18nConfig[key] = { - ...(defaultConfig.i18n && defaultConfig.i18n[key]), - ...(i18n && i18n[key]) - }; - }); - return { - skeleton, - theme: { - ...defaultConfig.theme, - ...theme - }, - plugins: { - ...defaultConfig.plugins, - ...plugins - }, - hooks: [...(defaultConfig.hooks || []), ...(hooks || [])], - shortCuts: Object.values({ - ...defaultShortCuts, - ...customShortCuts - }), - lifeCycles: { - ...defaultConfig.lifeCycles, - ...lifeCycles - }, - constants: { - ...defaultConfig.constants, - ...constants - }, - utils: [...(defaultConfig.utils || []), ...(utils || [])], - i18n: i18nConfig - }; -} - -/** - * 判断当前组件是否能够设置ref - * @param {*} Comp 需要判断的组件 - */ -export function acceptsRef(Comp: React.ReactNode): boolean { - const hasSymbol = typeof Symbol === 'function' && Symbol.for; - const REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; - if (!Comp || typeof Comp !== 'object' || isEmpty(Comp)) { - return false; - } - return ( - (Comp.$$typeof && Comp.$$typeof === REACT_FORWARD_REF_TYPE) || (Comp.prototype && Comp.prototype.isReactComponent) - ); -} diff --git a/packages/editor/src/index.d.ts b/packages/editor/src/index.d.ts deleted file mode 100644 index 1fe34f40d..000000000 --- a/packages/editor/src/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -interface Window { - sendIDEMessage?: (IDEMessageParams) => void; - goldlog?: { - record: (logKey: string, gmKey: string, goKey: string, method: 'GET' | 'POST') => void; - }; - is_theia?: boolean; - vscode?: boolean; -} diff --git a/packages/editor/src/index.tsx b/packages/editor/src/index.tsx index 22e76df35..23dbb8f92 100644 --- a/packages/editor/src/index.tsx +++ b/packages/editor/src/index.tsx @@ -1,12 +1,9 @@ import React from 'react'; import ReactDOM from 'react-dom'; -// import Skeleton from '@ali/lowcode-engine-skeleton'; -import { HashRouter as Router, Route } from 'react-router-dom'; -import Skeleton from './skeleton'; +import Skeleton from '@ali/lowcode-editor-skeleton'; import config from './config/skeleton'; import components from './config/components'; import utils from './config/utils'; -import constants from './config/constants'; import './config/locale'; import './config/setters'; @@ -19,21 +16,6 @@ if (!ICE_CONTAINER) { throw new Error('当前页面不存在
节点.'); } -ReactDOM.render( - - ( - - )} - /> - , +ReactDOM.render(, ICE_CONTAINER ); diff --git a/packages/editor/src/skeleton/components/LeftPlugin/index.scss b/packages/editor/src/skeleton/components/LeftPlugin/index.scss deleted file mode 100644 index f1e7876d3..000000000 --- a/packages/editor/src/skeleton/components/LeftPlugin/index.scss +++ /dev/null @@ -1,54 +0,0 @@ -.lowcode-left-plugin { - font-size: 20px; - text-align: center; - line-height: 44px; - height: 44px; - position: relative; - cursor: pointer; - transition: all 0.3s ease; - color: $color-text1-3; - &.locked { - color: red !important; - } - &:hover { - color: $color-brand1-6; - &:before { - content: attr(data-tooltip); - display: block; - position: absolute; - left: 50px; - top: 5px; - line-height: 18px; - font-size: 12px; - white-space: nowrap; - padding: 6px 8px; - border-radius: 4px; - background: $balloon-tooltip-color-bg; - color: $color-text1-3; - z-index: 100; - } - &:after { - content: ''; - display: block; - position: absolute; - left: 40px; - top: 15px; - border: 5px solid transparent; - border-right: 5px solid $balloon-tooltip-color-bg; - z-index: 100; - } - } - &.active { - color: $color-brand1-9; - &.disabled { - color: $color-text1-1; - } - &:hover { - color: $color-brand1-6; - } - } - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - } -} diff --git a/packages/editor/src/skeleton/components/LeftPlugin/index.tsx b/packages/editor/src/skeleton/components/LeftPlugin/index.tsx deleted file mode 100644 index eafe894ee..000000000 --- a/packages/editor/src/skeleton/components/LeftPlugin/index.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import React, { PureComponent, Fragment } from 'react'; -import classNames from 'classnames'; -import { Balloon, Dialog, Icon, Badge } from '@alifd/next'; - -import './index.scss'; -import Editor from '../../../framework/editor'; -import { PluginConfig, PluginClass } from '../../../framework/definitions'; - -export interface LeftPluginProps { - active?: boolean; - config: PluginConfig; - disabled?: boolean; - editor: Editor; - locked?: boolean; - marked?: boolean; - onClick?: () => void; - pluginClass: PluginClass; -} - -export interface LeftPluginState { - dialogVisible: boolean; -} - -export default class LeftPlugin extends PureComponent { - static displayName = 'LowcodeLeftPlugin'; - - static defaultProps = { - active: false, - config: {}, - disabled: false, - marked: false, - locked: false, - onClick: (): void => {} - }; - - constructor(props, context) { - super(props, context); - this.state = { - dialogVisible: false - }; - } - - componentDidMount(): void { - const { config, editor } = this.props; - const pluginKey = config && config.pluginKey; - if (editor && pluginKey) { - editor.on(`${pluginKey}.dialog.show`, this.handleShow); - editor.on(`${pluginKey}.dialog.close`, this.handleClose); - } - } - - componentWillUnmount(): void { - const { config, editor } = this.props; - const pluginKey = config && config.pluginKey; - if (editor && pluginKey) { - editor.off(`${pluginKey}.dialog.show`, this.handleShow); - editor.off(`${pluginKey}.dialog.close`, this.handleClose); - } - } - - handleClose = (): void => { - const { config, editor } = this.props; - const pluginKey = config && config.pluginKey; - const plugin = editor.plugins && editor.plugins[pluginKey]; - if (plugin && plugin.close) { - plugin.close().then((): void => { - this.setState({ - dialogVisible: false - }); - }); - } - }; - - handleOpen = (): void => { - // todo 对话框类型的插件初始时拿不到插件实例 - this.setState({ - dialogVisible: true - }); - }; - - handleShow = (): void => { - const { disabled, config, onClick, editor } = this.props; - const pluginKey = config && config.pluginKey; - if (disabled || !pluginKey) return; - // 考虑到弹窗情况,延时发送消息 - setTimeout((): void => editor.emit(`${pluginKey}.plugin.activate`), 0); - this.handleOpen(); - if (onClick) { - onClick(); - } - }; - - renderIcon = (clickCallback): React.ReactNode => { - const { active, disabled, marked, locked, onClick, config } = this.props; - const { pluginKey, props } = config || {}; - const { icon, title } = props || {}; - return ( -
{ - if (disabled) return; - // 考虑到弹窗情况,延时发送消息 - clickCallback && clickCallback(); - - onClick && onClick(); - }} - > - {marked ? ( - - - - ) : ( - - )} -
- ); - }; - - render(): React.ReactNode { - const { marked, locked, active, disabled, config, editor, pluginClass: Comp } = this.props; - const { pluginKey, props, type, pluginProps } = config || {}; - const { onClick, title } = props || {}; - const { dialogVisible } = this.state; - if (!pluginKey || !type || !props) return null; - - const node = - (Comp && ( - { - onClick && onClick.call(null, editor); - }} - {...pluginProps} - /> - )) || - null; - - switch (type) { - case 'LinkIcon': - return ( - - {this.renderIcon((): void => { - onClick && onClick.call(null, editor); - })} - - ); - case 'Icon': - return this.renderIcon((): void => { - onClick && onClick.call(null, editor); - }); - case 'DialogIcon': - return ( - - {this.renderIcon((): void => { - onClick && onClick.call(null, editor); - this.handleOpen(); - })} - { - editor.emit(`${pluginKey}.dialog.onOk`); - this.handleClose(); - }} - onCancel={this.handleClose} - onClose={this.handleClose} - title={title} - style={{ - width: 500, - ...(props.dialogProps && props.dialogProps.style) - }} - {...(props.dialogProps || {})} - visible={dialogVisible} - > - {node} - - - ); - case 'BalloonIcon': - return ( - { - onClick && onClick.call(null, editor); - })} - align="r" - triggerType={['click', 'hover']} - {...(props.balloonProps || {})} - > - {node} - - ); - case 'PanelIcon': - return this.renderIcon((): void => { - onClick && onClick.call(null, editor); - this.handleOpen(); - }); - case 'Custom': - return marked ? {node} : node; - default: - return null; - } - } -} diff --git a/packages/editor/src/skeleton/components/Panel/index.tsx b/packages/editor/src/skeleton/components/Panel/index.tsx deleted file mode 100644 index 611877d46..000000000 --- a/packages/editor/src/skeleton/components/Panel/index.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React, { PureComponent } from 'react'; -import classNames from 'classnames'; - -import './index.scss'; - -export interface PanelProps { - align: 'left' | 'right'; - defaultWidth: number; - minWidth: number; - draggable: boolean; - floatable: boolean; - children: Plugin; - visible: boolean; -} - -export interface PanelState { - width: number; -} - -export default class Panel extends PureComponent { - static displayName = 'LowcodePanel'; - - static defaultProps = { - align: 'left', - defaultWidth: 240, - minWidth: 100, - draggable: true, - floatable: false, - visible: true - }; - - constructor(props) { - super(props); - - this.state = { - width: props.defaultWidth - }; - } - - render(): React.ReactNode { - const { align, draggable, floatable, visible } = this.props; - const { width } = this.state; - return ( -
- {this.props.children} -
-
- ); - } -} diff --git a/packages/editor/src/skeleton/components/TopIcon/index.scss b/packages/editor/src/skeleton/components/TopIcon/index.scss deleted file mode 100644 index 2dd2e3bb7..000000000 --- a/packages/editor/src/skeleton/components/TopIcon/index.scss +++ /dev/null @@ -1,73 +0,0 @@ -.lowcode-top-icon { - display: inline-block; - width: 44px; - font-size: 20px; - line-height: 48px; - color: $color-text1-3; - position: relative; - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - &:hover { - color: $color-text1-1; - } - } - &.active { - color: $color-brand1-9; - &:hover { - color: $color-brand1-6; - } - } - &.locked { - color: red !important; - } - &:hover { - color: $color-brand1-6; - &:before { - content: attr(data-tooltip); - display: block; - height: auto; - width: auto; - position: absolute; - left: 50%; - transform: translate(-50%, 0); - bottom: -35px; - line-height: 18px; - font-size: 12px; - white-space: nowrap; - padding: 6px 8px; - border-radius: 4px; - background: $balloon-tooltip-color-bg; - color: $color-text1-3; - z-index: 100; - } - &:after { - content: ''; - display: block; - position: absolute; - left: 50%; - transform: translate(-50%, 0); - bottom: -5px; - border: 5px solid transparent; - border-bottom-color: $balloon-tooltip-color-bg; - opacity: 1; - visibility: visible; - z-index: 100; - } - } - i.next-icon { - &:before { - font-size: 16px; - } - margin-right: 0; - line-height: 18px; - } - span { - display: block; - margin: 0px -5px 0; - line-height: 16px; - text-align: center; - font-size: 12px; - transform: scale(0.8); - } -} diff --git a/packages/editor/src/skeleton/components/TopIcon/index.tsx b/packages/editor/src/skeleton/components/TopIcon/index.tsx deleted file mode 100644 index 2c14d8d33..000000000 --- a/packages/editor/src/skeleton/components/TopIcon/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React, { PureComponent } from 'react'; -import classNames from 'classnames'; -import { Icon } from '@alifd/next'; - -import './index.scss'; - -export interface TopIconProps { - active?: boolean; - className?: string; - disabled?: boolean; - icon: string; - id?: string; - locked?: boolean; - marked?: boolean; - onClick?: () => void; - style?: React.CSSProperties; - title?: string; -} - -export default class TopIcon extends PureComponent { - static displayName = 'LowcodeTopIcon'; - - static defaultProps = { - active: false, - className: '', - disabled: false, - icon: '', - id: '', - locked: false, - onClick: (): void => {}, - style: {}, - title: '' - }; - - render(): React.ReactNode { - const { active, disabled, icon, locked, title, className, id, style, onClick } = this.props; - return ( -
- -
- ); - } -} diff --git a/packages/editor/src/skeleton/components/TopPlugin/index.scss b/packages/editor/src/skeleton/components/TopPlugin/index.scss deleted file mode 100644 index 4bdd7b8d2..000000000 --- a/packages/editor/src/skeleton/components/TopPlugin/index.scss +++ /dev/null @@ -1,2 +0,0 @@ -.lowcode-top-addon { -} diff --git a/packages/editor/src/skeleton/components/TopPlugin/index.tsx b/packages/editor/src/skeleton/components/TopPlugin/index.tsx deleted file mode 100644 index 70c653f4f..000000000 --- a/packages/editor/src/skeleton/components/TopPlugin/index.tsx +++ /dev/null @@ -1,195 +0,0 @@ -import React, { PureComponent, Fragment, CSSProperties } from 'react'; - -import { Balloon, Badge, Dialog } from '@alifd/next'; -import TopIcon from '../TopIcon'; - -import './index.scss'; -import { PluginConfig, PluginClass } from '../../../framework/definitions'; -import Editor from '../../../framework/editor'; - -export interface TopPluginProps { - active?: boolean; - config: PluginConfig; - disabled?: boolean; - editor: Editor; - locked?: boolean; - marked?: boolean; - onClick?: () => void; - pluginClass: PluginClass; -} - -export interface TopPluginState { - dialogVisible: boolean; -} - -export default class TopPlugin extends PureComponent { - static displayName = 'LowcodeTopPlugin'; - - static defaultProps = { - active: false, - config: {}, - disabled: false, - marked: false, - locked: false, - onClick: (): void => {} - }; - - constructor(props, context) { - super(props, context); - this.state = { - dialogVisible: false - }; - } - - componentDidMount(): void { - const { config, editor } = this.props; - const pluginKey = config && config.pluginKey; - if (editor && pluginKey) { - editor.on(`${pluginKey}.dialog.show`, this.handleShow); - editor.on(`${pluginKey}.dialog.close`, this.handleClose); - } - } - - componentWillUnmount(): void { - const { config, editor } = this.props; - const pluginKey = config && config.pluginKey; - if (editor && pluginKey) { - editor.off(`${pluginKey}.dialog.show`, this.handleShow); - editor.off(`${pluginKey}.dialog.close`, this.handleClose); - } - } - - handleShow = (): void => { - const { disabled, config, onClick, editor } = this.props; - const pluginKey = config && config.pluginKey; - if (disabled || !pluginKey) return; - // 考虑到弹窗情况,延时发送消息 - setTimeout((): void => editor.emit(`${pluginKey}.plugin.activate`), 0); - this.handleOpen(); - onClick && onClick(); - }; - - handleClose = (): void => { - const { config, editor } = this.props; - const pluginKey = config && config.pluginKey; - const plugin = editor.plugins && editor.plugins[pluginKey]; - if (plugin && plugin.close) { - plugin.close().then((): void => { - this.setState({ - dialogVisible: false - }); - }); - } - }; - - handleOpen = (): void => { - // todo dialog类型的插件初始时拿不动插件实例 - this.setState({ - dialogVisible: true - }); - }; - - renderIcon = (clickCallback): React.ReactNode => { - const { active, disabled, marked, locked, config, onClick, editor } = this.props; - const { pluginKey, props } = config || {}; - const { icon, title } = props || {}; - const node = ( - { - if (disabled) return; - // 考虑到弹窗情况,延时发送消息 - setTimeout((): void => editor.emit(`${pluginKey}.plugin.activate`), 0); - clickCallback && clickCallback(); - onClick && onClick(); - }} - /> - ); - return marked ? {node} : node; - }; - - render(): React.ReactNode { - const { active, marked, locked, disabled, config, editor, pluginClass: Comp, style } = this.props; - const { pluginKey, pluginProps, props, type } = config || {}; - const { onClick, title } = props || {}; - const { dialogVisible } = this.state; - if (!pluginKey || !type) return null; - const node = - (Comp && ( - { - onClick && onClick.call(null, editor); - }} - {...pluginProps} - /> - )) || - null; - - switch (type) { - case 'LinkIcon': - return ( - - {this.renderIcon((): void => { - onClick && onClick.call(null, editor); - })} - - ); - case 'Icon': - return this.renderIcon((): void => { - onClick && onClick.call(null, editor); - }); - case 'DialogIcon': - return ( - - {this.renderIcon((): void => { - onClick && onClick.call(null, editor); - this.handleOpen(); - })} - { - editor.emit(`${pluginKey}.dialog.onOk`); - this.handleClose(); - }} - onCancel={this.handleClose} - onClose={this.handleClose} - title={title} - style={{ - width: 500, - ...(props.dialogProps && props.dialogProps.style) - }} - {...props.dialogProps} - visible={dialogVisible} - > - {node} - - - ); - case 'BalloonIcon': - return ( - { - onClick && onClick.call(null, editor); - })} - triggerType={['click', 'hover']} - {...props.balloonProps} - > - {node} - - ); - case 'Custom': - return marked ? {node} : node; - default: - return null; - } - } -} diff --git a/packages/editor/src/skeleton/config/skeleton.ts b/packages/editor/src/skeleton/config/skeleton.ts deleted file mode 100644 index ff8b4c563..000000000 --- a/packages/editor/src/skeleton/config/skeleton.ts +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/packages/editor/src/skeleton/config/utils.ts b/packages/editor/src/skeleton/config/utils.ts deleted file mode 100644 index ff8b4c563..000000000 --- a/packages/editor/src/skeleton/config/utils.ts +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/packages/editor/src/skeleton/global.scss b/packages/editor/src/skeleton/global.scss deleted file mode 100644 index 72f7b8525..000000000 --- a/packages/editor/src/skeleton/global.scss +++ /dev/null @@ -1,33 +0,0 @@ -body { - font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, Arial, PingFang SC-Light, Microsoft YaHei; - font-size: 12px; - padding: 0; - margin: 0; - * { - box-sizing: border-box; - } - color: $color-text1-3; -} - -.next-loading { - .next-loading-wrap { - height: 100%; - } -} -.lowcode-editor { - .lowcode-main-content { - position: absolute; - top: 50px; - left: 0; - right: 0; - bottom: 0; - display: flex; - background-color: rgba(31, 56, 88, 0.06); - } - .lowcode-center-area { - flex: 1; - display: flex; - flex-direction: column; - overflow: auto; - } -} diff --git a/packages/editor/src/skeleton/index.tsx b/packages/editor/src/skeleton/index.tsx deleted file mode 100644 index c30a0fc88..000000000 --- a/packages/editor/src/skeleton/index.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import React, { PureComponent } from 'react'; - -import { Loading, ConfigProvider } from '@alifd/next'; - -import Editor from '../framework/editor'; -import { EditorConfig, Utils, PluginClassSet } from '../framework/definitions'; -import { comboEditorConfig, parseSearch } from '../framework/utils'; - -import defaultConfig from './config/skeleton'; -import skeletonUtils from './config/utils'; - -import TopArea from './layouts/TopArea'; -import LeftArea from './layouts/LeftArea'; -import CenterArea from './layouts/CenterArea'; -import RightArea from './layouts/RightArea'; - -import './global.scss'; - -let renderIdx = 0; - -declare global { - interface Window { - __ctx: { - editor: Editor; - appHelper: Editor; - }; - } -} - -export interface SkeletonProps { - components: PluginClassSet; - config: EditorConfig; - history: object; - location: object; - match: object; - utils: Utils; -} - -export interface SkeletonState { - initReady?: boolean; - skeletonKey?: string; - __hasError?: boolean; -} - -export default class Skeleton extends PureComponent { - static displayName = 'LowcodeEditorSkeleton'; - - static getDerivedStateFromError(): SkeletonState { - return { - __hasError: true - }; - } - - private editor: Editor; - - constructor(props) { - super(props); - - this.state = { - initReady: false, - skeletonKey: `skeleton${renderIdx}` - }; - - this.init(); - } - - componentWillUnmount(): void { - this.editor && this.editor.destroy(); - } - - componentDidCatch(err): void { - console.error(err); - } - - init = (isReset: boolean = false): void => { - if (this.editor) { - this.editor.destroy(); - } - const { utils, config, components } = this.props; - const editor = new Editor(comboEditorConfig(defaultConfig, config), components, { - ...skeletonUtils, - ...utils - }); - this.editor = editor; - // eslint-disable-next-line no-underscore-dangle - window.__ctx = { - editor, - appHelper: editor - }; - editor.once('editor.reset', (): void => { - this.setState({ - initReady: false - }); - editor.emit('editor.beforeReset'); - this.init(true); - }); - - this.editor.init().then((): void => { - this.setState( - { - initReady: true, - // 刷新IDE时生成新的skeletonKey保证插件生命周期重新执行 - skeletonKey: isReset ? `skeleton${++renderIdx}` : this.state.skeletonKey - }, - (): void => { - editor.emit('editor.ready'); - editor.emit('ide.ready'); - isReset && editor.emit('ide.afterReset'); - } - ); - }); - }; - - render(): React.ReactNode { - const { initReady, skeletonKey, __hasError } = this.state; - const { location, history, match } = this.props; - if (__hasError || !this.editor) { - return 'error'; - } - - location.query = parseSearch(location.search); - this.editor.set('location', location); - this.editor.set('history', history); - this.editor.set('match', match); - - return ( - - -
- -
- - - - -
-
-
-
- ); - } -} diff --git a/packages/editor/src/skeleton/layouts/CenterArea/index.scss b/packages/editor/src/skeleton/layouts/CenterArea/index.scss deleted file mode 100644 index 40a1806a6..000000000 --- a/packages/editor/src/skeleton/layouts/CenterArea/index.scss +++ /dev/null @@ -1,3 +0,0 @@ -.lowcode-center-area { - padding: 0; -} diff --git a/packages/editor/src/skeleton/layouts/CenterArea/index.tsx b/packages/editor/src/skeleton/layouts/CenterArea/index.tsx deleted file mode 100644 index cf27d66db..000000000 --- a/packages/editor/src/skeleton/layouts/CenterArea/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React, { PureComponent } from 'react'; - -import Editor from '../../../framework/editor'; -import './index.scss'; -import AreaManager from '../../../framework/areaManager'; - -export interface CenterAreaProps { - editor: Editor; -} - -export default class CenterArea extends PureComponent { - static displayName = 'LowcodeCenterArea'; - - private editor: Editor; - - private areaManager: AreaManager; - - constructor(props) { - super(props); - this.editor = props.editor; - this.areaManager = new AreaManager(this.editor, 'centerArea'); - } - - componentDidMount(): void { - this.editor.on('skeleton.update', this.handleSkeletonUpdate); - } - - componentWillUnmount(): void { - this.editor.off('skeleton.update', this.handleSkeletonUpdate); - } - - handleSkeletonUpdate = (): void => { - // 当前区域插件状态改变是更新区域 - if (this.areaManager.isPluginStatusUpdate()) { - this.forceUpdate(); - } - }; - - render(): React.ReactNode { - const visiblePluginList = this.areaManager.getVisiblePluginList(); - return ( -
- {visiblePluginList.map( - (item): React.ReactNode => { - const Comp = this.editor.components[item.pluginKey]; - return ; - } - )} -
- ); - } -} diff --git a/packages/editor/src/skeleton/layouts/LeftArea/index.scss b/packages/editor/src/skeleton/layouts/LeftArea/index.scss deleted file mode 100644 index 8c69f42fc..000000000 --- a/packages/editor/src/skeleton/layouts/LeftArea/index.scss +++ /dev/null @@ -1,23 +0,0 @@ -.lowcode-left-area-nav { - width: 50px; - height: 100%; - background-color: $card-background; - border-right: 2px solid $color-line1-1; - position: relative; - .top-area { - position: absolute; - top: 0; - width: 100%; - padding: 12px 0; - background-color: $card-background; - max-height: 100%; - } - .bottom-area { - position: absolute; - bottom: 0; - width: 100%; - padding: 12px 0; - background-color: $card-background; - max-height: calc(100% - 20px); - } -} diff --git a/packages/editor/src/skeleton/layouts/LeftArea/index.tsx b/packages/editor/src/skeleton/layouts/LeftArea/index.tsx deleted file mode 100644 index 7f4684546..000000000 --- a/packages/editor/src/skeleton/layouts/LeftArea/index.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import Nav from './nav'; -import Panel from './panel'; - -export default { - Nav, - Panel -}; diff --git a/packages/editor/src/skeleton/layouts/LeftArea/nav.tsx b/packages/editor/src/skeleton/layouts/LeftArea/nav.tsx deleted file mode 100644 index cd749073a..000000000 --- a/packages/editor/src/skeleton/layouts/LeftArea/nav.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import React, { PureComponent } from 'react'; -import LeftPlugin from '../../components/LeftPlugin'; -import './index.scss'; -import Editor from '../../../framework/editor'; -import { PluginConfig } from '../../../framework/definitions'; -import AreaManager from '../../../framework/areaManager'; -import { isEmpty } from '../../../framework/utils'; - -export interface LeftAreaNavProps { - editor: Editor; -} - -export interface LeftAreaNavState { - activeKey: string; -} - -export default class LeftAreaNav extends PureComponent { - static displayName = 'LowcodeLeftAreaNav'; - - private editor: Editor; - - private areaManager: AreaManager; - - // private cacheActiveKey: string; - - constructor(props) { - super(props); - this.editor = props.editor; - this.areaManager = new AreaManager(this.editor, 'leftArea'); - - this.state = { - activeKey: 'none' - }; - // this.cacheActiveKey = 'none'; - } - - componentDidMount(): void { - this.editor.on('skeleton.update', this.handleSkeletonUpdate); - this.editor.on('leftNav.change', this.handlePluginChange); - const visiblePanelPluginList = this.areaManager.getVisiblePluginList().filter(item => item.type === 'IconPanel'); - const defaultKey = (visiblePanelPluginList[0] && visiblePanelPluginList[0].pluginKey) || 'componentAttr'; - this.handlePluginChange(defaultKey); - } - - componentWillUnmount(): void { - this.editor.off('skeleton.update', this.handleSkeletonUpdate); - this.editor.off('leftNav.change', this.handlePluginChange); - } - - handleSkeletonUpdate = (): void => { - // 当前区域插件状态改变是更新区域 - if (this.areaManager.isPluginStatusUpdate()) { - this.forceUpdate(); - } - }; - - handlePluginChange = (key: string): void => { - const { activeKey } = this.state; - const plugins = this.editor.plugins; - const prePlugin = plugins[activeKey]; - const nextPlugin = plugins[key]; - if (activeKey === 'none') { - if (nextPlugin) { - nextPlugin.open().then((): void => { - this.updateActiveKey(key); - }); - } - } else if (activeKey === key) { - if (prePlugin) { - prePlugin.close().then((): void => { - this.updateActiveKey('none'); - }); - } - } else if (prePlugin) { - // 先关后开 - prePlugin.close().then((): void => { - if (nextPlugin) { - nextPlugin.open().then((): void => { - this.updateActiveKey(key); - }); - } - }); - } - }; - - // handleCollapseClick = (): void => { - // const { activeKey } = this.state; - // if (activeKey === 'none') { - // const plugin = this.editor.plugins[this.cacheActiveKey]; - // if (plugin) { - // plugin.open().then(() => { - // this.updateActiveKey(this.cacheActiveKey); - // }); - // } - // } else { - // const plugin = this.editor.plugins[activeKey]; - // if (plugin) { - // plugin.close().then(() => { - // this.updateActiveKey('none'); - // }); - // } - // } - // }; - - handlePluginClick = (item: PluginConfig): void => { - if (item.type === 'PanelIcon') { - this.handlePluginChange(item.pluginKey); - } - }; - - updateActiveKey = (key: string): void => { - // if (key === 'none') { - // this.cacheActiveKey = this.state.activeKey; - // } - this.editor.set('leftNav', key); - this.setState({ activeKey: key }); - this.editor.emit('leftPanel.show', key); - }; - - renderPluginList = (list: PluginConfig[] = []): React.ReactElement[] => { - const { activeKey } = this.state; - return list.map( - (item): React.ReactElement => { - const pluginStatus = this.editor.pluginStatus[item.pluginKey]; - return ( - this.handlePluginClick(item)} - active={activeKey === item.pluginKey} - {...pluginStatus} - /> - ); - } - ); - }; - - render(): React.ReactNode { - const topList: PluginConfig[] = []; - const bottomList: PluginConfig[] = []; - const visiblePluginList = this.areaManager.getVisiblePluginList(); - if (isEmpty(visiblePluginList)) { - return null; - } - visiblePluginList.forEach((item): void => { - const align = item.props && item.props.align === 'bottom' ? 'bottom' : 'top'; - if (align === 'bottom') { - bottomList.push(item); - } else { - topList.push(item); - } - }); - - return ( -
-
{this.renderPluginList(bottomList)}
-
- {/* */} - {this.renderPluginList(topList)} -
-
- ); - } -} diff --git a/packages/editor/src/skeleton/layouts/LeftArea/panel.tsx b/packages/editor/src/skeleton/layouts/LeftArea/panel.tsx deleted file mode 100644 index 31f2c5343..000000000 --- a/packages/editor/src/skeleton/layouts/LeftArea/panel.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { PureComponent, Fragment } from 'react'; -import Panel from '../../components/Panel'; -import './index.scss'; -import Editor from '../../../framework/editor'; -import AreaManager from '../../../framework/areaManager'; - -export interface LeftAreaPanelProps { - editor: Editor; -} - -export interface LeftAreaPanelState { - activeKey: string; -} - -export default class LeftAreaPanel extends PureComponent { - static displayName = 'LowcodeLeftAreaPanel'; - - private editor: Editor; - - private areaManager: AreaManager; - - constructor(props) { - super(props); - this.editor = props.editor; - this.areaManager = new AreaManager(this.editor, 'leftArea'); - - this.state = { - activeKey: 'none' - }; - } - - componentDidMount(): void { - this.editor.on('skeleton.update', this.handleSkeletonUpdate); - this.editor.on('leftPanel.show', this.handlePluginChange); - } - - componentWillUnmount(): void { - this.editor.off('skeleton.update', this.handleSkeletonUpdate); - this.editor.off('leftPanel.show', this.handlePluginChange); - } - - handleSkeletonUpdate = (): void => { - // 当前区域插件状态改变是更新区域 - if (this.areaManager.isPluginStatusUpdate('PanelIcon')) { - this.forceUpdate(); - } - }; - - handlePluginChange = (key: string): void => { - this.setState({ - activeKey: key - }); - }; - - render(): React.ReactNode { - const { activeKey } = this.state; - const list = this.areaManager.getVisiblePluginList('PanelIcon'); - - return ( - - {list.map( - (item): React.ReactElement => { - const Comp = this.editor.components[item.pluginKey]; - return ( - - - - ); - } - )} - - ); - } -} diff --git a/packages/editor/src/skeleton/layouts/RightArea/index.scss b/packages/editor/src/skeleton/layouts/RightArea/index.scss deleted file mode 100644 index 7373933b0..000000000 --- a/packages/editor/src/skeleton/layouts/RightArea/index.scss +++ /dev/null @@ -1,39 +0,0 @@ -.lowcode-right-area { - width: 262px; - height: 100%; - background-color: $card-background; - border-left: 2px solid $color-line1-1; - - .right-panel { - overflow: auto; - // border-top: 2px solid $color-line1-1; - } - - //tab定义 - .right-tabs.next-tabs { - .next-tabs-nav { - width: 100%; - .next-tabs-tab-inner { - padding-left: 0; - padding-right: 0; - } - .right-plugin-title { - text-align: center; - &.locked { - color: red !important; - } - &.active { - color: $color-brand1-9 !important; - } - &.disabled { - cursor: not-allowed; - color: $color-text1-1; - } - .next-icon { - line-height: 15px; - margin-right: 2px; - } - } - } - } -} diff --git a/packages/editor/src/skeleton/layouts/RightArea/index.tsx b/packages/editor/src/skeleton/layouts/RightArea/index.tsx deleted file mode 100644 index 64c44af50..000000000 --- a/packages/editor/src/skeleton/layouts/RightArea/index.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import React, { PureComponent } from 'react'; -import { Tab, Badge, Icon } from '@alifd/next'; -import './index.scss'; -import Editor from '../../../framework/editor'; -import AreaManager from '../../../framework/areaManager'; -import { PluginConfig } from '../../../framework/definitions'; -import { isEmpty } from '../../../framework/utils'; - -export interface RightAreaProps { - editor: Editor; -} - -export interface RightAreaState { - activeKey: string; -} - -export default class RightArea extends PureComponent { - static displayName = 'LowcodeRightArea'; - - private editor: Editor; - - private areaManager: AreaManager; - - constructor(props) { - super(props); - this.editor = props.editor; - this.areaManager = new AreaManager(this.editor, 'rightArea'); - this.state = { - activeKey: '' - }; - } - - componentDidMount(): void { - this.editor.on('skeleton.update', this.handleSkeletonUpdate); - this.editor.on('rightNav.change', this.handlePluginChange); - const visiblePluginList = this.areaManager.getVisiblePluginList('TabPanel'); - const defaultKey = (visiblePluginList[0] && visiblePluginList[0].pluginKey) || 'componentAttr'; - this.handlePluginChange(defaultKey, true); - } - - componentWillUnmount(): void { - this.editor.off('skeleton.update', this.handleSkeletonUpdate); - this.editor.off('rightNav.change', this.handlePluginChange); - } - - handleSkeletonUpdate = (): void => { - // 当前区域插件状态改变是更新区域 - if (this.areaManager.isPluginStatusUpdate()) { - const pluginStatus = this.editor.pluginStatus; - const activeKey = this.state.activeKey; - if (pluginStatus[activeKey] && pluginStatus[activeKey].visible) { - this.forceUpdate(); - } else { - const currentPlugin = this.editor.plugins[activeKey]; - if (currentPlugin) { - currentPlugin.close().then((): void => { - this.setState( - { - activeKey: '' - }, - (): void => { - const visiblePluginList = this.areaManager.getVisiblePluginList(); - const firstPlugin = visiblePluginList && visiblePluginList[0]; - if (firstPlugin) { - this.handlePluginChange(firstPlugin.pluginKey); - } - } - ); - }); - } - } - } - }; - - handlePluginChange = (key: string, isinit?: boolean): void => { - const activeKey = this.state.activeKey; - const plugins = this.editor.plugins || {}; - const openPlugin = (): void => { - if (!plugins[key]) { - console.error(`plugin ${key} has not regist in the editor`); - return; - } - plugins[key].open().then((): void => { - this.editor.set('rightNav', key); - this.setState({ - activeKey: key - }); - }); - }; - if (key === activeKey && !isinit) return; - if (activeKey && plugins[activeKey]) { - plugins[activeKey].close().then((): void => { - openPlugin(); - }); - } else { - openPlugin(); - } - }; - - renderTabTitle = (config: PluginConfig): React.ReactElement => { - const { icon, title } = config.props || {}; - const pluginStatus = this.editor.pluginStatus[config.pluginKey]; - const { marked, disabled, locked } = pluginStatus; - const active = this.state.activeKey === config.pluginKey; - - const renderTitle = (): React.ReactElement => ( -
- {!!icon && } - {title} -
- ); - if (marked) { - return {renderTitle()}; - } - return renderTitle(); - }; - - renderTabPanels = (list: PluginConfig[], height: string): React.ReactNode => { - if (isEmpty(list)) { - return null; - } - return ( - - {list.map( - (item): React.ReactElement => { - const Comp = this.editor.components[item.pluginKey]; - return ( - - - - ); - } - )} - - ); - }; - - renderPanels = (list: PluginConfig[], height: string): React.ReactNode => { - return list.map( - (item): React.ReactElement => { - const Comp = this.editor.components[item.pluginKey]; - return ( -
- -
- ); - } - ); - }; - - render(): React.ReactNode { - const tabList = this.areaManager.getVisiblePluginList('TabPanel'); - const panelList = this.areaManager.getVisiblePluginList('Panel'); - if (isEmpty(panelList) && isEmpty(tabList)) { - return null; - } else if (tabList.length === 1) { - panelList.unshift(tabList[0]); - tabList.splice(0, 1); - } - const height = `${Math.floor(100 / (panelList.length + (tabList.length > 0 ? 1 : 0)))}%`; - return ( -
- {this.renderTabPanels(tabList, height)} - {this.renderPanels(panelList, height)} -
- ); - } -} diff --git a/packages/editor/src/skeleton/layouts/TopArea/index.scss b/packages/editor/src/skeleton/layouts/TopArea/index.scss deleted file mode 100644 index c0a132f84..000000000 --- a/packages/editor/src/skeleton/layouts/TopArea/index.scss +++ /dev/null @@ -1,30 +0,0 @@ -.lowcode-top-area { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 50px; - background-color: $card-background; - border-bottom: 2px solid $color-line1-1; - user-select: none; - .divider { - max-width: 0; - margin: 12px 16px; - height: 24px; - border-right: 1px solid $color-line1-2; - } - .next-col { - text-align: center; - } - .left-area { - padding: 0 16px; - } - .right-area { - position: absolute; - right: 0; - top: 0; - padding: 0 16px; - height: 100%; - background: $card-background; - } -} diff --git a/packages/editor/src/skeleton/layouts/TopArea/index.tsx b/packages/editor/src/skeleton/layouts/TopArea/index.tsx deleted file mode 100644 index d6b33453c..000000000 --- a/packages/editor/src/skeleton/layouts/TopArea/index.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import React, { PureComponent } from 'react'; -import { Grid } from '@alifd/next'; -import TopPlugin from '../../components/TopPlugin'; -import './index.scss'; -import Editor from '../../../framework/index'; -import { PluginConfig } from '../../../framework/definitions'; -import AreaManager from '../../../framework/areaManager'; - -const { Row, Col } = Grid; - -export interface TopAreaProps { - editor: Editor; -} - -export default class TopArea extends PureComponent { - static displayName = 'LowcodeTopArea'; - - private areaManager: AreaManager; - - private editor: Editor; - - constructor(props) { - super(props); - this.editor = props.editor; - this.areaManager = new AreaManager(props.editor, 'topArea'); - } - - componentDidMount(): void { - this.editor.on('skeleton.update', this.handleSkeletonUpdate); - } - - componentWillUnmount(): void { - this.editor.off('skeleton.update', this.handleSkeletonUpdate); - } - - handleSkeletonUpdate = (): void => { - // 当前区域插件状态改变是更新区域 - if (this.areaManager.isPluginStatusUpdate()) { - this.forceUpdate(); - } - }; - - renderPluginList = (list: PluginConfig[] = []): React.ReactElement[] => { - return list.map( - (item, idx): React.ReactElement => { - const isDivider = item.type === 'Divider'; - return ( - - {!isDivider && ( - - )} - - ); - } - ); - }; - - render(): React.ReactNode { - const leftList: PluginConfig[] = []; - const rightList: PluginConfig[] = []; - const visiblePluginList = this.areaManager.getVisiblePluginList(); - visiblePluginList.forEach((item): void => { - const align = item.props && item.props.align === 'right' ? 'right' : 'left'; - // 分隔符不允许相邻 - if (item.type === 'Divider') { - const currList = align === 'right' ? rightList : leftList; - if (currList.length === 0 || currList[currList.length - 1].type === 'Divider') return; - } - if (align === 'right') { - rightList.push(item); - } else { - leftList.push(item); - } - }); - return ( -
-
- {this.renderPluginList(leftList)} -
-
- {this.renderPluginList(rightList)} -
-
- ); - } -} diff --git a/packages/editor/src/skeleton/locale/en-US.js b/packages/editor/src/skeleton/locale/en-US.js deleted file mode 100644 index 936701e33..000000000 --- a/packages/editor/src/skeleton/locale/en-US.js +++ /dev/null @@ -1,10 +0,0 @@ -export default { - loading: 'loading...', - rejectRedirect: 'Redirect is not allowed', - expand: 'Unfold', - fold: 'Fold', - pageNotExist: 'The current Page not exist', - enterFromAppCenter: 'Please enter from the app center', - noPermission: 'Sorry, you do not have the develop permission', - getPermission: 'Please connect the app owners {owners} to get the permission' -}; diff --git a/packages/editor/src/skeleton/locale/ja-JP.js b/packages/editor/src/skeleton/locale/ja-JP.js deleted file mode 100644 index ff8b4c563..000000000 --- a/packages/editor/src/skeleton/locale/ja-JP.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/packages/editor/src/skeleton/locale/zh-CN.js b/packages/editor/src/skeleton/locale/zh-CN.js deleted file mode 100644 index efe4ea898..000000000 --- a/packages/editor/src/skeleton/locale/zh-CN.js +++ /dev/null @@ -1,10 +0,0 @@ -export default { - loading: '加载中...', - rejectRedirect: '开发中,已阻止发生跳转', - expand: '展开', - fold: '收起', - pageNotExist: '当前访问地址不存在', - enterFromAppCenter: '请从应用中心入口重新进入', - noPermission: '抱歉,您暂无开发权限', - getPermission: '请移步应用中心申请开发权限, 或联系 {owners} 开通权限' -}; diff --git a/packages/editor/src/skeleton/locale/zh-TW.js b/packages/editor/src/skeleton/locale/zh-TW.js deleted file mode 100644 index ff8b4c563..000000000 --- a/packages/editor/src/skeleton/locale/zh-TW.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/packages/editor/src/skeleton/skeleton.tsx b/packages/editor/src/skeleton/skeleton.tsx deleted file mode 100644 index eababc5f7..000000000 --- a/packages/editor/src/skeleton/skeleton.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React, { PureComponent } from 'react'; - -import { HashRouter as Router, Route } from 'react-router-dom'; -import { Loading, ConfigProvider } from '@alifd/next'; - -import Editor from '../framework/editor'; -import { EditorConfig, Utils, PluginComponents } from '../framework/definitions'; -import { comboEditorConfig, parseSearch } from '../framework/utils'; - -import defaultConfig from './config/skeleton'; -import skeletonUtils from './config/utils'; - -import TopArea from './layouts/TopArea'; -import LeftArea from './layouts/LeftArea'; -import CenterArea from './layouts/CenterArea'; -import RightArea from './layouts/RightArea'; - -import './global.scss'; - -let renderIdx = 0; - -export interface SkeletonProps { - components: PluginComponents; - config: EditorConfig; - utils: Utils; -} - -export interface SkeletonState { - initReady: boolean; - skeletonKey: string; - __hasError?: boolean; -} - -export default class Skeleton extends PureComponent { - static displayName = 'LowcodeEditorSkeleton'; - - static getDerivedStateFromError() { - return { - __hasError: true - }; - } - - private editor: Editor; - - constructor(props) { - super(props); - - this.state = { - initReady: false, - skeletonKey: `skeleton${renderIdx}` - }; - - this.init(); - } - - componentWillUnmount() { - this.editor && this.editor.destroy(); - } - - componentDidCatch(err) { - console.error(err); - } - - init = (isReset: boolean = false): void => { - if (this.editor) { - this.editor.destroy(); - } - const { utils, config, components } = this.props; - const editor = (this.editor = new Editor(comboEditorConfig(defaultConfig, config), components, { - ...skeletonUtils, - ...utils - })); - window.__ctx = { - editor, - appHelper: editor - }; - editor.once('editor.reset', () => { - this.setState({ - initReady: false - }); - editor.emit('editor.beforeReset'); - this.init(true); - }); - - this.editor.init().then(() => { - this.setState( - { - initReady: true, - //刷新IDE时生成新的skeletonKey保证插件生命周期重新执行 - skeletonKey: isReset ? `skeleton${++renderIdx}` : this.state.skeletonKey - }, - () => { - editor.emit('editor.ready'); - isReset && editor.emit('ide.afterReset'); - } - ); - }); - }; - - render() { - const { initReady, skeletonKey, __hasError } = this.state; - if (__hasError || !this.editor) { - return 'error'; - } - - return ( - - { - const { location, history, match } = props; - location.query = parseSearch(location.search); - this.editor.set('location', location); - this.editor.set('history', history); - this.editor.set('match', match); - console.log('&&&&&&&&&&'); - return ( - - -
- -
- - - - -
-
-
-
- ); - }} - /> -
- ); - } -} diff --git a/packages/material-parser/package.json b/packages/material-parser/package.json index 068a7fed4..0966e5681 100644 --- a/packages/material-parser/package.json +++ b/packages/material-parser/package.json @@ -42,6 +42,7 @@ }, "license": "MIT", "dependencies": { + "@ali/lowcode-editor-framework": "^0.0.1", "@babel/generator": "^7.8.4", "@babel/parser": "^7.8.4", "@babel/traverse": "^7.8.4", diff --git a/packages/plugin-setters/package.json b/packages/plugin-setters/package.json index 05ce25bac..c297ebf59 100644 --- a/packages/plugin-setters/package.json +++ b/packages/plugin-setters/package.json @@ -7,6 +7,7 @@ "@ali/iceluna-comp-object-button": "^1.0.23", "@ali/iceluna-comp-react-node": "^1.0.5", "@ali/iceluna-sdk": "^1.0.5-beta.24", + "@ali/lowcode-editor-framework": "^0.0.1", "@alifd/next": "^1.19.16", "@alife/next": "^1.19.16", "acorn": "^6.4.1", diff --git a/packages/plugin-settings/package.json b/packages/plugin-settings/package.json index cd4bbe4c6..952795cb2 100644 --- a/packages/plugin-settings/package.json +++ b/packages/plugin-settings/package.json @@ -12,6 +12,7 @@ "test:snapshot": "ava --update-snapshots" }, "dependencies": { + "@ali/lowcode-editor-framework": "^0.0.1", "@alifd/next": "^1.19.16", "classnames": "^2.2.6", "react": "^16", @@ -25,9 +26,9 @@ "@types/react-dom": "^16", "eslint": "^6.5.1", "prettier": "^1.18.2", + "ts-node": "^8.0.1", "tslib": "^1.9.3", - "typescript": "^3.1.3", - "ts-node": "^8.0.1" + "typescript": "^3.1.3" }, "ava": { "compileEnhancements": false, diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index fd8e46e29..ba214fd16 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -26,6 +26,7 @@ "@ali/iceluna-comp-div": "^0.0.5", "@ali/iceluna-rax": "0.0.5", "@ali/lib-mtop": "^2.5.1", + "@ali/lowcode-editor-framework": "^0.0.1", "@alifd/next": "^1.18.17", "debug": "^4.1.1", "driver-universal": "^3.1.2", @@ -45,9 +46,9 @@ "whatwg-fetch": "^3.0.0" }, "peerDependencies": { + "prop-types": "^15.7.2", "react": "^16.8.6", - "react-dom": "^16.8.6", - "prop-types": "^15.7.2" + "react-dom": "^16.8.6" }, "devDependencies": { "@babel/cli": "^7.4.4", diff --git a/packages/runtime-framework/package.json b/packages/runtime-framework/package.json index 225792897..fe8370bf4 100644 --- a/packages/runtime-framework/package.json +++ b/packages/runtime-framework/package.json @@ -26,6 +26,7 @@ }, "license": "MIT", "dependencies": { + "@ali/lowcode-editor-framework": "^0.0.1", "@ali/recore": "^1.6.9" } } diff --git a/packages/utils/package.json b/packages/utils/package.json index b90bb4493..e00dce7a2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "@ali/lowcode-editor-framework": "^0.0.1", "@babel/runtime": "^7.8.7" } } From e372689c1815c34e963d6d62555822b549530cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8B=E7=BE=8A?= Date: Wed, 25 Mar 2020 12:13:17 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=E6=8F=92=E4=BB=B6=E6=8B=86=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-skeleton/es/global.scss | 3 +- packages/editor-skeleton/es/index.d.ts | 47 +- packages/editor-skeleton/es/index.js | 163 +- packages/editor-skeleton/es/skeleton.d.ts | 42 + packages/editor-skeleton/es/skeleton.js | 157 + packages/editor-skeleton/src/index.ts | 10 + .../src/{index.tsx => skeleton.tsx} | 0 packages/editor/package.json | 3 + packages/editor/src/config/components.js | 8 +- packages/plugin-logo/.editorconfig | 12 + packages/plugin-logo/.eslintignore | 11 + packages/plugin-logo/.eslintrc.js | 16 + packages/plugin-logo/.gitignore | 20 + packages/plugin-logo/.stylelintignore | 7 + packages/plugin-logo/.stylelintrc.js | 3 + packages/plugin-logo/README.md | 1 + packages/plugin-logo/abc.json | 4 + packages/plugin-logo/build.json | 9 + packages/plugin-logo/demo/usage.md | 24 + packages/plugin-logo/es/index.d.ts | 9 + packages/plugin-logo/es/index.js | 17 + .../logo => plugin-logo/es}/index.scss | 0 packages/plugin-logo/es/style.js | 1 + packages/plugin-logo/jsconfig.json | 9 + packages/plugin-logo/package-lock.json | 4179 +++++++++++++++++ packages/plugin-logo/package.json | 55 + packages/plugin-logo/src/index.scss | 13 + .../logo => plugin-logo/src}/index.tsx | 2 +- packages/plugin-logo/tests/index.js | 1 + packages/plugin-logo/tsconfig.json | 21 + packages/plugin-save/.editorconfig | 12 + packages/plugin-save/.eslintignore | 11 + packages/plugin-save/.eslintrc.js | 16 + packages/plugin-save/.gitignore | 20 + packages/plugin-save/.stylelintignore | 7 + packages/plugin-save/.stylelintrc.js | 3 + packages/plugin-save/README.md | 1 + packages/plugin-save/abc.json | 4 + packages/plugin-save/build.json | 9 + packages/plugin-save/demo/usage.md | 24 + packages/plugin-save/es/index.d.ts | 5 + packages/plugin-save/es/index.js | 18 + .../save => plugin-save/es}/index.scss | 0 packages/plugin-save/es/style.js | 2 + packages/plugin-save/jsconfig.json | 9 + packages/plugin-save/package-lock.json | 4179 +++++++++++++++++ packages/plugin-save/package.json | 56 + packages/plugin-save/src/index.scss | 3 + .../save => plugin-save/src}/index.tsx | 2 +- packages/plugin-save/tests/index.js | 1 + packages/plugin-save/tsconfig.json | 21 + packages/plugin-undo-redo/.editorconfig | 12 + packages/plugin-undo-redo/.eslintignore | 11 + packages/plugin-undo-redo/.eslintrc.js | 16 + packages/plugin-undo-redo/.gitignore | 20 + packages/plugin-undo-redo/.stylelintignore | 7 + packages/plugin-undo-redo/.stylelintrc.js | 3 + packages/plugin-undo-redo/README.md | 1 + packages/plugin-undo-redo/abc.json | 4 + packages/plugin-undo-redo/build.json | 9 + packages/plugin-undo-redo/demo/usage.md | 24 + packages/plugin-undo-redo/es/index.d.ts | 21 + packages/plugin-undo-redo/es/index.js | 101 + .../es}/index.scss | 0 packages/plugin-undo-redo/es/style.js | 2 + packages/plugin-undo-redo/jsconfig.json | 9 + packages/plugin-undo-redo/package-lock.json | 4179 +++++++++++++++++ packages/plugin-undo-redo/package.json | 56 + packages/plugin-undo-redo/src/index.scss | 0 .../src}/index.tsx | 4 +- packages/plugin-undo-redo/tests/index.js | 1 + packages/plugin-undo-redo/tsconfig.json | 21 + 72 files changed, 13542 insertions(+), 209 deletions(-) create mode 100644 packages/editor-skeleton/es/skeleton.d.ts create mode 100644 packages/editor-skeleton/es/skeleton.js create mode 100644 packages/editor-skeleton/src/index.ts rename packages/editor-skeleton/src/{index.tsx => skeleton.tsx} (100%) create mode 100644 packages/plugin-logo/.editorconfig create mode 100644 packages/plugin-logo/.eslintignore create mode 100644 packages/plugin-logo/.eslintrc.js create mode 100644 packages/plugin-logo/.gitignore create mode 100644 packages/plugin-logo/.stylelintignore create mode 100644 packages/plugin-logo/.stylelintrc.js create mode 100644 packages/plugin-logo/README.md create mode 100644 packages/plugin-logo/abc.json create mode 100644 packages/plugin-logo/build.json create mode 100644 packages/plugin-logo/demo/usage.md create mode 100644 packages/plugin-logo/es/index.d.ts create mode 100644 packages/plugin-logo/es/index.js rename packages/{editor/src/plugins/logo => plugin-logo/es}/index.scss (100%) create mode 100644 packages/plugin-logo/es/style.js create mode 100644 packages/plugin-logo/jsconfig.json create mode 100644 packages/plugin-logo/package-lock.json create mode 100644 packages/plugin-logo/package.json create mode 100644 packages/plugin-logo/src/index.scss rename packages/{editor/src/plugins/logo => plugin-logo/src}/index.tsx (84%) create mode 100644 packages/plugin-logo/tests/index.js create mode 100644 packages/plugin-logo/tsconfig.json create mode 100644 packages/plugin-save/.editorconfig create mode 100644 packages/plugin-save/.eslintignore create mode 100644 packages/plugin-save/.eslintrc.js create mode 100644 packages/plugin-save/.gitignore create mode 100644 packages/plugin-save/.stylelintignore create mode 100644 packages/plugin-save/.stylelintrc.js create mode 100644 packages/plugin-save/README.md create mode 100644 packages/plugin-save/abc.json create mode 100644 packages/plugin-save/build.json create mode 100644 packages/plugin-save/demo/usage.md create mode 100644 packages/plugin-save/es/index.d.ts create mode 100644 packages/plugin-save/es/index.js rename packages/{editor/src/plugins/save => plugin-save/es}/index.scss (100%) create mode 100644 packages/plugin-save/es/style.js create mode 100644 packages/plugin-save/jsconfig.json create mode 100644 packages/plugin-save/package-lock.json create mode 100644 packages/plugin-save/package.json create mode 100644 packages/plugin-save/src/index.scss rename packages/{editor/src/plugins/save => plugin-save/src}/index.tsx (85%) create mode 100644 packages/plugin-save/tests/index.js create mode 100644 packages/plugin-save/tsconfig.json create mode 100644 packages/plugin-undo-redo/.editorconfig create mode 100644 packages/plugin-undo-redo/.eslintignore create mode 100644 packages/plugin-undo-redo/.eslintrc.js create mode 100644 packages/plugin-undo-redo/.gitignore create mode 100644 packages/plugin-undo-redo/.stylelintignore create mode 100644 packages/plugin-undo-redo/.stylelintrc.js create mode 100644 packages/plugin-undo-redo/README.md create mode 100644 packages/plugin-undo-redo/abc.json create mode 100644 packages/plugin-undo-redo/build.json create mode 100644 packages/plugin-undo-redo/demo/usage.md create mode 100644 packages/plugin-undo-redo/es/index.d.ts create mode 100644 packages/plugin-undo-redo/es/index.js rename packages/{editor/src/plugins/undoRedo => plugin-undo-redo/es}/index.scss (100%) create mode 100644 packages/plugin-undo-redo/es/style.js create mode 100644 packages/plugin-undo-redo/jsconfig.json create mode 100644 packages/plugin-undo-redo/package-lock.json create mode 100644 packages/plugin-undo-redo/package.json create mode 100644 packages/plugin-undo-redo/src/index.scss rename packages/{editor/src/plugins/undoRedo => plugin-undo-redo/src}/index.tsx (92%) create mode 100644 packages/plugin-undo-redo/tests/index.js create mode 100644 packages/plugin-undo-redo/tsconfig.json diff --git a/packages/editor-skeleton/es/global.scss b/packages/editor-skeleton/es/global.scss index 72f7b8525..a6b6aea91 100644 --- a/packages/editor-skeleton/es/global.scss +++ b/packages/editor-skeleton/es/global.scss @@ -1,5 +1,6 @@ body { - font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, Arial, PingFang SC-Light, Microsoft YaHei; + font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, + Arial, PingFang SC-Light, Microsoft YaHei; font-size: 12px; padding: 0; margin: 0; diff --git a/packages/editor-skeleton/es/index.d.ts b/packages/editor-skeleton/es/index.d.ts index 66a91524c..d0522d0f9 100644 --- a/packages/editor-skeleton/es/index.d.ts +++ b/packages/editor-skeleton/es/index.d.ts @@ -1,42 +1,5 @@ -import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { EditorConfig, Utils, PluginClassSet } from '@ali/lowcode-editor-framework/lib/definitions'; -import './global.scss'; -declare global { - interface Window { - __ctx: { - editor: Editor; - appHelper: Editor; - }; - } -} -export interface SkeletonProps { - components: PluginClassSet; - config: EditorConfig; - history: object; - location: object; - match: object; - utils: Utils; -} -export interface SkeletonState { - initReady?: boolean; - skeletonKey?: string; - __hasError?: boolean; -} -export declare class Skeleton extends PureComponent { - static displayName: string; - static getDerivedStateFromError(): SkeletonState; - private editor; - constructor(props: any); - componentWillUnmount(): void; - componentDidCatch(err: any): void; - init: (isReset?: boolean) => void; - render(): React.ReactNode; -} -export interface SkeletonWithRouterProps { - components: PluginClassSet; - config: EditorConfig; - utils: Utils; -} -declare const SkeletonWithRouter: React.FC; -export default SkeletonWithRouter; +import Skeleton from './skeleton'; +import Panel from './components/Panel'; +import TopIcon from './components/TopIcon'; +export default Skeleton; +export { Panel, TopIcon }; diff --git a/packages/editor-skeleton/es/index.js b/packages/editor-skeleton/es/index.js index c853d170a..a6093a6aa 100644 --- a/packages/editor-skeleton/es/index.js +++ b/packages/editor-skeleton/es/index.js @@ -1,158 +1,5 @@ -import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; -import _ConfigProvider from "@alifd/next/es/config-provider"; -import _Loading from "@alifd/next/es/loading"; -import _extends from "@babel/runtime/helpers/extends"; -import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; -import React, { PureComponent } from 'react'; -import { HashRouter as Router, Route } from 'react-router-dom'; -import Editor, { utils } from '@ali/lowcode-editor-framework'; -import defaultConfig from './config/skeleton'; -import skeletonUtils from './config/utils'; -import TopArea from './layouts/TopArea'; -import LeftArea from './layouts/LeftArea'; -import CenterArea from './layouts/CenterArea'; -import RightArea from './layouts/RightArea'; -import './global.scss'; -var comboEditorConfig = utils.comboEditorConfig, - parseSearch = utils.parseSearch; -var renderIdx = 0; -export var Skeleton = /*#__PURE__*/function (_PureComponent) { - _inheritsLoose(Skeleton, _PureComponent); - - Skeleton.getDerivedStateFromError = function getDerivedStateFromError() { - return { - __hasError: true - }; - }; - - function Skeleton(props) { - var _this; - - _this = _PureComponent.call(this, props) || this; - _this.editor = void 0; - - _this.init = function (isReset) { - if (isReset === void 0) { - isReset = false; - } - - if (_this.editor) { - _this.editor.destroy(); - } - - var _this$props = _this.props, - utils = _this$props.utils, - config = _this$props.config, - components = _this$props.components; - var editor = new Editor(comboEditorConfig(defaultConfig, config), components, _extends({}, skeletonUtils, {}, utils)); - _this.editor = editor; // eslint-disable-next-line no-underscore-dangle - - window.__ctx = { - editor: editor, - appHelper: editor - }; - editor.once('editor.reset', function () { - _this.setState({ - initReady: false - }); - - editor.emit('editor.beforeReset'); - - _this.init(true); - }); - - _this.editor.init().then(function () { - _this.setState({ - initReady: true, - // 刷新IDE时生成新的skeletonKey保证插件生命周期重新执行 - skeletonKey: isReset ? "skeleton" + ++renderIdx : _this.state.skeletonKey - }, function () { - editor.emit('editor.ready'); - editor.emit('ide.ready'); - isReset && editor.emit('ide.afterReset'); - }); - }); - }; - - _this.state = { - initReady: false, - skeletonKey: "skeleton" + renderIdx - }; - - _this.init(); - - return _this; - } - - var _proto = Skeleton.prototype; - - _proto.componentWillUnmount = function componentWillUnmount() { - this.editor && this.editor.destroy(); - }; - - _proto.componentDidCatch = function componentDidCatch(err) { - console.error(err); - }; - - _proto.render = function render() { - var _this$state = this.state, - initReady = _this$state.initReady, - skeletonKey = _this$state.skeletonKey, - __hasError = _this$state.__hasError; - var _this$props2 = this.props, - location = _this$props2.location, - history = _this$props2.history, - match = _this$props2.match; - - if (__hasError || !this.editor) { - return 'error'; - } - - location.query = parseSearch(location.search); - this.editor.set('location', location); - this.editor.set('history', history); - this.editor.set('match', match); - return React.createElement(_ConfigProvider, null, React.createElement(_Loading, { - tip: "Loading", - size: "large", - visible: !initReady, - fullScreen: true - }, React.createElement("div", { - className: "lowcode-editor", - key: skeletonKey - }, React.createElement(TopArea, { - editor: this.editor - }), React.createElement("div", { - className: "lowcode-main-content" - }, React.createElement(LeftArea.Nav, { - editor: this.editor - }), React.createElement(LeftArea.Panel, { - editor: this.editor - }), React.createElement(CenterArea, { - editor: this.editor - }), React.createElement(RightArea, { - editor: this.editor - }))))); - }; - - return Skeleton; -}(PureComponent); // 通过React-Router包裹,支持编辑器内页面根据路由切换 - -Skeleton.displayName = 'LowcodeEditorSkeleton'; -; - -var SkeletonWithRouter = function SkeletonWithRouter(props) { - var config = props.config, - otherProps = _objectWithoutPropertiesLoose(props, ["config"]); - - return React.createElement(Router, null, React.createElement(Route, { - path: "/*", - component: function component(routerProps) { - return React.createElement(Skeleton, _extends({}, routerProps, otherProps, config.skeleton && config.skeleton.props, { - config: config - })); - } - })); -}; - -export default SkeletonWithRouter; \ No newline at end of file +import Skeleton from './skeleton'; +import Panel from './components/Panel'; +import TopIcon from './components/TopIcon'; +export default Skeleton; +export { Panel, TopIcon }; \ No newline at end of file diff --git a/packages/editor-skeleton/es/skeleton.d.ts b/packages/editor-skeleton/es/skeleton.d.ts new file mode 100644 index 000000000..66a91524c --- /dev/null +++ b/packages/editor-skeleton/es/skeleton.d.ts @@ -0,0 +1,42 @@ +import React, { PureComponent } from 'react'; +import Editor from '@ali/lowcode-editor-framework'; +import { EditorConfig, Utils, PluginClassSet } from '@ali/lowcode-editor-framework/lib/definitions'; +import './global.scss'; +declare global { + interface Window { + __ctx: { + editor: Editor; + appHelper: Editor; + }; + } +} +export interface SkeletonProps { + components: PluginClassSet; + config: EditorConfig; + history: object; + location: object; + match: object; + utils: Utils; +} +export interface SkeletonState { + initReady?: boolean; + skeletonKey?: string; + __hasError?: boolean; +} +export declare class Skeleton extends PureComponent { + static displayName: string; + static getDerivedStateFromError(): SkeletonState; + private editor; + constructor(props: any); + componentWillUnmount(): void; + componentDidCatch(err: any): void; + init: (isReset?: boolean) => void; + render(): React.ReactNode; +} +export interface SkeletonWithRouterProps { + components: PluginClassSet; + config: EditorConfig; + utils: Utils; +} +declare const SkeletonWithRouter: React.FC; +export default SkeletonWithRouter; diff --git a/packages/editor-skeleton/es/skeleton.js b/packages/editor-skeleton/es/skeleton.js new file mode 100644 index 000000000..9d62bcc23 --- /dev/null +++ b/packages/editor-skeleton/es/skeleton.js @@ -0,0 +1,157 @@ +import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; +import _ConfigProvider from "@alifd/next/es/config-provider"; +import _Loading from "@alifd/next/es/loading"; +import _extends from "@babel/runtime/helpers/extends"; +import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; +import React, { PureComponent } from 'react'; +import { HashRouter as Router, Route } from 'react-router-dom'; +import Editor, { utils } from '@ali/lowcode-editor-framework'; +import defaultConfig from './config/skeleton'; +import skeletonUtils from './config/utils'; +import TopArea from './layouts/TopArea'; +import LeftArea from './layouts/LeftArea'; +import CenterArea from './layouts/CenterArea'; +import RightArea from './layouts/RightArea'; +import './global.scss'; +var comboEditorConfig = utils.comboEditorConfig, + parseSearch = utils.parseSearch; +var renderIdx = 0; +export var Skeleton = /*#__PURE__*/function (_PureComponent) { + _inheritsLoose(Skeleton, _PureComponent); + + Skeleton.getDerivedStateFromError = function getDerivedStateFromError() { + return { + __hasError: true + }; + }; + + function Skeleton(props) { + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.editor = void 0; + + _this.init = function (isReset) { + if (isReset === void 0) { + isReset = false; + } + + if (_this.editor) { + _this.editor.destroy(); + } + + var _this$props = _this.props, + utils = _this$props.utils, + config = _this$props.config, + components = _this$props.components; + var editor = new Editor(comboEditorConfig(defaultConfig, config), components, _extends({}, skeletonUtils, {}, utils)); + _this.editor = editor; // eslint-disable-next-line no-underscore-dangle + + window.__ctx = { + editor: editor, + appHelper: editor + }; + editor.once('editor.reset', function () { + _this.setState({ + initReady: false + }); + + editor.emit('editor.beforeReset'); + + _this.init(true); + }); + + _this.editor.init().then(function () { + _this.setState({ + initReady: true, + // 刷新IDE时生成新的skeletonKey保证插件生命周期重新执行 + skeletonKey: isReset ? "skeleton" + ++renderIdx : _this.state.skeletonKey + }, function () { + editor.emit('editor.ready'); + editor.emit('ide.ready'); + isReset && editor.emit('ide.afterReset'); + }); + }); + }; + + _this.state = { + initReady: false, + skeletonKey: "skeleton" + renderIdx + }; + + _this.init(); + + return _this; + } + + var _proto = Skeleton.prototype; + + _proto.componentWillUnmount = function componentWillUnmount() { + this.editor && this.editor.destroy(); + }; + + _proto.componentDidCatch = function componentDidCatch(err) { + console.error(err); + }; + + _proto.render = function render() { + var _this$state = this.state, + initReady = _this$state.initReady, + skeletonKey = _this$state.skeletonKey, + __hasError = _this$state.__hasError; + var _this$props2 = this.props, + location = _this$props2.location, + history = _this$props2.history, + match = _this$props2.match; + + if (__hasError || !this.editor) { + return 'error'; + } + + location.query = parseSearch(location.search); + this.editor.set('location', location); + this.editor.set('history', history); + this.editor.set('match', match); + return React.createElement(_ConfigProvider, null, React.createElement(_Loading, { + tip: "Loading", + size: "large", + visible: !initReady, + fullScreen: true + }, React.createElement("div", { + className: "lowcode-editor", + key: skeletonKey + }, React.createElement(TopArea, { + editor: this.editor + }), React.createElement("div", { + className: "lowcode-main-content" + }, React.createElement(LeftArea.Nav, { + editor: this.editor + }), React.createElement(LeftArea.Panel, { + editor: this.editor + }), React.createElement(CenterArea, { + editor: this.editor + }), React.createElement(RightArea, { + editor: this.editor + }))))); + }; + + return Skeleton; +}(PureComponent); // 通过React-Router包裹,支持编辑器内页面根据路由切换 + +Skeleton.displayName = 'LowcodeEditorSkeleton'; + +var SkeletonWithRouter = function SkeletonWithRouter(props) { + var config = props.config, + otherProps = _objectWithoutPropertiesLoose(props, ["config"]); + + return React.createElement(Router, null, React.createElement(Route, { + path: "/*", + component: function component(routerProps) { + return React.createElement(Skeleton, _extends({}, routerProps, otherProps, config.skeleton && config.skeleton.props, { + config: config + })); + } + })); +}; + +export default SkeletonWithRouter; \ No newline at end of file diff --git a/packages/editor-skeleton/src/index.ts b/packages/editor-skeleton/src/index.ts new file mode 100644 index 000000000..3c1996ea9 --- /dev/null +++ b/packages/editor-skeleton/src/index.ts @@ -0,0 +1,10 @@ +import Skeleton from './skeleton'; +import Panel from './components/Panel'; +import TopIcon from './components/TopIcon'; + +export default Skeleton; + +export { + Panel, + TopIcon +}; diff --git a/packages/editor-skeleton/src/index.tsx b/packages/editor-skeleton/src/skeleton.tsx similarity index 100% rename from packages/editor-skeleton/src/index.tsx rename to packages/editor-skeleton/src/skeleton.tsx diff --git a/packages/editor/package.json b/packages/editor/package.json index c5441d220..b80f50a7f 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -5,6 +5,9 @@ "dependencies": { "@ali/lowcode-editor-framework": "0.0.1", "@ali/lowcode-editor-skeleton": "0.0.1", + "@ali/lowcode-plugin-logo": "0.0.1", + "@ali/lowcode-plugin-undo-redo": "0.0.1", + "@ali/lowcode-plugin-save": "0.0.1", "@ali/iceluna-addon-2": "^1.0.3", "@ali/iceluna-addon-component-list": "^1.0.11", "@ali/iceluna-sdk": "^1.0.5-beta.26", diff --git a/packages/editor/src/config/components.js b/packages/editor/src/config/components.js index f5712c6e0..3320dd909 100644 --- a/packages/editor/src/config/components.js +++ b/packages/editor/src/config/components.js @@ -10,12 +10,12 @@ import rightPanel3 from '@ali/iceluna-addon-2'; import rightPanel4 from '@ali/iceluna-addon-2'; import componentList from '@ali/iceluna-addon-component-list'; import Settings from '../../../plugin-settings'; -import undoRedo from '../plugins/undoRedo'; +import undoRedo from '@ali/lowcode-plugin-undo-redo'; import Designer from '../plugins/designer'; -import logo from '../plugins/logo'; -import save from '../plugins/save'; +import logo from '@ali/lowcode-plugin-logo'; +import save from '@ali/lowcode-plugin-save'; -import PluginFactory from '../framework/pluginFactory'; +import {PluginFactory} from '@ali/lowcode-editor-framework'; export default { logo: PluginFactory(logo), diff --git a/packages/plugin-logo/.editorconfig b/packages/plugin-logo/.editorconfig new file mode 100644 index 000000000..5760be583 --- /dev/null +++ b/packages/plugin-logo/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/plugin-logo/.eslintignore b/packages/plugin-logo/.eslintignore new file mode 100644 index 000000000..3b437e614 --- /dev/null +++ b/packages/plugin-logo/.eslintignore @@ -0,0 +1,11 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ + +# 忽略文件 +**/*-min.js +**/*.min.js diff --git a/packages/plugin-logo/.eslintrc.js b/packages/plugin-logo/.eslintrc.js new file mode 100644 index 000000000..4d6be3c66 --- /dev/null +++ b/packages/plugin-logo/.eslintrc.js @@ -0,0 +1,16 @@ +const { tslint, deepmerge } = require('@ice/spec'); + +module.exports = deepmerge(tslint, { + rules: { + "global-require": 0, + "comma-dangle": 0, + "no-unused-expressions": 0, + "object-shorthand": 0, + "jsx-a11y/anchor-has-content": 0, + "react/sort-comp": 0, + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", "ts"] }], + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-member-accessibility": 0 + }, +}); diff --git a/packages/plugin-logo/.gitignore b/packages/plugin-logo/.gitignore new file mode 100644 index 000000000..c590da5b0 --- /dev/null +++ b/packages/plugin-logo/.gitignore @@ -0,0 +1,20 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# production +/build +/dist + +# misc +.idea/ +.happypack +.DS_Store + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# ignore d.ts auto generated by css-modules-typescript-loader +*.module.scss.d.ts \ No newline at end of file diff --git a/packages/plugin-logo/.stylelintignore b/packages/plugin-logo/.stylelintignore new file mode 100644 index 000000000..82af6f60d --- /dev/null +++ b/packages/plugin-logo/.stylelintignore @@ -0,0 +1,7 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ diff --git a/packages/plugin-logo/.stylelintrc.js b/packages/plugin-logo/.stylelintrc.js new file mode 100644 index 000000000..eeb605b33 --- /dev/null +++ b/packages/plugin-logo/.stylelintrc.js @@ -0,0 +1,3 @@ +const { stylelint } = require('@ice/spec'); + +module.exports = stylelint; diff --git a/packages/plugin-logo/README.md b/packages/plugin-logo/README.md new file mode 100644 index 000000000..8a6fb13f0 --- /dev/null +++ b/packages/plugin-logo/README.md @@ -0,0 +1 @@ +## todo diff --git a/packages/plugin-logo/abc.json b/packages/plugin-logo/abc.json new file mode 100644 index 000000000..dce1f92ed --- /dev/null +++ b/packages/plugin-logo/abc.json @@ -0,0 +1,4 @@ +{ + "type": "ice-scripts", + "builder": "@ali/builder-ice-scripts" +} diff --git a/packages/plugin-logo/build.json b/packages/plugin-logo/build.json new file mode 100644 index 000000000..77627cdf9 --- /dev/null +++ b/packages/plugin-logo/build.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + "build-plugin-component", + "build-plugin-fusion", + ["build-plugin-moment-locales", { + "locales": ["zh-cn"] + }] + ] +} \ No newline at end of file diff --git a/packages/plugin-logo/demo/usage.md b/packages/plugin-logo/demo/usage.md new file mode 100644 index 000000000..9f19eae0b --- /dev/null +++ b/packages/plugin-logo/demo/usage.md @@ -0,0 +1,24 @@ +--- +title: Simple Usage +order: 1 +--- + +本 Demo 演示一行文字的用法。 + +````jsx +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; + +class App extends Component { + render() { + return ( +
+
+ ); + } +} + +ReactDOM.render(( + +), mountNode); +```` diff --git a/packages/plugin-logo/es/index.d.ts b/packages/plugin-logo/es/index.d.ts new file mode 100644 index 000000000..adb264367 --- /dev/null +++ b/packages/plugin-logo/es/index.d.ts @@ -0,0 +1,9 @@ +import React from 'react'; +import './index.scss'; +import { PluginProps } from '@ali/lowcode-editor-framework/lib/definitions'; +export interface IProps { + logo?: string; + href?: string; +} +declare const Logo: React.FC; +export default Logo; diff --git a/packages/plugin-logo/es/index.js b/packages/plugin-logo/es/index.js new file mode 100644 index 000000000..1b43f6c70 --- /dev/null +++ b/packages/plugin-logo/es/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import './index.scss'; + +var Logo = function Logo(props) { + return /*#__PURE__*/React.createElement("div", { + className: "lowcode-plugin-logo" + }, /*#__PURE__*/React.createElement("a", { + className: "logo", + target: "blank", + href: props.href || '/', + style: { + backgroundImage: "url(" + props.logo + ")" + } + })); +}; + +export default Logo; \ No newline at end of file diff --git a/packages/editor/src/plugins/logo/index.scss b/packages/plugin-logo/es/index.scss similarity index 100% rename from packages/editor/src/plugins/logo/index.scss rename to packages/plugin-logo/es/index.scss diff --git a/packages/plugin-logo/es/style.js b/packages/plugin-logo/es/style.js new file mode 100644 index 000000000..bf3c23acb --- /dev/null +++ b/packages/plugin-logo/es/style.js @@ -0,0 +1 @@ +import './index.scss'; \ No newline at end of file diff --git a/packages/plugin-logo/jsconfig.json b/packages/plugin-logo/jsconfig.json new file mode 100644 index 000000000..9e0f3c03d --- /dev/null +++ b/packages/plugin-logo/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "jsx": "react", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/packages/plugin-logo/package-lock.json b/packages/plugin-logo/package-lock.json new file mode 100644 index 000000000..3422fc790 --- /dev/null +++ b/packages/plugin-logo/package-lock.json @@ -0,0 +1,4179 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@alifd/next": { + "version": "1.19.18", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/next/download/@alifd/next-1.19.18.tgz", + "integrity": "sha1-grGCFS+qjXvfwJRk6tKGZWyr+nM=", + "requires": { + "@alifd/field": "~1.3.3", + "@alifd/validate": "~1.1.4", + "babel-runtime": "^6.26.0", + "classnames": "^2.2.3", + "hoist-non-react-statics": "^2.1.0", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-transition-group": "^2.2.1", + "shallow-element-equals": "^1.0.1" + }, + "dependencies": { + "@alifd/field": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/field/download/@alifd/field-1.3.5.tgz", + "integrity": "sha1-uPNwuNnbwquirIX2pZiezVHzZnM=", + "requires": { + "@alifd/validate": "^1.1.3", + "prop-types": "^15.5.8" + } + }, + "@alifd/validate": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/validate/download/@alifd/validate-1.1.5.tgz", + "integrity": "sha1-5EiWeFBRGCy5TbfsKzOpm0yGlDo=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npm.alibaba-inc.com/classnames/download/classnames-2.2.6.tgz", + "integrity": "sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4=" + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npm.alibaba-inc.com/core-js/download/core-js-2.6.11.tgz", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/dom-helpers/download/dom-helpers-3.4.0.tgz", + "integrity": "sha1-6bNpcA+Vn2Ls3lprq95LzNkWmvg=", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha1-xZA89AnA39kI84jmGdhrnBF0y0c=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/react-lifecycles-compat/download/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=" + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-transition-group/download/react-transition-group-2.9.0.tgz", + "integrity": "sha1-35zbAleWIRFRpDbGmo87l7WwfI0=", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + }, + "shallow-element-equals": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/shallow-element-equals/download/shallow-element-equals-1.0.1.tgz", + "integrity": "sha1-UHObfZStdWehNBc9P0QiOH7VfOY=", + "requires": { + "style-equal": "^1.0.0" + } + }, + "style-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-equal/download/style-equal-1.0.0.tgz", + "integrity": "sha1-mKHFkiImv+E8GW5z8ZQOkbjmZZU=" + } + } + }, + "@ice/spec": { + "version": "0.1.9", + "resolved": "https://registry.npm.alibaba-inc.com/@ice/spec/download/@ice/spec-0.1.9.tgz", + "integrity": "sha1-pVjNIibD7f+wXNLGBzhbceXQZ7A=", + "requires": { + "@commitlint/config-conventional": "^8.1.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "babel-eslint": "^10.0.2", + "eslint-config-airbnb": "^17.1.1", + "eslint-config-prettier": "^6.0.0", + "eslint-plugin-import": "^2.18.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.2", + "eslint-plugin-react-hooks": "^1.6.1", + "stylelint-config-css-modules": "^1.4.0", + "stylelint-config-prettier": "^5.2.0", + "stylelint-config-rational-order": "^0.1.2", + "stylelint-config-standard": "^18.3.0", + "stylelint-order": "^3.0.0", + "stylelint-scss": "^3.8.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/core/download/@babel/core-7.8.7.tgz", + "integrity": "sha1-tpAX0iHM3rIDFFrp2iadcs8QLzs=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.7", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.7", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/generator/download/@babel/generator-7.8.8.tgz", + "integrity": "sha1-zc1YyqtzCDTO6e6ttynoM7Yl2j4=", + "requires": { + "@babel/types": "^7.8.7", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helpers/download/@babel/helpers-7.8.4.tgz", + "integrity": "sha1-dU6z7nJ8Fl4KJA1sIH3nxFXzb3M=", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/parser/download/@babel/parser-7.8.8.tgz", + "integrity": "sha1-TDt8422zfgYpvh8NUKVx0vhvbNQ=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.8.7.tgz", + "integrity": "sha1-ggnZ3/LzOqJhbLMZyD/hWf+we4w=", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/template/download/@babel/template-7.8.6.tgz", + "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/traverse/download/@babel/traverse-7.8.6.tgz", + "integrity": "sha1-rP4MZOHNmRs+MuroE6brVklUtf8=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/types/download/@babel/types-7.8.7.tgz", + "integrity": "sha1-H8lynhrLsjN9W2l3pjl5tIGfXR0=", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@commitlint/config-conventional": { + "version": "8.3.4", + "resolved": "https://registry.npm.alibaba-inc.com/@commitlint/config-conventional/download/@commitlint/config-conventional-8.3.4.tgz", + "integrity": "sha1-/tE7NxFpBmOxdsH2s5wgWlZWGNI=", + "requires": { + "conventional-changelog-conventionalcommits": "4.2.1" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/events/download/@types/events-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/glob/download/@types/glob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/@types/json-schema/download/@types/json-schema-7.0.4.tgz", + "integrity": "sha1-OP1z3f2bVaux4bLtV4y1W9e30zk=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=" + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/node/download/@types/node-13.9.1.tgz", + "integrity": "sha1-lvYG+M1n+wGIR9m2HpOZfave/HI=" + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/unist/download/@types/unist-2.0.3.tgz", + "integrity": "sha1-nAiGeYdvN061mD8VDUeHqm+zLX4=" + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile/download/@types/vfile-3.0.2.tgz", + "integrity": "sha1-GcGM0jLfEc5vpq2AJZvIbDZrCbk=", + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile-message/download/@types/vfile-message-2.0.0.tgz", + "integrity": "sha1-aQ5Grw/fwfn6rgDNBJzIiJV5J9U=", + "requires": { + "vfile-message": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-1.13.0.tgz", + "integrity": "sha1-Iv7ZsW3f60Av17zeVjB4IPbrxJ8=", + "requires": { + "@typescript-eslint/experimental-utils": "1.13.0", + "eslint-utils": "^1.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^2.0.1", + "tsutils": "^3.7.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-1.13.0.tgz", + "integrity": "sha1-sIxg14DABn3i+0SwS0MvVAE4MB4=", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-scope": "^4.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/parser/download/@typescript-eslint/parser-1.13.0.tgz", + "integrity": "sha1-Yax4EepSeRxH3J/U3UoYT66aw1U=", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "1.13.0", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-1.13.0.tgz", + "integrity": "sha1-gUDxfQ9gwDYZeY8dYouENJE9wy4=", + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/ajv/download/ajv-6.12.0.tgz", + "integrity": "sha1-BtYLlth7hFSlrauobnhU2mKdtLc=", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.alibaba-inc.com/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/aria-query/download/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-find-index/download/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/array-ify/download/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/array-includes/download/array-includes-3.1.1.tgz", + "integrity": "sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/array.prototype.flat/download/array.prototype.flat-1.2.3.tgz", + "integrity": "sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/arrify/download/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npm.alibaba-inc.com/ast-types-flow/download/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=" + }, + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npm.alibaba-inc.com/autoprefixer/download/autoprefixer-9.7.4.tgz", + "integrity": "sha1-+L8+BnB9BH8GQdh67oz7F0sqU3g=", + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "axobject-query": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/axobject-query/download/axobject-query-2.1.2.tgz", + "integrity": "sha1-K9/8A3HmQ+XwO6mQZdUXm5ynl5k=" + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/bail/download/bail-1.0.5.tgz", + "integrity": "sha1-tvoTNASjksvB+MS/Y/WVM1Hnp3Y=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.alibaba-inc.com/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/browserslist/download/browserslist-4.9.1.tgz", + "integrity": "sha1-Af+5yjGhrvdngSj8aiJTMWqnKHw=", + "requires": { + "caniuse-lite": "^1.0.30001030", + "electron-to-chromium": "^1.3.363", + "node-releases": "^1.1.50" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-callsite/download/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase/download/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase-keys/download/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001035", + "resolved": "https://registry.npm.alibaba-inc.com/caniuse-lite/download/caniuse-lite-1.0.30001035.tgz", + "integrity": "sha1-K7U7iqRxay7QjgiNTcgWpf4Imh4=" + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/ccount/download/ccount-1.0.5.tgz", + "integrity": "sha1-rIKpRJBaZc4gTrAwIxV+3ylCXBc=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/chalk/download/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities/download/character-entities-1.2.4.tgz", + "integrity": "sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=" + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-html4/download/character-entities-html4-1.1.4.tgz", + "integrity": "sha1-DmSwo3U92/H9wETF/QHQGZoC4SU=" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz", + "integrity": "sha1-lLwYRdznClu50uzHSHJWYSk9j8E=" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz", + "integrity": "sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.alibaba-inc.com/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/clone-regexp/download/clone-regexp-1.0.1.tgz", + "integrity": "sha1-BRgFzTMXM3XYIRj8CRhgbaOf1g8=", + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/collapse-white-space/download/collapse-white-space-1.0.6.tgz", + "integrity": "sha1-5jYpwAFmZXkgYNu+t5xCI50sUoc=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.alibaba-inc.com/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=" + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/compare-func/download/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npm.alibaba-inc.com/confusing-browser-globals/download/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha1-crwTtIPAJ2gBaBhx1ImFFvj1T90=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/contains-path/download/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "conventional-changelog-conventionalcommits": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/conventional-changelog-conventionalcommits/download/conventional-changelog-conventionalcommits-4.2.1.tgz", + "integrity": "sha1-1ssuLF17/KBEoIuduoS0CC4aG9k=", + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.2.1", + "q": "^1.5.1" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npm.alibaba-inc.com/core-js-pure/download/core-js-pure-3.6.4.tgz", + "integrity": "sha1-S/G6hm4lgU8UnU6aqgjDYXNQbjo=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/currently-unhandled/download/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/damerau-levenshtein/download/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha1-FDwWQcs9hcYMMjKeJoma3qhwF5E=" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize-keys/download/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=" + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/domutils/download/domutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.377", + "resolved": "https://registry.npm.alibaba-inc.com/electron-to-chromium/download/electron-to-chromium-1.3.377.tgz", + "integrity": "sha1-tJ1CCzbubEiwzTE3v8f+x182my4=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=" + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npm.alibaba-inc.com/es-abstract/download/es-abstract-1.17.4.tgz", + "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-config-airbnb": { + "version": "17.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb/download/eslint-config-airbnb-17.1.1.tgz", + "integrity": "sha1-InLguGux4rE4zfiNB6O29M2j1iY=", + "requires": { + "eslint-config-airbnb-base": "^13.2.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-airbnb-base": { + "version": "13.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb-base/download/eslint-config-airbnb-base-13.2.0.tgz", + "integrity": "sha1-9uqBRZ/03sLdogDDXx2PdBnVeUM=", + "requires": { + "confusing-browser-globals": "^1.0.5", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-prettier/download/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha1-exXjA7+clWh1yUj2shUA5I3tan8=", + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ=", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-module-utils/download/eslint-module-utils-2.5.2.tgz", + "integrity": "sha1-eHj3UEgk4bhX3SUFtZqOXtompwg=", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-import/download/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha1-gCQjGW3LEdnOhDWl/AKm07RpObM=", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-jsx-a11y/download/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react/download/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha1-bQj5ZzYoqmnFVZ0zSJ6FXYNVFmY=", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-2.1.0.tgz", + "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-utils/download/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/estraverse/download/estraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=" + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/execall/download/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "requires": { + "clone-regexp": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.alibaba-inc.com/fast-glob/download/fast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + }, + "file-entry-cache": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/file-entry-cache/download/file-entry-cache-4.0.0.tgz", + "integrity": "sha1-YzVn0VNkrv4LKZ4eIXc16POp9ug=", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flatted/download/flatted-2.0.1.tgz", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.alibaba-inc.com/gensync/download/gensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=" + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/get-stdin/download/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/glob/download/glob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-modules/download/global-modules-2.0.0.tgz", + "integrity": "sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-prefix/download/global-prefix-3.0.0.tgz", + "integrity": "sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=" + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/globjoin/download/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=" + }, + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/gonzales-pe/download/gonzales-pe-4.2.4.tgz", + "integrity": "sha1-NWrjajEsRv4PECbdbLU5A5+FANI=", + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=" + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/graceful-fs/download/graceful-fs-4.2.3.tgz", + "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-symbols/download/has-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/hosted-git-info/download/hosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=" + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-5.1.4.tgz", + "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-fresh/download/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-lazy/download/import-lazy-3.1.0.tgz", + "integrity": "sha1-iRJ5ICyKIoD9vWZ029jaGh38Z8w=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/indent-string/download/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/ini/download/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/internal-slot/download/internal-slot-1.0.2.tgz", + "integrity": "sha1-nC6fs82OXkJWxvRf4xAGf8+jeKM=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphabetical/download/is-alphabetical-1.0.4.tgz", + "integrity": "sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=" + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumeric/download/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz", + "integrity": "sha1-frmiQx+FX2se8aeOMm31FWlsTb8=", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-callable/download/is-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-decimal/download/is-decimal-1.0.4.tgz", + "integrity": "sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz", + "integrity": "sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-regex/download/is-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-regexp/download/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-string/download/is-string-1.0.5.tgz", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=" + }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-supported-regexp-flag/download/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha1-Ie4WUY0sHdPt0+mg1X5QIHrDZMo=" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/is-symbol/download/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-whitespace-character/download/is-whitespace-character-1.0.4.tgz", + "integrity": "sha1-CFjt2UqVWUx8ndC1wXTsbkXuSqc=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-word-character/download/is-word-character-1.0.4.tgz", + "integrity": "sha1-zg5zIW+YWZBgWS9i/zE1TdvrAjA=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.alibaba-inc.com/js-yaml/download/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/json5/download/json5-2.1.2.tgz", + "integrity": "sha1-Q+8fCvmDXdYkdRprf6SIdPstYI4=", + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + } + } + }, + "jsx-ast-utils": { + "version": "2.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/jsx-ast-utils/download/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha1-ipNk5AJEijzn8U01dzgxDZJIBU8=", + "requires": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=" + }, + "known-css-properties": { + "version": "0.11.0", + "resolved": "https://registry.npm.alibaba-inc.com/known-css-properties/download/known-css-properties-0.11.0.tgz", + "integrity": "sha1-DaeE8RXqd8drgVNtcFLpDubIaoo=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/leven/download/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.alibaba-inc.com/lodash/download/lodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/lodash.unescape/download/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "requires": { + "chalk": "^2.0.1" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/longest-streak/download/longest-streak-2.0.4.tgz", + "integrity": "sha1-uFmZV9pbXatk3uP+MW+ndFl9kOQ=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/loud-rejection/download/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-escapes/download/markdown-escapes-1.0.4.tgz", + "integrity": "sha1-yVQV70UUmddgK5EJXzyOiXX3hTU=" + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-table/download/markdown-table-1.1.3.tgz", + "integrity": "sha1-n8tpvP24cXv9A5jG7C2TA2743mA=" + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/mathml-tag-names/download/mathml-tag-names-2.1.3.tgz", + "integrity": "sha1-TdrdZzCOeAzxakdoWHjuJ7c2oKM=" + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/mdast-util-compact/download/mdast-util-compact-1.0.4.tgz", + "integrity": "sha1-1TG7dme1Ejq/IIWb4IbE0GyJRZM=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/meow/download/meow-5.0.0.tgz", + "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=", + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/merge2/download/merge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.alibaba-inc.com/micromatch/download/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/minimist-options/download/minimist-options-3.0.2.tgz", + "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.alibaba-inc.com/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npm.alibaba-inc.com/node-releases/download/node-releases-1.1.52.tgz", + "integrity": "sha1-vP/uPgp1jpLkTs+uzQpHVUsLy6k=", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-selector/download/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=" + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-inspect/download/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.entries/download/object.entries-1.1.1.tgz", + "integrity": "sha1-7hzwQVPeArsJP+wzaDkA9XzlOZs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/object.fromentries/download/object.fromentries-2.0.2.tgz", + "integrity": "sha1-SgnJubs4Q90PiazbUXp5TU81Wsk=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-limit/download/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/parse-entities/download/parse-entities-1.2.2.tgz", + "integrity": "sha1-wxvw9lO2ZhNU+Jc1WcuG3R1e31A=", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pkg-dir/download/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npm.alibaba-inc.com/postcss/download/postcss-7.0.27.tgz", + "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-html/download/postcss-html-0.36.0.tgz", + "integrity": "sha1-tAkT+U6qzCRT/TChMnrW7h+IsgQ=", + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-jsx": { + "version": "0.36.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-jsx/download/postcss-jsx-0.36.4.tgz", + "integrity": "sha1-N6aPMAo55XSNVH8Zp0ezJXJAvVA=", + "requires": { + "@babel/core": ">=7.2.2" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-less/download/postcss-less-3.1.4.tgz", + "integrity": "sha1-Np9YZCtZKO+Jj/vBpuk8lYMExa0=", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-markdown/download/postcss-markdown-0.36.0.tgz", + "integrity": "sha1-fyKEmuDj2xiCC3sNXngz8TpEdWA=", + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-reporter/download/postcss-reporter-6.0.1.tgz", + "integrity": "sha1-fAVRIAYKl8iDe05IIVZhqvt0JF8=", + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=" + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-safe-parser/download/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha1-ptTkjw832ffBGypYG/APi6SHC5Y=", + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sass/download/postcss-sass-0.3.5.tgz", + "integrity": "sha1-bT458QGlPS76CR+VNJMRbTK+tow=", + "requires": { + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-scss/download/postcss-scss-2.0.0.tgz", + "integrity": "sha1-JIsKKK936nsysQEaug9zi9on3qE=", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=" + } + } + }, + "postcss-sorting": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-4.1.0.tgz", + "integrity": "sha1-oQfwvzhSl3+mTkRCvDQMiNWqzbM=", + "requires": { + "lodash": "^4.17.4", + "postcss": "^7.0.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-syntax/download/postcss-syntax-0.36.2.tgz", + "integrity": "sha1-8IV4x9lYNFdOVZOoLfv6ivrjtRw=" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/quick-lru/download/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/redent/download/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=" + }, + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/remark/download/remark-10.0.1.tgz", + "integrity": "sha1-MFgHbcQXgb9QXYl4wpFIX+R2Z98=", + "requires": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/remark-parse/download/remark-parse-6.0.3.tgz", + "integrity": "sha1-yZExBSgJ2kghCEE/h7Duf1IYCjo=", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/remark-stringify/download/remark-stringify-6.0.4.tgz", + "integrity": "sha1-FqwinU0VkySQGGY8e93yiq/E4Ig=", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve/download/resolve-1.15.1.tgz", + "integrity": "sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g=", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.alibaba-inc.com/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.alibaba-inc.com/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/side-channel/download/side-channel-1.0.2.tgz", + "integrity": "sha1-310auttOS/SvHNiFK/Ey0veHaUc=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-resolve/download/source-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=" + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/specificity/download/specificity-0.4.1.tgz", + "integrity": "sha1-qrXmRQEtsIuhguFRFlc40AiHsBk=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/state-toggle/download/state-toggle-1.0.3.tgz", + "integrity": "sha1-4SOxaojhQxObCcaFIiG8mBWRff4=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.matchall/download/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha1-SLtRAyb7n962ozzqqBpuoE73ZI4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-1.3.0.tgz", + "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/stringify-entities/download/stringify-entities-1.3.2.tgz", + "integrity": "sha1-qYQX5Ucf0iez5F09sYYcEcr2aPc=", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-bom/download/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-search/download/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=" + }, + "stylelint": { + "version": "9.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint/download/stylelint-9.10.1.tgz", + "integrity": "sha1-Xw7jcBRh3/HWgoThOG7+jwZ3p10=", + "requires": { + "autoprefixer": "^9.0.0", + "balanced-match": "^1.0.0", + "chalk": "^2.4.1", + "cosmiconfig": "^5.0.0", + "debug": "^4.0.0", + "execall": "^1.0.0", + "file-entry-cache": "^4.0.0", + "get-stdin": "^6.0.0", + "global-modules": "^2.0.0", + "globby": "^9.0.0", + "globjoin": "^0.1.4", + "html-tags": "^2.0.0", + "ignore": "^5.0.4", + "import-lazy": "^3.1.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.11.0", + "leven": "^2.1.0", + "lodash": "^4.17.4", + "log-symbols": "^2.0.0", + "mathml-tag-names": "^2.0.1", + "meow": "^5.0.0", + "micromatch": "^3.1.10", + "normalize-selector": "^0.2.0", + "pify": "^4.0.0", + "postcss": "^7.0.13", + "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.0", + "postcss-less": "^3.1.0", + "postcss-markdown": "^0.36.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.0", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.0", + "postcss-sass": "^0.3.5", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^3.1.0", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^3.3.0", + "resolve-from": "^4.0.0", + "signal-exit": "^3.0.2", + "slash": "^2.0.0", + "specificity": "^0.4.1", + "string-width": "^3.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "stylelint-config-css-modules": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-css-modules/download/stylelint-config-css-modules-1.5.0.tgz", + "integrity": "sha1-x9kB2wUvWi7jE13eUUkNNMKBrdM=" + }, + "stylelint-config-prettier": { + "version": "5.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-prettier/download/stylelint-config-prettier-5.3.0.tgz", + "integrity": "sha1-ptpibC7auyxSB7z2P+RJwW9aJOw=" + }, + "stylelint-config-rational-order": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-rational-order/download/stylelint-config-rational-order-0.1.2.tgz", + "integrity": "sha1-TpjjkHg9Q38OxB+3O8QZkueNAqA=", + "requires": { + "stylelint": "^9.10.1", + "stylelint-order": "^2.2.1" + }, + "dependencies": { + "stylelint-order": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-2.2.1.tgz", + "integrity": "sha1-zS1KDYHZHHBfHSdaWEh+WtWqWCg=", + "requires": { + "lodash": "^4.17.10", + "postcss": "^7.0.2", + "postcss-sorting": "^4.1.0" + } + } + } + }, + "stylelint-config-recommended": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-recommended/download/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha1-RqsTnbSg5xUf1flK8VVRKIbJbT8=" + }, + "stylelint-config-standard": { + "version": "18.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-standard/download/stylelint-config-standard-18.3.0.tgz", + "integrity": "sha1-oqG3iNLPh2wBP+r/iuJ2EXob76c=", + "requires": { + "stylelint-config-recommended": "^2.2.0" + } + }, + "stylelint-order": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-3.1.1.tgz", + "integrity": "sha1-up6mhE0Ugvl/MSBOfJYFx7eSwpQ=", + "requires": { + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-sorting": "^5.0.1" + }, + "dependencies": { + "postcss-sorting": { + "version": "5.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-5.0.1.tgz", + "integrity": "sha1-ENXQBZ7qgzTazIIMASGGQDW8PxE=", + "requires": { + "lodash": "^4.17.14", + "postcss": "^7.0.17" + } + } + } + }, + "stylelint-scss": { + "version": "3.15.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-scss/download/stylelint-scss-3.15.0.tgz", + "integrity": "sha1-34c6EWO1kuy/mFqE1ZhWkiLWcEM=", + "requires": { + "lodash": "^4.17.15", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/sugarss/download/sugarss-2.0.0.tgz", + "integrity": "sha1-3dduASSyl9QL88yjHIsi7LQ7xh0=", + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.alibaba-inc.com/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/trim/download/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/trim-newlines/download/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/trim-trailing-lines/download/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha1-fwc5iB/3Zle3d24Qh0EoAEtiWpQ=" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/trough/download/trough-1.0.5.tgz", + "integrity": "sha1-uLY5zvrX0LsqvTfUM/+Ck++l9AY=" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/tslib/download/tslib-1.11.1.tgz", + "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npm.alibaba-inc.com/tsutils/download/tsutils-3.17.1.tgz", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "requires": { + "tslib": "^1.8.1" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/unherit/download/unherit-1.1.3.tgz", + "integrity": "sha1-bJtQPytBsmIzDIDpHIYUq9qmnCI=", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/unified/download/unified-7.1.0.tgz", + "integrity": "sha1-UDLxwe4zZL0J2hLif91KdVPHvhM=", + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "unist-util-find-all-after": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-find-all-after/download/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha1-V1GoYIg09B0RetnFd3cMXy8bKJk=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-is/download/unist-util-is-3.0.0.tgz", + "integrity": "sha1-2ehDgcJGjoJinkpb6dfQWi3TJM0=" + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-remove-position/download/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha1-7ANzSLYQLIl3A+7m0ClMpHVaICA=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha1-zOO/oc34W6c3XR1bF73Eytqb2do=", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit/download/unist-util-visit-1.4.1.tgz", + "integrity": "sha1-RySqqEhububibX/zyGhZYNVgseM=", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit-parents/download/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha1-JeQ+VTEhZvM0jK5nQ1iHgdESwek=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile/download/vfile-3.0.1.tgz", + "integrity": "sha1-RzMdKr4ygkJPSku2rNIKRMQSGAM=", + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-2.0.4.tgz", + "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha1-Pzf881EnncvKdICrWIm7ioMu4cY=" + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-1.1.1.tgz", + "integrity": "sha1-WDOuB4od+i2W6WR4hs0ymTqzE+E=", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-location/download/vfile-location-2.0.6.tgz", + "integrity": "sha1-iidPOUEbhxnqVyiALhDZ4N/xUZ4=" + }, + "vfile-message": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-2.0.3.tgz", + "integrity": "sha1-DdT2h5+yQKgJmyK9N1VTbJLlm6U=", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/which/download/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/x-is-string/download/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/xregexp/download/xregexp-4.3.0.tgz", + "integrity": "sha1-fpLnPZF0qZpZdD9npM6HmgS1rlA=", + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/yargs-parser/download/yargs-parser-10.1.0.tgz", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.alibaba-inc.com/prettier/download/prettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=" + }, + "react": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react/download/react-16.13.0.tgz", + "integrity": "sha1-0EbqvN9k5Fe77tHnkuI14bmTTPc=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + } + } + }, + "react-dom": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-dom/download/react-dom-16.13.0.tgz", + "integrity": "sha1-zd5UtI656KDKGz3JlD2btAm4GGY=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "scheduler": { + "version": "0.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/scheduler/download/scheduler-0.19.0.tgz", + "integrity": "sha1-pxXVYwLeQD33QvSpvhGXWzL1aY0=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router-dom/download/react-router-dom-5.1.2.tgz", + "integrity": "sha1-BnAbg0NS9E03+7YxH4cPhMdrnBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.1.2", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/gud/download/gud-1.0.0.tgz", + "integrity": "sha1-pIlYGxfmpwvsqavjrlfeekmYUsA=" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/history/download/history-4.10.1.tgz", + "integrity": "sha1-MzcaZeOoOyZ0NOKz87G0xYqtTPM=", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=", + "requires": { + "react-is": "^16.7.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "mini-create-react-context": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mini-create-react-context/download/mini-create-react-context-0.3.2.tgz", + "integrity": "sha1-efxZjyg91iPajgiLBduM3aslAYk=", + "requires": { + "@babel/runtime": "^7.4.0", + "gud": "^1.0.0", + "tiny-warning": "^1.0.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-to-regexp/download/path-to-regexp-1.8.0.tgz", + "integrity": "sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo=", + "requires": { + "isarray": "0.0.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-router": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router/download/react-router-5.1.2.tgz", + "integrity": "sha1-bqUdeJyzamvhul98DUjdnoF9NBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.3.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-pathname/download/resolve-pathname-3.0.0.tgz", + "integrity": "sha1-mdAiJNPPJjaJvsuzk7xWAxMCXc0=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-invariant/download/tiny-invariant-1.1.0.tgz", + "integrity": "sha1-Y0xfjv3CdxS384bDXmdgmR0jCHU=" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-warning/download/tiny-warning-1.0.3.tgz", + "integrity": "sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/value-equal/download/value-equal-1.0.1.tgz", + "integrity": "sha1-Hgt5THNMXAyt4XnEN9NW2TGjTWw=" + } + } + } + } +} diff --git a/packages/plugin-logo/package.json b/packages/plugin-logo/package.json new file mode 100644 index 000000000..6457d6a13 --- /dev/null +++ b/packages/plugin-logo/package.json @@ -0,0 +1,55 @@ +{ + "name": "@ali/lowcode-plugin-logo", + "version": "0.0.1", + "description": "alibaba lowcode editor logo plugin", + "files": [ + "demo/", + "es/", + "lib/", + "build/" + ], + "main": "lib/index.tsx", + "module": "es/index.js", + "stylePath": "style.js", + "scripts": { + "start": "build-scripts start", + "build": "build-scripts build --skip-demo", + "prepublishOnly": "npm run prettier && npm run build", + "lint": "eslint --cache --ext .js,.jsx ./", + "prettier": "prettier --write \"./src/**/*.{ts,tsx,js,jsx,ejs,less,css,scss,json}\" " + }, + "keywords": [ + "lowcode", + "editor" + ], + "author": "xiayang.xy", + "dependencies": { + "prop-types": "^15.5.8", + "react": "^16.8.1", + "react-dom": "^16.8.1", + "react-router-dom": "^5.1.2" + }, + "peerDependencies": { + "@ali/lowcode-editor-framework": "0.0.1" + }, + "devDependencies": { + "@alib/build-scripts": "^0.1.3", + "@alifd/next": "1.x", + "@ice/spec": "^0.1.1", + "@types/lodash": "^4.14.149", + "@types/react": "^16.9.13", + "@types/react-dom": "^16.9.4", + "build-plugin-component": "^0.2.7-1", + "build-plugin-fusion": "^0.1.0", + "build-plugin-moment-locales": "^0.1.0", + "eslint": "^6.0.1", + "prettier": "^1.19.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/ice-lab/react-materials/tree/master/scaffolds/ice-ts" + }, + "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-engine-skeleton@0.0.1/build/index.html" +} diff --git a/packages/plugin-logo/src/index.scss b/packages/plugin-logo/src/index.scss new file mode 100644 index 000000000..338b4c58a --- /dev/null +++ b/packages/plugin-logo/src/index.scss @@ -0,0 +1,13 @@ +.lowcode-plugin-logo { + padding: 14px 8px; + padding-left: 8px; + .logo { + display: block; + width: 56px; + height: 20px; + cursor: pointer; + background-size: contain; + background-position: center; + background-repeat: no-repeat; + } +} diff --git a/packages/editor/src/plugins/logo/index.tsx b/packages/plugin-logo/src/index.tsx similarity index 84% rename from packages/editor/src/plugins/logo/index.tsx rename to packages/plugin-logo/src/index.tsx index 5d68ce46e..f0da684f8 100644 --- a/packages/editor/src/plugins/logo/index.tsx +++ b/packages/plugin-logo/src/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import './index.scss'; -import { PluginProps } from '../../framework/definitions'; +import { PluginProps } from '@ali/lowcode-editor-framework/lib/definitions'; export interface IProps { logo?: string; diff --git a/packages/plugin-logo/tests/index.js b/packages/plugin-logo/tests/index.js new file mode 100644 index 000000000..346e384d2 --- /dev/null +++ b/packages/plugin-logo/tests/index.js @@ -0,0 +1 @@ +// test file diff --git a/packages/plugin-logo/tsconfig.json b/packages/plugin-logo/tsconfig.json new file mode 100644 index 000000000..a511d68ba --- /dev/null +++ b/packages/plugin-logo/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "es6", + "jsx": "react", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} diff --git a/packages/plugin-save/.editorconfig b/packages/plugin-save/.editorconfig new file mode 100644 index 000000000..5760be583 --- /dev/null +++ b/packages/plugin-save/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/plugin-save/.eslintignore b/packages/plugin-save/.eslintignore new file mode 100644 index 000000000..3b437e614 --- /dev/null +++ b/packages/plugin-save/.eslintignore @@ -0,0 +1,11 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ + +# 忽略文件 +**/*-min.js +**/*.min.js diff --git a/packages/plugin-save/.eslintrc.js b/packages/plugin-save/.eslintrc.js new file mode 100644 index 000000000..4d6be3c66 --- /dev/null +++ b/packages/plugin-save/.eslintrc.js @@ -0,0 +1,16 @@ +const { tslint, deepmerge } = require('@ice/spec'); + +module.exports = deepmerge(tslint, { + rules: { + "global-require": 0, + "comma-dangle": 0, + "no-unused-expressions": 0, + "object-shorthand": 0, + "jsx-a11y/anchor-has-content": 0, + "react/sort-comp": 0, + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", "ts"] }], + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-member-accessibility": 0 + }, +}); diff --git a/packages/plugin-save/.gitignore b/packages/plugin-save/.gitignore new file mode 100644 index 000000000..c590da5b0 --- /dev/null +++ b/packages/plugin-save/.gitignore @@ -0,0 +1,20 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# production +/build +/dist + +# misc +.idea/ +.happypack +.DS_Store + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# ignore d.ts auto generated by css-modules-typescript-loader +*.module.scss.d.ts \ No newline at end of file diff --git a/packages/plugin-save/.stylelintignore b/packages/plugin-save/.stylelintignore new file mode 100644 index 000000000..82af6f60d --- /dev/null +++ b/packages/plugin-save/.stylelintignore @@ -0,0 +1,7 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ diff --git a/packages/plugin-save/.stylelintrc.js b/packages/plugin-save/.stylelintrc.js new file mode 100644 index 000000000..eeb605b33 --- /dev/null +++ b/packages/plugin-save/.stylelintrc.js @@ -0,0 +1,3 @@ +const { stylelint } = require('@ice/spec'); + +module.exports = stylelint; diff --git a/packages/plugin-save/README.md b/packages/plugin-save/README.md new file mode 100644 index 000000000..8a6fb13f0 --- /dev/null +++ b/packages/plugin-save/README.md @@ -0,0 +1 @@ +## todo diff --git a/packages/plugin-save/abc.json b/packages/plugin-save/abc.json new file mode 100644 index 000000000..dce1f92ed --- /dev/null +++ b/packages/plugin-save/abc.json @@ -0,0 +1,4 @@ +{ + "type": "ice-scripts", + "builder": "@ali/builder-ice-scripts" +} diff --git a/packages/plugin-save/build.json b/packages/plugin-save/build.json new file mode 100644 index 000000000..77627cdf9 --- /dev/null +++ b/packages/plugin-save/build.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + "build-plugin-component", + "build-plugin-fusion", + ["build-plugin-moment-locales", { + "locales": ["zh-cn"] + }] + ] +} \ No newline at end of file diff --git a/packages/plugin-save/demo/usage.md b/packages/plugin-save/demo/usage.md new file mode 100644 index 000000000..9f19eae0b --- /dev/null +++ b/packages/plugin-save/demo/usage.md @@ -0,0 +1,24 @@ +--- +title: Simple Usage +order: 1 +--- + +本 Demo 演示一行文字的用法。 + +````jsx +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; + +class App extends Component { + render() { + return ( +
+
+ ); + } +} + +ReactDOM.render(( + +), mountNode); +```` diff --git a/packages/plugin-save/es/index.d.ts b/packages/plugin-save/es/index.d.ts new file mode 100644 index 000000000..0b50c8ea3 --- /dev/null +++ b/packages/plugin-save/es/index.d.ts @@ -0,0 +1,5 @@ +import React from 'react'; +import './index.scss'; +import { PluginProps } from '@ali/lowcode-editor-framework/lib/definitions'; +declare const Save: React.FC; +export default Save; diff --git a/packages/plugin-save/es/index.js b/packages/plugin-save/es/index.js new file mode 100644 index 000000000..0cae7b367 --- /dev/null +++ b/packages/plugin-save/es/index.js @@ -0,0 +1,18 @@ +import _Button from "@alifd/next/es/button"; +import React from 'react'; +import './index.scss'; + +var Save = function Save(props) { + var handleClick = function handleClick() { + console.log('save data:', props.editor.designer.currentDocument.schema); + }; + + return /*#__PURE__*/React.createElement("div", { + className: "lowcode-plugin-save" + }, /*#__PURE__*/React.createElement(_Button, { + type: "primary", + onClick: handleClick + }, "\u4FDD\u5B58")); +}; + +export default Save; \ No newline at end of file diff --git a/packages/editor/src/plugins/save/index.scss b/packages/plugin-save/es/index.scss similarity index 100% rename from packages/editor/src/plugins/save/index.scss rename to packages/plugin-save/es/index.scss diff --git a/packages/plugin-save/es/style.js b/packages/plugin-save/es/style.js new file mode 100644 index 000000000..de658d7c9 --- /dev/null +++ b/packages/plugin-save/es/style.js @@ -0,0 +1,2 @@ +import '@alifd/next/es/button/style'; +import './index.scss'; \ No newline at end of file diff --git a/packages/plugin-save/jsconfig.json b/packages/plugin-save/jsconfig.json new file mode 100644 index 000000000..9e0f3c03d --- /dev/null +++ b/packages/plugin-save/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "jsx": "react", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/packages/plugin-save/package-lock.json b/packages/plugin-save/package-lock.json new file mode 100644 index 000000000..3422fc790 --- /dev/null +++ b/packages/plugin-save/package-lock.json @@ -0,0 +1,4179 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@alifd/next": { + "version": "1.19.18", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/next/download/@alifd/next-1.19.18.tgz", + "integrity": "sha1-grGCFS+qjXvfwJRk6tKGZWyr+nM=", + "requires": { + "@alifd/field": "~1.3.3", + "@alifd/validate": "~1.1.4", + "babel-runtime": "^6.26.0", + "classnames": "^2.2.3", + "hoist-non-react-statics": "^2.1.0", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-transition-group": "^2.2.1", + "shallow-element-equals": "^1.0.1" + }, + "dependencies": { + "@alifd/field": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/field/download/@alifd/field-1.3.5.tgz", + "integrity": "sha1-uPNwuNnbwquirIX2pZiezVHzZnM=", + "requires": { + "@alifd/validate": "^1.1.3", + "prop-types": "^15.5.8" + } + }, + "@alifd/validate": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/validate/download/@alifd/validate-1.1.5.tgz", + "integrity": "sha1-5EiWeFBRGCy5TbfsKzOpm0yGlDo=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npm.alibaba-inc.com/classnames/download/classnames-2.2.6.tgz", + "integrity": "sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4=" + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npm.alibaba-inc.com/core-js/download/core-js-2.6.11.tgz", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/dom-helpers/download/dom-helpers-3.4.0.tgz", + "integrity": "sha1-6bNpcA+Vn2Ls3lprq95LzNkWmvg=", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha1-xZA89AnA39kI84jmGdhrnBF0y0c=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/react-lifecycles-compat/download/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=" + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-transition-group/download/react-transition-group-2.9.0.tgz", + "integrity": "sha1-35zbAleWIRFRpDbGmo87l7WwfI0=", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + }, + "shallow-element-equals": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/shallow-element-equals/download/shallow-element-equals-1.0.1.tgz", + "integrity": "sha1-UHObfZStdWehNBc9P0QiOH7VfOY=", + "requires": { + "style-equal": "^1.0.0" + } + }, + "style-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-equal/download/style-equal-1.0.0.tgz", + "integrity": "sha1-mKHFkiImv+E8GW5z8ZQOkbjmZZU=" + } + } + }, + "@ice/spec": { + "version": "0.1.9", + "resolved": "https://registry.npm.alibaba-inc.com/@ice/spec/download/@ice/spec-0.1.9.tgz", + "integrity": "sha1-pVjNIibD7f+wXNLGBzhbceXQZ7A=", + "requires": { + "@commitlint/config-conventional": "^8.1.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "babel-eslint": "^10.0.2", + "eslint-config-airbnb": "^17.1.1", + "eslint-config-prettier": "^6.0.0", + "eslint-plugin-import": "^2.18.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.2", + "eslint-plugin-react-hooks": "^1.6.1", + "stylelint-config-css-modules": "^1.4.0", + "stylelint-config-prettier": "^5.2.0", + "stylelint-config-rational-order": "^0.1.2", + "stylelint-config-standard": "^18.3.0", + "stylelint-order": "^3.0.0", + "stylelint-scss": "^3.8.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/core/download/@babel/core-7.8.7.tgz", + "integrity": "sha1-tpAX0iHM3rIDFFrp2iadcs8QLzs=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.7", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.7", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/generator/download/@babel/generator-7.8.8.tgz", + "integrity": "sha1-zc1YyqtzCDTO6e6ttynoM7Yl2j4=", + "requires": { + "@babel/types": "^7.8.7", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helpers/download/@babel/helpers-7.8.4.tgz", + "integrity": "sha1-dU6z7nJ8Fl4KJA1sIH3nxFXzb3M=", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/parser/download/@babel/parser-7.8.8.tgz", + "integrity": "sha1-TDt8422zfgYpvh8NUKVx0vhvbNQ=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.8.7.tgz", + "integrity": "sha1-ggnZ3/LzOqJhbLMZyD/hWf+we4w=", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/template/download/@babel/template-7.8.6.tgz", + "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/traverse/download/@babel/traverse-7.8.6.tgz", + "integrity": "sha1-rP4MZOHNmRs+MuroE6brVklUtf8=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/types/download/@babel/types-7.8.7.tgz", + "integrity": "sha1-H8lynhrLsjN9W2l3pjl5tIGfXR0=", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@commitlint/config-conventional": { + "version": "8.3.4", + "resolved": "https://registry.npm.alibaba-inc.com/@commitlint/config-conventional/download/@commitlint/config-conventional-8.3.4.tgz", + "integrity": "sha1-/tE7NxFpBmOxdsH2s5wgWlZWGNI=", + "requires": { + "conventional-changelog-conventionalcommits": "4.2.1" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/events/download/@types/events-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/glob/download/@types/glob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/@types/json-schema/download/@types/json-schema-7.0.4.tgz", + "integrity": "sha1-OP1z3f2bVaux4bLtV4y1W9e30zk=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=" + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/node/download/@types/node-13.9.1.tgz", + "integrity": "sha1-lvYG+M1n+wGIR9m2HpOZfave/HI=" + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/unist/download/@types/unist-2.0.3.tgz", + "integrity": "sha1-nAiGeYdvN061mD8VDUeHqm+zLX4=" + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile/download/@types/vfile-3.0.2.tgz", + "integrity": "sha1-GcGM0jLfEc5vpq2AJZvIbDZrCbk=", + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile-message/download/@types/vfile-message-2.0.0.tgz", + "integrity": "sha1-aQ5Grw/fwfn6rgDNBJzIiJV5J9U=", + "requires": { + "vfile-message": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-1.13.0.tgz", + "integrity": "sha1-Iv7ZsW3f60Av17zeVjB4IPbrxJ8=", + "requires": { + "@typescript-eslint/experimental-utils": "1.13.0", + "eslint-utils": "^1.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^2.0.1", + "tsutils": "^3.7.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-1.13.0.tgz", + "integrity": "sha1-sIxg14DABn3i+0SwS0MvVAE4MB4=", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-scope": "^4.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/parser/download/@typescript-eslint/parser-1.13.0.tgz", + "integrity": "sha1-Yax4EepSeRxH3J/U3UoYT66aw1U=", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "1.13.0", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-1.13.0.tgz", + "integrity": "sha1-gUDxfQ9gwDYZeY8dYouENJE9wy4=", + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/ajv/download/ajv-6.12.0.tgz", + "integrity": "sha1-BtYLlth7hFSlrauobnhU2mKdtLc=", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.alibaba-inc.com/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/aria-query/download/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-find-index/download/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/array-ify/download/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/array-includes/download/array-includes-3.1.1.tgz", + "integrity": "sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/array.prototype.flat/download/array.prototype.flat-1.2.3.tgz", + "integrity": "sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/arrify/download/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npm.alibaba-inc.com/ast-types-flow/download/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=" + }, + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npm.alibaba-inc.com/autoprefixer/download/autoprefixer-9.7.4.tgz", + "integrity": "sha1-+L8+BnB9BH8GQdh67oz7F0sqU3g=", + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "axobject-query": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/axobject-query/download/axobject-query-2.1.2.tgz", + "integrity": "sha1-K9/8A3HmQ+XwO6mQZdUXm5ynl5k=" + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/bail/download/bail-1.0.5.tgz", + "integrity": "sha1-tvoTNASjksvB+MS/Y/WVM1Hnp3Y=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.alibaba-inc.com/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/browserslist/download/browserslist-4.9.1.tgz", + "integrity": "sha1-Af+5yjGhrvdngSj8aiJTMWqnKHw=", + "requires": { + "caniuse-lite": "^1.0.30001030", + "electron-to-chromium": "^1.3.363", + "node-releases": "^1.1.50" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-callsite/download/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase/download/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase-keys/download/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001035", + "resolved": "https://registry.npm.alibaba-inc.com/caniuse-lite/download/caniuse-lite-1.0.30001035.tgz", + "integrity": "sha1-K7U7iqRxay7QjgiNTcgWpf4Imh4=" + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/ccount/download/ccount-1.0.5.tgz", + "integrity": "sha1-rIKpRJBaZc4gTrAwIxV+3ylCXBc=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/chalk/download/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities/download/character-entities-1.2.4.tgz", + "integrity": "sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=" + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-html4/download/character-entities-html4-1.1.4.tgz", + "integrity": "sha1-DmSwo3U92/H9wETF/QHQGZoC4SU=" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz", + "integrity": "sha1-lLwYRdznClu50uzHSHJWYSk9j8E=" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz", + "integrity": "sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.alibaba-inc.com/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/clone-regexp/download/clone-regexp-1.0.1.tgz", + "integrity": "sha1-BRgFzTMXM3XYIRj8CRhgbaOf1g8=", + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/collapse-white-space/download/collapse-white-space-1.0.6.tgz", + "integrity": "sha1-5jYpwAFmZXkgYNu+t5xCI50sUoc=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.alibaba-inc.com/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=" + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/compare-func/download/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npm.alibaba-inc.com/confusing-browser-globals/download/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha1-crwTtIPAJ2gBaBhx1ImFFvj1T90=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/contains-path/download/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "conventional-changelog-conventionalcommits": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/conventional-changelog-conventionalcommits/download/conventional-changelog-conventionalcommits-4.2.1.tgz", + "integrity": "sha1-1ssuLF17/KBEoIuduoS0CC4aG9k=", + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.2.1", + "q": "^1.5.1" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npm.alibaba-inc.com/core-js-pure/download/core-js-pure-3.6.4.tgz", + "integrity": "sha1-S/G6hm4lgU8UnU6aqgjDYXNQbjo=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/currently-unhandled/download/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/damerau-levenshtein/download/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha1-FDwWQcs9hcYMMjKeJoma3qhwF5E=" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize-keys/download/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=" + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/domutils/download/domutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.377", + "resolved": "https://registry.npm.alibaba-inc.com/electron-to-chromium/download/electron-to-chromium-1.3.377.tgz", + "integrity": "sha1-tJ1CCzbubEiwzTE3v8f+x182my4=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=" + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npm.alibaba-inc.com/es-abstract/download/es-abstract-1.17.4.tgz", + "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-config-airbnb": { + "version": "17.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb/download/eslint-config-airbnb-17.1.1.tgz", + "integrity": "sha1-InLguGux4rE4zfiNB6O29M2j1iY=", + "requires": { + "eslint-config-airbnb-base": "^13.2.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-airbnb-base": { + "version": "13.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb-base/download/eslint-config-airbnb-base-13.2.0.tgz", + "integrity": "sha1-9uqBRZ/03sLdogDDXx2PdBnVeUM=", + "requires": { + "confusing-browser-globals": "^1.0.5", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-prettier/download/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha1-exXjA7+clWh1yUj2shUA5I3tan8=", + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ=", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-module-utils/download/eslint-module-utils-2.5.2.tgz", + "integrity": "sha1-eHj3UEgk4bhX3SUFtZqOXtompwg=", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-import/download/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha1-gCQjGW3LEdnOhDWl/AKm07RpObM=", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-jsx-a11y/download/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react/download/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha1-bQj5ZzYoqmnFVZ0zSJ6FXYNVFmY=", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-2.1.0.tgz", + "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-utils/download/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/estraverse/download/estraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=" + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/execall/download/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "requires": { + "clone-regexp": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.alibaba-inc.com/fast-glob/download/fast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + }, + "file-entry-cache": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/file-entry-cache/download/file-entry-cache-4.0.0.tgz", + "integrity": "sha1-YzVn0VNkrv4LKZ4eIXc16POp9ug=", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flatted/download/flatted-2.0.1.tgz", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.alibaba-inc.com/gensync/download/gensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=" + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/get-stdin/download/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/glob/download/glob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-modules/download/global-modules-2.0.0.tgz", + "integrity": "sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-prefix/download/global-prefix-3.0.0.tgz", + "integrity": "sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=" + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/globjoin/download/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=" + }, + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/gonzales-pe/download/gonzales-pe-4.2.4.tgz", + "integrity": "sha1-NWrjajEsRv4PECbdbLU5A5+FANI=", + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=" + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/graceful-fs/download/graceful-fs-4.2.3.tgz", + "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-symbols/download/has-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/hosted-git-info/download/hosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=" + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-5.1.4.tgz", + "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-fresh/download/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-lazy/download/import-lazy-3.1.0.tgz", + "integrity": "sha1-iRJ5ICyKIoD9vWZ029jaGh38Z8w=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/indent-string/download/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/ini/download/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/internal-slot/download/internal-slot-1.0.2.tgz", + "integrity": "sha1-nC6fs82OXkJWxvRf4xAGf8+jeKM=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphabetical/download/is-alphabetical-1.0.4.tgz", + "integrity": "sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=" + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumeric/download/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz", + "integrity": "sha1-frmiQx+FX2se8aeOMm31FWlsTb8=", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-callable/download/is-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-decimal/download/is-decimal-1.0.4.tgz", + "integrity": "sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz", + "integrity": "sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-regex/download/is-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-regexp/download/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-string/download/is-string-1.0.5.tgz", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=" + }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-supported-regexp-flag/download/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha1-Ie4WUY0sHdPt0+mg1X5QIHrDZMo=" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/is-symbol/download/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-whitespace-character/download/is-whitespace-character-1.0.4.tgz", + "integrity": "sha1-CFjt2UqVWUx8ndC1wXTsbkXuSqc=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-word-character/download/is-word-character-1.0.4.tgz", + "integrity": "sha1-zg5zIW+YWZBgWS9i/zE1TdvrAjA=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.alibaba-inc.com/js-yaml/download/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/json5/download/json5-2.1.2.tgz", + "integrity": "sha1-Q+8fCvmDXdYkdRprf6SIdPstYI4=", + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + } + } + }, + "jsx-ast-utils": { + "version": "2.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/jsx-ast-utils/download/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha1-ipNk5AJEijzn8U01dzgxDZJIBU8=", + "requires": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=" + }, + "known-css-properties": { + "version": "0.11.0", + "resolved": "https://registry.npm.alibaba-inc.com/known-css-properties/download/known-css-properties-0.11.0.tgz", + "integrity": "sha1-DaeE8RXqd8drgVNtcFLpDubIaoo=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/leven/download/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.alibaba-inc.com/lodash/download/lodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/lodash.unescape/download/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "requires": { + "chalk": "^2.0.1" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/longest-streak/download/longest-streak-2.0.4.tgz", + "integrity": "sha1-uFmZV9pbXatk3uP+MW+ndFl9kOQ=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/loud-rejection/download/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-escapes/download/markdown-escapes-1.0.4.tgz", + "integrity": "sha1-yVQV70UUmddgK5EJXzyOiXX3hTU=" + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-table/download/markdown-table-1.1.3.tgz", + "integrity": "sha1-n8tpvP24cXv9A5jG7C2TA2743mA=" + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/mathml-tag-names/download/mathml-tag-names-2.1.3.tgz", + "integrity": "sha1-TdrdZzCOeAzxakdoWHjuJ7c2oKM=" + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/mdast-util-compact/download/mdast-util-compact-1.0.4.tgz", + "integrity": "sha1-1TG7dme1Ejq/IIWb4IbE0GyJRZM=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/meow/download/meow-5.0.0.tgz", + "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=", + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/merge2/download/merge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.alibaba-inc.com/micromatch/download/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/minimist-options/download/minimist-options-3.0.2.tgz", + "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.alibaba-inc.com/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npm.alibaba-inc.com/node-releases/download/node-releases-1.1.52.tgz", + "integrity": "sha1-vP/uPgp1jpLkTs+uzQpHVUsLy6k=", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-selector/download/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=" + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-inspect/download/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.entries/download/object.entries-1.1.1.tgz", + "integrity": "sha1-7hzwQVPeArsJP+wzaDkA9XzlOZs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/object.fromentries/download/object.fromentries-2.0.2.tgz", + "integrity": "sha1-SgnJubs4Q90PiazbUXp5TU81Wsk=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-limit/download/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/parse-entities/download/parse-entities-1.2.2.tgz", + "integrity": "sha1-wxvw9lO2ZhNU+Jc1WcuG3R1e31A=", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pkg-dir/download/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npm.alibaba-inc.com/postcss/download/postcss-7.0.27.tgz", + "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-html/download/postcss-html-0.36.0.tgz", + "integrity": "sha1-tAkT+U6qzCRT/TChMnrW7h+IsgQ=", + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-jsx": { + "version": "0.36.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-jsx/download/postcss-jsx-0.36.4.tgz", + "integrity": "sha1-N6aPMAo55XSNVH8Zp0ezJXJAvVA=", + "requires": { + "@babel/core": ">=7.2.2" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-less/download/postcss-less-3.1.4.tgz", + "integrity": "sha1-Np9YZCtZKO+Jj/vBpuk8lYMExa0=", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-markdown/download/postcss-markdown-0.36.0.tgz", + "integrity": "sha1-fyKEmuDj2xiCC3sNXngz8TpEdWA=", + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-reporter/download/postcss-reporter-6.0.1.tgz", + "integrity": "sha1-fAVRIAYKl8iDe05IIVZhqvt0JF8=", + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=" + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-safe-parser/download/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha1-ptTkjw832ffBGypYG/APi6SHC5Y=", + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sass/download/postcss-sass-0.3.5.tgz", + "integrity": "sha1-bT458QGlPS76CR+VNJMRbTK+tow=", + "requires": { + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-scss/download/postcss-scss-2.0.0.tgz", + "integrity": "sha1-JIsKKK936nsysQEaug9zi9on3qE=", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=" + } + } + }, + "postcss-sorting": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-4.1.0.tgz", + "integrity": "sha1-oQfwvzhSl3+mTkRCvDQMiNWqzbM=", + "requires": { + "lodash": "^4.17.4", + "postcss": "^7.0.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-syntax/download/postcss-syntax-0.36.2.tgz", + "integrity": "sha1-8IV4x9lYNFdOVZOoLfv6ivrjtRw=" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/quick-lru/download/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/redent/download/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=" + }, + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/remark/download/remark-10.0.1.tgz", + "integrity": "sha1-MFgHbcQXgb9QXYl4wpFIX+R2Z98=", + "requires": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/remark-parse/download/remark-parse-6.0.3.tgz", + "integrity": "sha1-yZExBSgJ2kghCEE/h7Duf1IYCjo=", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/remark-stringify/download/remark-stringify-6.0.4.tgz", + "integrity": "sha1-FqwinU0VkySQGGY8e93yiq/E4Ig=", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve/download/resolve-1.15.1.tgz", + "integrity": "sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g=", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.alibaba-inc.com/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.alibaba-inc.com/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/side-channel/download/side-channel-1.0.2.tgz", + "integrity": "sha1-310auttOS/SvHNiFK/Ey0veHaUc=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-resolve/download/source-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=" + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/specificity/download/specificity-0.4.1.tgz", + "integrity": "sha1-qrXmRQEtsIuhguFRFlc40AiHsBk=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/state-toggle/download/state-toggle-1.0.3.tgz", + "integrity": "sha1-4SOxaojhQxObCcaFIiG8mBWRff4=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.matchall/download/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha1-SLtRAyb7n962ozzqqBpuoE73ZI4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-1.3.0.tgz", + "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/stringify-entities/download/stringify-entities-1.3.2.tgz", + "integrity": "sha1-qYQX5Ucf0iez5F09sYYcEcr2aPc=", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-bom/download/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-search/download/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=" + }, + "stylelint": { + "version": "9.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint/download/stylelint-9.10.1.tgz", + "integrity": "sha1-Xw7jcBRh3/HWgoThOG7+jwZ3p10=", + "requires": { + "autoprefixer": "^9.0.0", + "balanced-match": "^1.0.0", + "chalk": "^2.4.1", + "cosmiconfig": "^5.0.0", + "debug": "^4.0.0", + "execall": "^1.0.0", + "file-entry-cache": "^4.0.0", + "get-stdin": "^6.0.0", + "global-modules": "^2.0.0", + "globby": "^9.0.0", + "globjoin": "^0.1.4", + "html-tags": "^2.0.0", + "ignore": "^5.0.4", + "import-lazy": "^3.1.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.11.0", + "leven": "^2.1.0", + "lodash": "^4.17.4", + "log-symbols": "^2.0.0", + "mathml-tag-names": "^2.0.1", + "meow": "^5.0.0", + "micromatch": "^3.1.10", + "normalize-selector": "^0.2.0", + "pify": "^4.0.0", + "postcss": "^7.0.13", + "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.0", + "postcss-less": "^3.1.0", + "postcss-markdown": "^0.36.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.0", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.0", + "postcss-sass": "^0.3.5", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^3.1.0", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^3.3.0", + "resolve-from": "^4.0.0", + "signal-exit": "^3.0.2", + "slash": "^2.0.0", + "specificity": "^0.4.1", + "string-width": "^3.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "stylelint-config-css-modules": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-css-modules/download/stylelint-config-css-modules-1.5.0.tgz", + "integrity": "sha1-x9kB2wUvWi7jE13eUUkNNMKBrdM=" + }, + "stylelint-config-prettier": { + "version": "5.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-prettier/download/stylelint-config-prettier-5.3.0.tgz", + "integrity": "sha1-ptpibC7auyxSB7z2P+RJwW9aJOw=" + }, + "stylelint-config-rational-order": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-rational-order/download/stylelint-config-rational-order-0.1.2.tgz", + "integrity": "sha1-TpjjkHg9Q38OxB+3O8QZkueNAqA=", + "requires": { + "stylelint": "^9.10.1", + "stylelint-order": "^2.2.1" + }, + "dependencies": { + "stylelint-order": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-2.2.1.tgz", + "integrity": "sha1-zS1KDYHZHHBfHSdaWEh+WtWqWCg=", + "requires": { + "lodash": "^4.17.10", + "postcss": "^7.0.2", + "postcss-sorting": "^4.1.0" + } + } + } + }, + "stylelint-config-recommended": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-recommended/download/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha1-RqsTnbSg5xUf1flK8VVRKIbJbT8=" + }, + "stylelint-config-standard": { + "version": "18.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-standard/download/stylelint-config-standard-18.3.0.tgz", + "integrity": "sha1-oqG3iNLPh2wBP+r/iuJ2EXob76c=", + "requires": { + "stylelint-config-recommended": "^2.2.0" + } + }, + "stylelint-order": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-3.1.1.tgz", + "integrity": "sha1-up6mhE0Ugvl/MSBOfJYFx7eSwpQ=", + "requires": { + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-sorting": "^5.0.1" + }, + "dependencies": { + "postcss-sorting": { + "version": "5.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-5.0.1.tgz", + "integrity": "sha1-ENXQBZ7qgzTazIIMASGGQDW8PxE=", + "requires": { + "lodash": "^4.17.14", + "postcss": "^7.0.17" + } + } + } + }, + "stylelint-scss": { + "version": "3.15.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-scss/download/stylelint-scss-3.15.0.tgz", + "integrity": "sha1-34c6EWO1kuy/mFqE1ZhWkiLWcEM=", + "requires": { + "lodash": "^4.17.15", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/sugarss/download/sugarss-2.0.0.tgz", + "integrity": "sha1-3dduASSyl9QL88yjHIsi7LQ7xh0=", + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.alibaba-inc.com/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/trim/download/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/trim-newlines/download/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/trim-trailing-lines/download/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha1-fwc5iB/3Zle3d24Qh0EoAEtiWpQ=" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/trough/download/trough-1.0.5.tgz", + "integrity": "sha1-uLY5zvrX0LsqvTfUM/+Ck++l9AY=" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/tslib/download/tslib-1.11.1.tgz", + "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npm.alibaba-inc.com/tsutils/download/tsutils-3.17.1.tgz", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "requires": { + "tslib": "^1.8.1" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/unherit/download/unherit-1.1.3.tgz", + "integrity": "sha1-bJtQPytBsmIzDIDpHIYUq9qmnCI=", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/unified/download/unified-7.1.0.tgz", + "integrity": "sha1-UDLxwe4zZL0J2hLif91KdVPHvhM=", + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "unist-util-find-all-after": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-find-all-after/download/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha1-V1GoYIg09B0RetnFd3cMXy8bKJk=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-is/download/unist-util-is-3.0.0.tgz", + "integrity": "sha1-2ehDgcJGjoJinkpb6dfQWi3TJM0=" + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-remove-position/download/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha1-7ANzSLYQLIl3A+7m0ClMpHVaICA=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha1-zOO/oc34W6c3XR1bF73Eytqb2do=", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit/download/unist-util-visit-1.4.1.tgz", + "integrity": "sha1-RySqqEhububibX/zyGhZYNVgseM=", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit-parents/download/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha1-JeQ+VTEhZvM0jK5nQ1iHgdESwek=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile/download/vfile-3.0.1.tgz", + "integrity": "sha1-RzMdKr4ygkJPSku2rNIKRMQSGAM=", + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-2.0.4.tgz", + "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha1-Pzf881EnncvKdICrWIm7ioMu4cY=" + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-1.1.1.tgz", + "integrity": "sha1-WDOuB4od+i2W6WR4hs0ymTqzE+E=", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-location/download/vfile-location-2.0.6.tgz", + "integrity": "sha1-iidPOUEbhxnqVyiALhDZ4N/xUZ4=" + }, + "vfile-message": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-2.0.3.tgz", + "integrity": "sha1-DdT2h5+yQKgJmyK9N1VTbJLlm6U=", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/which/download/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/x-is-string/download/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/xregexp/download/xregexp-4.3.0.tgz", + "integrity": "sha1-fpLnPZF0qZpZdD9npM6HmgS1rlA=", + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/yargs-parser/download/yargs-parser-10.1.0.tgz", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.alibaba-inc.com/prettier/download/prettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=" + }, + "react": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react/download/react-16.13.0.tgz", + "integrity": "sha1-0EbqvN9k5Fe77tHnkuI14bmTTPc=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + } + } + }, + "react-dom": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-dom/download/react-dom-16.13.0.tgz", + "integrity": "sha1-zd5UtI656KDKGz3JlD2btAm4GGY=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "scheduler": { + "version": "0.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/scheduler/download/scheduler-0.19.0.tgz", + "integrity": "sha1-pxXVYwLeQD33QvSpvhGXWzL1aY0=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router-dom/download/react-router-dom-5.1.2.tgz", + "integrity": "sha1-BnAbg0NS9E03+7YxH4cPhMdrnBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.1.2", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/gud/download/gud-1.0.0.tgz", + "integrity": "sha1-pIlYGxfmpwvsqavjrlfeekmYUsA=" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/history/download/history-4.10.1.tgz", + "integrity": "sha1-MzcaZeOoOyZ0NOKz87G0xYqtTPM=", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=", + "requires": { + "react-is": "^16.7.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "mini-create-react-context": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mini-create-react-context/download/mini-create-react-context-0.3.2.tgz", + "integrity": "sha1-efxZjyg91iPajgiLBduM3aslAYk=", + "requires": { + "@babel/runtime": "^7.4.0", + "gud": "^1.0.0", + "tiny-warning": "^1.0.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-to-regexp/download/path-to-regexp-1.8.0.tgz", + "integrity": "sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo=", + "requires": { + "isarray": "0.0.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-router": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router/download/react-router-5.1.2.tgz", + "integrity": "sha1-bqUdeJyzamvhul98DUjdnoF9NBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.3.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-pathname/download/resolve-pathname-3.0.0.tgz", + "integrity": "sha1-mdAiJNPPJjaJvsuzk7xWAxMCXc0=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-invariant/download/tiny-invariant-1.1.0.tgz", + "integrity": "sha1-Y0xfjv3CdxS384bDXmdgmR0jCHU=" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-warning/download/tiny-warning-1.0.3.tgz", + "integrity": "sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/value-equal/download/value-equal-1.0.1.tgz", + "integrity": "sha1-Hgt5THNMXAyt4XnEN9NW2TGjTWw=" + } + } + } + } +} diff --git a/packages/plugin-save/package.json b/packages/plugin-save/package.json new file mode 100644 index 000000000..e9e2aeca7 --- /dev/null +++ b/packages/plugin-save/package.json @@ -0,0 +1,56 @@ +{ + "name": "@ali/lowcode-plugin-save", + "version": "0.0.1", + "description": "alibaba lowcode editor save plugin", + "files": [ + "demo/", + "es/", + "lib/", + "build/" + ], + "main": "lib/index.tsx", + "module": "es/index.js", + "stylePath": "style.js", + "scripts": { + "start": "build-scripts start", + "build": "build-scripts build --skip-demo", + "prepublishOnly": "npm run prettier && npm run build", + "lint": "eslint --cache --ext .js,.jsx ./", + "prettier": "prettier --write \"./src/**/*.{ts,tsx,js,jsx,ejs,less,css,scss,json}\" " + }, + "keywords": [ + "lowcode", + "editor" + ], + "author": "xiayang.xy", + "dependencies": { + "@alifd/next": "^1.x", + "prop-types": "^15.5.8", + "react": "^16.8.1", + "react-dom": "^16.8.1", + "react-router-dom": "^5.1.2" + }, + "peerDependencies": { + "@ali/lowcode-editor-framework": "0.0.1" + }, + "devDependencies": { + "@alib/build-scripts": "^0.1.3", + "@alifd/next": "1.x", + "@ice/spec": "^0.1.1", + "@types/lodash": "^4.14.149", + "@types/react": "^16.9.13", + "@types/react-dom": "^16.9.4", + "build-plugin-component": "^0.2.7-1", + "build-plugin-fusion": "^0.1.0", + "build-plugin-moment-locales": "^0.1.0", + "eslint": "^6.0.1", + "prettier": "^1.19.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/ice-lab/react-materials/tree/master/scaffolds/ice-ts" + }, + "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-engine-skeleton@0.0.1/build/index.html" +} diff --git a/packages/plugin-save/src/index.scss b/packages/plugin-save/src/index.scss new file mode 100644 index 000000000..58e85e384 --- /dev/null +++ b/packages/plugin-save/src/index.scss @@ -0,0 +1,3 @@ +.lowcode-plugin-save { + padding: 10px 4px; +} \ No newline at end of file diff --git a/packages/editor/src/plugins/save/index.tsx b/packages/plugin-save/src/index.tsx similarity index 85% rename from packages/editor/src/plugins/save/index.tsx rename to packages/plugin-save/src/index.tsx index 9d96668e6..055bfe779 100644 --- a/packages/editor/src/plugins/save/index.tsx +++ b/packages/plugin-save/src/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {Button} from '@alifd/next'; import './index.scss'; -import { PluginProps } from '../../framework/definitions'; +import { PluginProps } from '@ali/lowcode-editor-framework/lib/definitions'; diff --git a/packages/plugin-save/tests/index.js b/packages/plugin-save/tests/index.js new file mode 100644 index 000000000..346e384d2 --- /dev/null +++ b/packages/plugin-save/tests/index.js @@ -0,0 +1 @@ +// test file diff --git a/packages/plugin-save/tsconfig.json b/packages/plugin-save/tsconfig.json new file mode 100644 index 000000000..a511d68ba --- /dev/null +++ b/packages/plugin-save/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "es6", + "jsx": "react", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} diff --git a/packages/plugin-undo-redo/.editorconfig b/packages/plugin-undo-redo/.editorconfig new file mode 100644 index 000000000..5760be583 --- /dev/null +++ b/packages/plugin-undo-redo/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/plugin-undo-redo/.eslintignore b/packages/plugin-undo-redo/.eslintignore new file mode 100644 index 000000000..3b437e614 --- /dev/null +++ b/packages/plugin-undo-redo/.eslintignore @@ -0,0 +1,11 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ + +# 忽略文件 +**/*-min.js +**/*.min.js diff --git a/packages/plugin-undo-redo/.eslintrc.js b/packages/plugin-undo-redo/.eslintrc.js new file mode 100644 index 000000000..4d6be3c66 --- /dev/null +++ b/packages/plugin-undo-redo/.eslintrc.js @@ -0,0 +1,16 @@ +const { tslint, deepmerge } = require('@ice/spec'); + +module.exports = deepmerge(tslint, { + rules: { + "global-require": 0, + "comma-dangle": 0, + "no-unused-expressions": 0, + "object-shorthand": 0, + "jsx-a11y/anchor-has-content": 0, + "react/sort-comp": 0, + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", "ts"] }], + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-member-accessibility": 0 + }, +}); diff --git a/packages/plugin-undo-redo/.gitignore b/packages/plugin-undo-redo/.gitignore new file mode 100644 index 000000000..c590da5b0 --- /dev/null +++ b/packages/plugin-undo-redo/.gitignore @@ -0,0 +1,20 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# production +/build +/dist + +# misc +.idea/ +.happypack +.DS_Store + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# ignore d.ts auto generated by css-modules-typescript-loader +*.module.scss.d.ts \ No newline at end of file diff --git a/packages/plugin-undo-redo/.stylelintignore b/packages/plugin-undo-redo/.stylelintignore new file mode 100644 index 000000000..82af6f60d --- /dev/null +++ b/packages/plugin-undo-redo/.stylelintignore @@ -0,0 +1,7 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ diff --git a/packages/plugin-undo-redo/.stylelintrc.js b/packages/plugin-undo-redo/.stylelintrc.js new file mode 100644 index 000000000..eeb605b33 --- /dev/null +++ b/packages/plugin-undo-redo/.stylelintrc.js @@ -0,0 +1,3 @@ +const { stylelint } = require('@ice/spec'); + +module.exports = stylelint; diff --git a/packages/plugin-undo-redo/README.md b/packages/plugin-undo-redo/README.md new file mode 100644 index 000000000..8a6fb13f0 --- /dev/null +++ b/packages/plugin-undo-redo/README.md @@ -0,0 +1 @@ +## todo diff --git a/packages/plugin-undo-redo/abc.json b/packages/plugin-undo-redo/abc.json new file mode 100644 index 000000000..dce1f92ed --- /dev/null +++ b/packages/plugin-undo-redo/abc.json @@ -0,0 +1,4 @@ +{ + "type": "ice-scripts", + "builder": "@ali/builder-ice-scripts" +} diff --git a/packages/plugin-undo-redo/build.json b/packages/plugin-undo-redo/build.json new file mode 100644 index 000000000..77627cdf9 --- /dev/null +++ b/packages/plugin-undo-redo/build.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + "build-plugin-component", + "build-plugin-fusion", + ["build-plugin-moment-locales", { + "locales": ["zh-cn"] + }] + ] +} \ No newline at end of file diff --git a/packages/plugin-undo-redo/demo/usage.md b/packages/plugin-undo-redo/demo/usage.md new file mode 100644 index 000000000..9f19eae0b --- /dev/null +++ b/packages/plugin-undo-redo/demo/usage.md @@ -0,0 +1,24 @@ +--- +title: Simple Usage +order: 1 +--- + +本 Demo 演示一行文字的用法。 + +````jsx +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; + +class App extends Component { + render() { + return ( +
+
+ ); + } +} + +ReactDOM.render(( + +), mountNode); +```` diff --git a/packages/plugin-undo-redo/es/index.d.ts b/packages/plugin-undo-redo/es/index.d.ts new file mode 100644 index 000000000..f5aa9136e --- /dev/null +++ b/packages/plugin-undo-redo/es/index.d.ts @@ -0,0 +1,21 @@ +import React, { PureComponent } from 'react'; +import './index.scss'; +import { PluginProps } from '@ali/lowcode-editor-framework/lib/definitions'; +export interface IProps { + editor: any; + logo?: string; +} +export interface IState { + undoEnable: boolean; + redoEnable: boolean; +} +export default class UndoRedo extends PureComponent { + static display: string; + private history; + constructor(props: any); + init: () => void; + updateState: (state: number) => void; + handleUndoClick: () => void; + handleRedoClick: () => void; + render(): React.ReactNode; +} diff --git a/packages/plugin-undo-redo/es/index.js b/packages/plugin-undo-redo/es/index.js new file mode 100644 index 000000000..131007507 --- /dev/null +++ b/packages/plugin-undo-redo/es/index.js @@ -0,0 +1,101 @@ +import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn"; +import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; +import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +import React, { PureComponent } from 'react'; +import './index.scss'; +import { TopIcon } from '@ali/lowcode-editor-skeleton'; + +var UndoRedo = /*#__PURE__*/function (_PureComponent) { + _inheritsLoose(UndoRedo, _PureComponent); + + var _super = _createSuper(UndoRedo); + + function UndoRedo(props) { + var _this; + + _this = _PureComponent.call(this, props) || this; + _this.history = void 0; + + _this.init = function () { + var _editor$designer, _this$history; + + var editor = _this.props.editor; + _this.history = (_editor$designer = editor.designer) === null || _editor$designer === void 0 ? void 0 : _editor$designer.currentHistory; + + _this.updateState(((_this$history = _this.history) === null || _this$history === void 0 ? void 0 : _this$history.getState()) || 0); + + editor.on('designer.history-change', function (history) { + var _this$history2; + + _this.history = history; + + _this.updateState(((_this$history2 = _this.history) === null || _this$history2 === void 0 ? void 0 : _this$history2.getState()) || 0); + }); + }; + + _this.updateState = function (state) { + _this.setState({ + undoEnable: !!(state & 1), + redoEnable: !!(state & 2) + }); + }; + + _this.handleUndoClick = function () { + var _this$history3; + + (_this$history3 = _this.history) === null || _this$history3 === void 0 ? void 0 : _this$history3.back(); + }; + + _this.handleRedoClick = function () { + var _this$history4; + + (_this$history4 = _this.history) === null || _this$history4 === void 0 ? void 0 : _this$history4.forward(); + }; + + _this.state = { + undoEnable: false, + redoEnable: false + }; + + if (props.editor.designer) { + _this.init(); + } else { + props.editor.on('designer.ready', function () { + _this.init(); + }); + } + + return _this; + } + + var _proto = UndoRedo.prototype; + + _proto.render = function render() { + var _this$state = this.state, + undoEnable = _this$state.undoEnable, + redoEnable = _this$state.redoEnable; + return /*#__PURE__*/React.createElement("div", { + className: "lowcode-plugin-undo-redo" + }, /*#__PURE__*/React.createElement(TopIcon, { + icon: "houtui", + title: "\u540E\u9000", + disabled: !undoEnable, + onClick: this.handleUndoClick + }), /*#__PURE__*/React.createElement(TopIcon, { + icon: "qianjin", + title: "\u524D\u8FDB", + disabled: !redoEnable, + onClick: this.handleRedoClick + })); + }; + + return UndoRedo; +}(PureComponent); + +UndoRedo.display = 'LowcodeUndoRedo'; +export { UndoRedo as default }; \ No newline at end of file diff --git a/packages/editor/src/plugins/undoRedo/index.scss b/packages/plugin-undo-redo/es/index.scss similarity index 100% rename from packages/editor/src/plugins/undoRedo/index.scss rename to packages/plugin-undo-redo/es/index.scss diff --git a/packages/plugin-undo-redo/es/style.js b/packages/plugin-undo-redo/es/style.js new file mode 100644 index 000000000..6eec2504a --- /dev/null +++ b/packages/plugin-undo-redo/es/style.js @@ -0,0 +1,2 @@ +import '@ali/lowcode-editor-skeleton/es/style'; +import './index.scss'; \ No newline at end of file diff --git a/packages/plugin-undo-redo/jsconfig.json b/packages/plugin-undo-redo/jsconfig.json new file mode 100644 index 000000000..9e0f3c03d --- /dev/null +++ b/packages/plugin-undo-redo/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "jsx": "react", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/packages/plugin-undo-redo/package-lock.json b/packages/plugin-undo-redo/package-lock.json new file mode 100644 index 000000000..3422fc790 --- /dev/null +++ b/packages/plugin-undo-redo/package-lock.json @@ -0,0 +1,4179 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@alifd/next": { + "version": "1.19.18", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/next/download/@alifd/next-1.19.18.tgz", + "integrity": "sha1-grGCFS+qjXvfwJRk6tKGZWyr+nM=", + "requires": { + "@alifd/field": "~1.3.3", + "@alifd/validate": "~1.1.4", + "babel-runtime": "^6.26.0", + "classnames": "^2.2.3", + "hoist-non-react-statics": "^2.1.0", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-transition-group": "^2.2.1", + "shallow-element-equals": "^1.0.1" + }, + "dependencies": { + "@alifd/field": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/field/download/@alifd/field-1.3.5.tgz", + "integrity": "sha1-uPNwuNnbwquirIX2pZiezVHzZnM=", + "requires": { + "@alifd/validate": "^1.1.3", + "prop-types": "^15.5.8" + } + }, + "@alifd/validate": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/validate/download/@alifd/validate-1.1.5.tgz", + "integrity": "sha1-5EiWeFBRGCy5TbfsKzOpm0yGlDo=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npm.alibaba-inc.com/classnames/download/classnames-2.2.6.tgz", + "integrity": "sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4=" + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npm.alibaba-inc.com/core-js/download/core-js-2.6.11.tgz", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/dom-helpers/download/dom-helpers-3.4.0.tgz", + "integrity": "sha1-6bNpcA+Vn2Ls3lprq95LzNkWmvg=", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha1-xZA89AnA39kI84jmGdhrnBF0y0c=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/react-lifecycles-compat/download/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=" + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-transition-group/download/react-transition-group-2.9.0.tgz", + "integrity": "sha1-35zbAleWIRFRpDbGmo87l7WwfI0=", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + }, + "shallow-element-equals": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/shallow-element-equals/download/shallow-element-equals-1.0.1.tgz", + "integrity": "sha1-UHObfZStdWehNBc9P0QiOH7VfOY=", + "requires": { + "style-equal": "^1.0.0" + } + }, + "style-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-equal/download/style-equal-1.0.0.tgz", + "integrity": "sha1-mKHFkiImv+E8GW5z8ZQOkbjmZZU=" + } + } + }, + "@ice/spec": { + "version": "0.1.9", + "resolved": "https://registry.npm.alibaba-inc.com/@ice/spec/download/@ice/spec-0.1.9.tgz", + "integrity": "sha1-pVjNIibD7f+wXNLGBzhbceXQZ7A=", + "requires": { + "@commitlint/config-conventional": "^8.1.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "babel-eslint": "^10.0.2", + "eslint-config-airbnb": "^17.1.1", + "eslint-config-prettier": "^6.0.0", + "eslint-plugin-import": "^2.18.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.2", + "eslint-plugin-react-hooks": "^1.6.1", + "stylelint-config-css-modules": "^1.4.0", + "stylelint-config-prettier": "^5.2.0", + "stylelint-config-rational-order": "^0.1.2", + "stylelint-config-standard": "^18.3.0", + "stylelint-order": "^3.0.0", + "stylelint-scss": "^3.8.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/core/download/@babel/core-7.8.7.tgz", + "integrity": "sha1-tpAX0iHM3rIDFFrp2iadcs8QLzs=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.7", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.7", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/generator/download/@babel/generator-7.8.8.tgz", + "integrity": "sha1-zc1YyqtzCDTO6e6ttynoM7Yl2j4=", + "requires": { + "@babel/types": "^7.8.7", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helpers/download/@babel/helpers-7.8.4.tgz", + "integrity": "sha1-dU6z7nJ8Fl4KJA1sIH3nxFXzb3M=", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/parser/download/@babel/parser-7.8.8.tgz", + "integrity": "sha1-TDt8422zfgYpvh8NUKVx0vhvbNQ=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.8.7.tgz", + "integrity": "sha1-ggnZ3/LzOqJhbLMZyD/hWf+we4w=", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/template/download/@babel/template-7.8.6.tgz", + "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/traverse/download/@babel/traverse-7.8.6.tgz", + "integrity": "sha1-rP4MZOHNmRs+MuroE6brVklUtf8=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/types/download/@babel/types-7.8.7.tgz", + "integrity": "sha1-H8lynhrLsjN9W2l3pjl5tIGfXR0=", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@commitlint/config-conventional": { + "version": "8.3.4", + "resolved": "https://registry.npm.alibaba-inc.com/@commitlint/config-conventional/download/@commitlint/config-conventional-8.3.4.tgz", + "integrity": "sha1-/tE7NxFpBmOxdsH2s5wgWlZWGNI=", + "requires": { + "conventional-changelog-conventionalcommits": "4.2.1" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/events/download/@types/events-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/glob/download/@types/glob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/@types/json-schema/download/@types/json-schema-7.0.4.tgz", + "integrity": "sha1-OP1z3f2bVaux4bLtV4y1W9e30zk=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=" + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/node/download/@types/node-13.9.1.tgz", + "integrity": "sha1-lvYG+M1n+wGIR9m2HpOZfave/HI=" + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/unist/download/@types/unist-2.0.3.tgz", + "integrity": "sha1-nAiGeYdvN061mD8VDUeHqm+zLX4=" + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile/download/@types/vfile-3.0.2.tgz", + "integrity": "sha1-GcGM0jLfEc5vpq2AJZvIbDZrCbk=", + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile-message/download/@types/vfile-message-2.0.0.tgz", + "integrity": "sha1-aQ5Grw/fwfn6rgDNBJzIiJV5J9U=", + "requires": { + "vfile-message": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-1.13.0.tgz", + "integrity": "sha1-Iv7ZsW3f60Av17zeVjB4IPbrxJ8=", + "requires": { + "@typescript-eslint/experimental-utils": "1.13.0", + "eslint-utils": "^1.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^2.0.1", + "tsutils": "^3.7.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-1.13.0.tgz", + "integrity": "sha1-sIxg14DABn3i+0SwS0MvVAE4MB4=", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-scope": "^4.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/parser/download/@typescript-eslint/parser-1.13.0.tgz", + "integrity": "sha1-Yax4EepSeRxH3J/U3UoYT66aw1U=", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "1.13.0", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-1.13.0.tgz", + "integrity": "sha1-gUDxfQ9gwDYZeY8dYouENJE9wy4=", + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/ajv/download/ajv-6.12.0.tgz", + "integrity": "sha1-BtYLlth7hFSlrauobnhU2mKdtLc=", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.alibaba-inc.com/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/aria-query/download/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-find-index/download/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/array-ify/download/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/array-includes/download/array-includes-3.1.1.tgz", + "integrity": "sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/array.prototype.flat/download/array.prototype.flat-1.2.3.tgz", + "integrity": "sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/arrify/download/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npm.alibaba-inc.com/ast-types-flow/download/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=" + }, + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npm.alibaba-inc.com/autoprefixer/download/autoprefixer-9.7.4.tgz", + "integrity": "sha1-+L8+BnB9BH8GQdh67oz7F0sqU3g=", + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "axobject-query": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/axobject-query/download/axobject-query-2.1.2.tgz", + "integrity": "sha1-K9/8A3HmQ+XwO6mQZdUXm5ynl5k=" + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/bail/download/bail-1.0.5.tgz", + "integrity": "sha1-tvoTNASjksvB+MS/Y/WVM1Hnp3Y=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.alibaba-inc.com/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/browserslist/download/browserslist-4.9.1.tgz", + "integrity": "sha1-Af+5yjGhrvdngSj8aiJTMWqnKHw=", + "requires": { + "caniuse-lite": "^1.0.30001030", + "electron-to-chromium": "^1.3.363", + "node-releases": "^1.1.50" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-callsite/download/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase/download/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase-keys/download/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001035", + "resolved": "https://registry.npm.alibaba-inc.com/caniuse-lite/download/caniuse-lite-1.0.30001035.tgz", + "integrity": "sha1-K7U7iqRxay7QjgiNTcgWpf4Imh4=" + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/ccount/download/ccount-1.0.5.tgz", + "integrity": "sha1-rIKpRJBaZc4gTrAwIxV+3ylCXBc=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/chalk/download/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities/download/character-entities-1.2.4.tgz", + "integrity": "sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=" + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-html4/download/character-entities-html4-1.1.4.tgz", + "integrity": "sha1-DmSwo3U92/H9wETF/QHQGZoC4SU=" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz", + "integrity": "sha1-lLwYRdznClu50uzHSHJWYSk9j8E=" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz", + "integrity": "sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.alibaba-inc.com/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/clone-regexp/download/clone-regexp-1.0.1.tgz", + "integrity": "sha1-BRgFzTMXM3XYIRj8CRhgbaOf1g8=", + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/collapse-white-space/download/collapse-white-space-1.0.6.tgz", + "integrity": "sha1-5jYpwAFmZXkgYNu+t5xCI50sUoc=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.alibaba-inc.com/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=" + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/compare-func/download/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npm.alibaba-inc.com/confusing-browser-globals/download/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha1-crwTtIPAJ2gBaBhx1ImFFvj1T90=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/contains-path/download/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "conventional-changelog-conventionalcommits": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/conventional-changelog-conventionalcommits/download/conventional-changelog-conventionalcommits-4.2.1.tgz", + "integrity": "sha1-1ssuLF17/KBEoIuduoS0CC4aG9k=", + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.2.1", + "q": "^1.5.1" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npm.alibaba-inc.com/core-js-pure/download/core-js-pure-3.6.4.tgz", + "integrity": "sha1-S/G6hm4lgU8UnU6aqgjDYXNQbjo=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/currently-unhandled/download/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/damerau-levenshtein/download/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha1-FDwWQcs9hcYMMjKeJoma3qhwF5E=" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize-keys/download/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=" + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/domutils/download/domutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.377", + "resolved": "https://registry.npm.alibaba-inc.com/electron-to-chromium/download/electron-to-chromium-1.3.377.tgz", + "integrity": "sha1-tJ1CCzbubEiwzTE3v8f+x182my4=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=" + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npm.alibaba-inc.com/es-abstract/download/es-abstract-1.17.4.tgz", + "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-config-airbnb": { + "version": "17.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb/download/eslint-config-airbnb-17.1.1.tgz", + "integrity": "sha1-InLguGux4rE4zfiNB6O29M2j1iY=", + "requires": { + "eslint-config-airbnb-base": "^13.2.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-airbnb-base": { + "version": "13.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb-base/download/eslint-config-airbnb-base-13.2.0.tgz", + "integrity": "sha1-9uqBRZ/03sLdogDDXx2PdBnVeUM=", + "requires": { + "confusing-browser-globals": "^1.0.5", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-prettier/download/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha1-exXjA7+clWh1yUj2shUA5I3tan8=", + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ=", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-module-utils/download/eslint-module-utils-2.5.2.tgz", + "integrity": "sha1-eHj3UEgk4bhX3SUFtZqOXtompwg=", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-import/download/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha1-gCQjGW3LEdnOhDWl/AKm07RpObM=", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-jsx-a11y/download/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react/download/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha1-bQj5ZzYoqmnFVZ0zSJ6FXYNVFmY=", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-2.1.0.tgz", + "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-utils/download/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/estraverse/download/estraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=" + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/execall/download/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "requires": { + "clone-regexp": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.alibaba-inc.com/fast-glob/download/fast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + }, + "file-entry-cache": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/file-entry-cache/download/file-entry-cache-4.0.0.tgz", + "integrity": "sha1-YzVn0VNkrv4LKZ4eIXc16POp9ug=", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flatted/download/flatted-2.0.1.tgz", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.alibaba-inc.com/gensync/download/gensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=" + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/get-stdin/download/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/glob/download/glob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-modules/download/global-modules-2.0.0.tgz", + "integrity": "sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-prefix/download/global-prefix-3.0.0.tgz", + "integrity": "sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=" + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/globjoin/download/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=" + }, + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/gonzales-pe/download/gonzales-pe-4.2.4.tgz", + "integrity": "sha1-NWrjajEsRv4PECbdbLU5A5+FANI=", + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=" + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/graceful-fs/download/graceful-fs-4.2.3.tgz", + "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-symbols/download/has-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/hosted-git-info/download/hosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=" + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-5.1.4.tgz", + "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-fresh/download/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-lazy/download/import-lazy-3.1.0.tgz", + "integrity": "sha1-iRJ5ICyKIoD9vWZ029jaGh38Z8w=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/indent-string/download/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/ini/download/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/internal-slot/download/internal-slot-1.0.2.tgz", + "integrity": "sha1-nC6fs82OXkJWxvRf4xAGf8+jeKM=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphabetical/download/is-alphabetical-1.0.4.tgz", + "integrity": "sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=" + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumeric/download/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz", + "integrity": "sha1-frmiQx+FX2se8aeOMm31FWlsTb8=", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-callable/download/is-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-decimal/download/is-decimal-1.0.4.tgz", + "integrity": "sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz", + "integrity": "sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-regex/download/is-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-regexp/download/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-string/download/is-string-1.0.5.tgz", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=" + }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-supported-regexp-flag/download/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha1-Ie4WUY0sHdPt0+mg1X5QIHrDZMo=" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/is-symbol/download/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-whitespace-character/download/is-whitespace-character-1.0.4.tgz", + "integrity": "sha1-CFjt2UqVWUx8ndC1wXTsbkXuSqc=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-word-character/download/is-word-character-1.0.4.tgz", + "integrity": "sha1-zg5zIW+YWZBgWS9i/zE1TdvrAjA=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.alibaba-inc.com/js-yaml/download/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/json5/download/json5-2.1.2.tgz", + "integrity": "sha1-Q+8fCvmDXdYkdRprf6SIdPstYI4=", + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + } + } + }, + "jsx-ast-utils": { + "version": "2.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/jsx-ast-utils/download/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha1-ipNk5AJEijzn8U01dzgxDZJIBU8=", + "requires": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=" + }, + "known-css-properties": { + "version": "0.11.0", + "resolved": "https://registry.npm.alibaba-inc.com/known-css-properties/download/known-css-properties-0.11.0.tgz", + "integrity": "sha1-DaeE8RXqd8drgVNtcFLpDubIaoo=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/leven/download/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.alibaba-inc.com/lodash/download/lodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/lodash.unescape/download/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "requires": { + "chalk": "^2.0.1" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/longest-streak/download/longest-streak-2.0.4.tgz", + "integrity": "sha1-uFmZV9pbXatk3uP+MW+ndFl9kOQ=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/loud-rejection/download/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-escapes/download/markdown-escapes-1.0.4.tgz", + "integrity": "sha1-yVQV70UUmddgK5EJXzyOiXX3hTU=" + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-table/download/markdown-table-1.1.3.tgz", + "integrity": "sha1-n8tpvP24cXv9A5jG7C2TA2743mA=" + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/mathml-tag-names/download/mathml-tag-names-2.1.3.tgz", + "integrity": "sha1-TdrdZzCOeAzxakdoWHjuJ7c2oKM=" + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/mdast-util-compact/download/mdast-util-compact-1.0.4.tgz", + "integrity": "sha1-1TG7dme1Ejq/IIWb4IbE0GyJRZM=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/meow/download/meow-5.0.0.tgz", + "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=", + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/merge2/download/merge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.alibaba-inc.com/micromatch/download/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/minimist-options/download/minimist-options-3.0.2.tgz", + "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.alibaba-inc.com/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npm.alibaba-inc.com/node-releases/download/node-releases-1.1.52.tgz", + "integrity": "sha1-vP/uPgp1jpLkTs+uzQpHVUsLy6k=", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-selector/download/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=" + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-inspect/download/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.entries/download/object.entries-1.1.1.tgz", + "integrity": "sha1-7hzwQVPeArsJP+wzaDkA9XzlOZs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/object.fromentries/download/object.fromentries-2.0.2.tgz", + "integrity": "sha1-SgnJubs4Q90PiazbUXp5TU81Wsk=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-limit/download/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/parse-entities/download/parse-entities-1.2.2.tgz", + "integrity": "sha1-wxvw9lO2ZhNU+Jc1WcuG3R1e31A=", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pkg-dir/download/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npm.alibaba-inc.com/postcss/download/postcss-7.0.27.tgz", + "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-html/download/postcss-html-0.36.0.tgz", + "integrity": "sha1-tAkT+U6qzCRT/TChMnrW7h+IsgQ=", + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-jsx": { + "version": "0.36.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-jsx/download/postcss-jsx-0.36.4.tgz", + "integrity": "sha1-N6aPMAo55XSNVH8Zp0ezJXJAvVA=", + "requires": { + "@babel/core": ">=7.2.2" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-less/download/postcss-less-3.1.4.tgz", + "integrity": "sha1-Np9YZCtZKO+Jj/vBpuk8lYMExa0=", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-markdown/download/postcss-markdown-0.36.0.tgz", + "integrity": "sha1-fyKEmuDj2xiCC3sNXngz8TpEdWA=", + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-reporter/download/postcss-reporter-6.0.1.tgz", + "integrity": "sha1-fAVRIAYKl8iDe05IIVZhqvt0JF8=", + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=" + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-safe-parser/download/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha1-ptTkjw832ffBGypYG/APi6SHC5Y=", + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sass/download/postcss-sass-0.3.5.tgz", + "integrity": "sha1-bT458QGlPS76CR+VNJMRbTK+tow=", + "requires": { + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-scss/download/postcss-scss-2.0.0.tgz", + "integrity": "sha1-JIsKKK936nsysQEaug9zi9on3qE=", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=" + } + } + }, + "postcss-sorting": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-4.1.0.tgz", + "integrity": "sha1-oQfwvzhSl3+mTkRCvDQMiNWqzbM=", + "requires": { + "lodash": "^4.17.4", + "postcss": "^7.0.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-syntax/download/postcss-syntax-0.36.2.tgz", + "integrity": "sha1-8IV4x9lYNFdOVZOoLfv6ivrjtRw=" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/quick-lru/download/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/redent/download/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=" + }, + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/remark/download/remark-10.0.1.tgz", + "integrity": "sha1-MFgHbcQXgb9QXYl4wpFIX+R2Z98=", + "requires": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/remark-parse/download/remark-parse-6.0.3.tgz", + "integrity": "sha1-yZExBSgJ2kghCEE/h7Duf1IYCjo=", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/remark-stringify/download/remark-stringify-6.0.4.tgz", + "integrity": "sha1-FqwinU0VkySQGGY8e93yiq/E4Ig=", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve/download/resolve-1.15.1.tgz", + "integrity": "sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g=", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.alibaba-inc.com/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.alibaba-inc.com/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/side-channel/download/side-channel-1.0.2.tgz", + "integrity": "sha1-310auttOS/SvHNiFK/Ey0veHaUc=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-resolve/download/source-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=" + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/specificity/download/specificity-0.4.1.tgz", + "integrity": "sha1-qrXmRQEtsIuhguFRFlc40AiHsBk=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/state-toggle/download/state-toggle-1.0.3.tgz", + "integrity": "sha1-4SOxaojhQxObCcaFIiG8mBWRff4=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.matchall/download/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha1-SLtRAyb7n962ozzqqBpuoE73ZI4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-1.3.0.tgz", + "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/stringify-entities/download/stringify-entities-1.3.2.tgz", + "integrity": "sha1-qYQX5Ucf0iez5F09sYYcEcr2aPc=", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-bom/download/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-search/download/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=" + }, + "stylelint": { + "version": "9.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint/download/stylelint-9.10.1.tgz", + "integrity": "sha1-Xw7jcBRh3/HWgoThOG7+jwZ3p10=", + "requires": { + "autoprefixer": "^9.0.0", + "balanced-match": "^1.0.0", + "chalk": "^2.4.1", + "cosmiconfig": "^5.0.0", + "debug": "^4.0.0", + "execall": "^1.0.0", + "file-entry-cache": "^4.0.0", + "get-stdin": "^6.0.0", + "global-modules": "^2.0.0", + "globby": "^9.0.0", + "globjoin": "^0.1.4", + "html-tags": "^2.0.0", + "ignore": "^5.0.4", + "import-lazy": "^3.1.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.11.0", + "leven": "^2.1.0", + "lodash": "^4.17.4", + "log-symbols": "^2.0.0", + "mathml-tag-names": "^2.0.1", + "meow": "^5.0.0", + "micromatch": "^3.1.10", + "normalize-selector": "^0.2.0", + "pify": "^4.0.0", + "postcss": "^7.0.13", + "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.0", + "postcss-less": "^3.1.0", + "postcss-markdown": "^0.36.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.0", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.0", + "postcss-sass": "^0.3.5", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^3.1.0", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^3.3.0", + "resolve-from": "^4.0.0", + "signal-exit": "^3.0.2", + "slash": "^2.0.0", + "specificity": "^0.4.1", + "string-width": "^3.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "stylelint-config-css-modules": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-css-modules/download/stylelint-config-css-modules-1.5.0.tgz", + "integrity": "sha1-x9kB2wUvWi7jE13eUUkNNMKBrdM=" + }, + "stylelint-config-prettier": { + "version": "5.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-prettier/download/stylelint-config-prettier-5.3.0.tgz", + "integrity": "sha1-ptpibC7auyxSB7z2P+RJwW9aJOw=" + }, + "stylelint-config-rational-order": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-rational-order/download/stylelint-config-rational-order-0.1.2.tgz", + "integrity": "sha1-TpjjkHg9Q38OxB+3O8QZkueNAqA=", + "requires": { + "stylelint": "^9.10.1", + "stylelint-order": "^2.2.1" + }, + "dependencies": { + "stylelint-order": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-2.2.1.tgz", + "integrity": "sha1-zS1KDYHZHHBfHSdaWEh+WtWqWCg=", + "requires": { + "lodash": "^4.17.10", + "postcss": "^7.0.2", + "postcss-sorting": "^4.1.0" + } + } + } + }, + "stylelint-config-recommended": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-recommended/download/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha1-RqsTnbSg5xUf1flK8VVRKIbJbT8=" + }, + "stylelint-config-standard": { + "version": "18.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-standard/download/stylelint-config-standard-18.3.0.tgz", + "integrity": "sha1-oqG3iNLPh2wBP+r/iuJ2EXob76c=", + "requires": { + "stylelint-config-recommended": "^2.2.0" + } + }, + "stylelint-order": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-3.1.1.tgz", + "integrity": "sha1-up6mhE0Ugvl/MSBOfJYFx7eSwpQ=", + "requires": { + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-sorting": "^5.0.1" + }, + "dependencies": { + "postcss-sorting": { + "version": "5.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-5.0.1.tgz", + "integrity": "sha1-ENXQBZ7qgzTazIIMASGGQDW8PxE=", + "requires": { + "lodash": "^4.17.14", + "postcss": "^7.0.17" + } + } + } + }, + "stylelint-scss": { + "version": "3.15.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-scss/download/stylelint-scss-3.15.0.tgz", + "integrity": "sha1-34c6EWO1kuy/mFqE1ZhWkiLWcEM=", + "requires": { + "lodash": "^4.17.15", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/sugarss/download/sugarss-2.0.0.tgz", + "integrity": "sha1-3dduASSyl9QL88yjHIsi7LQ7xh0=", + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.alibaba-inc.com/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/trim/download/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/trim-newlines/download/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/trim-trailing-lines/download/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha1-fwc5iB/3Zle3d24Qh0EoAEtiWpQ=" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/trough/download/trough-1.0.5.tgz", + "integrity": "sha1-uLY5zvrX0LsqvTfUM/+Ck++l9AY=" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/tslib/download/tslib-1.11.1.tgz", + "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npm.alibaba-inc.com/tsutils/download/tsutils-3.17.1.tgz", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "requires": { + "tslib": "^1.8.1" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/unherit/download/unherit-1.1.3.tgz", + "integrity": "sha1-bJtQPytBsmIzDIDpHIYUq9qmnCI=", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/unified/download/unified-7.1.0.tgz", + "integrity": "sha1-UDLxwe4zZL0J2hLif91KdVPHvhM=", + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "unist-util-find-all-after": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-find-all-after/download/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha1-V1GoYIg09B0RetnFd3cMXy8bKJk=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-is/download/unist-util-is-3.0.0.tgz", + "integrity": "sha1-2ehDgcJGjoJinkpb6dfQWi3TJM0=" + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-remove-position/download/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha1-7ANzSLYQLIl3A+7m0ClMpHVaICA=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha1-zOO/oc34W6c3XR1bF73Eytqb2do=", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit/download/unist-util-visit-1.4.1.tgz", + "integrity": "sha1-RySqqEhububibX/zyGhZYNVgseM=", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit-parents/download/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha1-JeQ+VTEhZvM0jK5nQ1iHgdESwek=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile/download/vfile-3.0.1.tgz", + "integrity": "sha1-RzMdKr4ygkJPSku2rNIKRMQSGAM=", + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-2.0.4.tgz", + "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha1-Pzf881EnncvKdICrWIm7ioMu4cY=" + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-1.1.1.tgz", + "integrity": "sha1-WDOuB4od+i2W6WR4hs0ymTqzE+E=", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-location/download/vfile-location-2.0.6.tgz", + "integrity": "sha1-iidPOUEbhxnqVyiALhDZ4N/xUZ4=" + }, + "vfile-message": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-2.0.3.tgz", + "integrity": "sha1-DdT2h5+yQKgJmyK9N1VTbJLlm6U=", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/which/download/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/x-is-string/download/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/xregexp/download/xregexp-4.3.0.tgz", + "integrity": "sha1-fpLnPZF0qZpZdD9npM6HmgS1rlA=", + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/yargs-parser/download/yargs-parser-10.1.0.tgz", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.alibaba-inc.com/prettier/download/prettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=" + }, + "react": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react/download/react-16.13.0.tgz", + "integrity": "sha1-0EbqvN9k5Fe77tHnkuI14bmTTPc=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + } + } + }, + "react-dom": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-dom/download/react-dom-16.13.0.tgz", + "integrity": "sha1-zd5UtI656KDKGz3JlD2btAm4GGY=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "scheduler": { + "version": "0.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/scheduler/download/scheduler-0.19.0.tgz", + "integrity": "sha1-pxXVYwLeQD33QvSpvhGXWzL1aY0=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router-dom/download/react-router-dom-5.1.2.tgz", + "integrity": "sha1-BnAbg0NS9E03+7YxH4cPhMdrnBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.1.2", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/gud/download/gud-1.0.0.tgz", + "integrity": "sha1-pIlYGxfmpwvsqavjrlfeekmYUsA=" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/history/download/history-4.10.1.tgz", + "integrity": "sha1-MzcaZeOoOyZ0NOKz87G0xYqtTPM=", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=", + "requires": { + "react-is": "^16.7.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "mini-create-react-context": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mini-create-react-context/download/mini-create-react-context-0.3.2.tgz", + "integrity": "sha1-efxZjyg91iPajgiLBduM3aslAYk=", + "requires": { + "@babel/runtime": "^7.4.0", + "gud": "^1.0.0", + "tiny-warning": "^1.0.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-to-regexp/download/path-to-regexp-1.8.0.tgz", + "integrity": "sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo=", + "requires": { + "isarray": "0.0.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-router": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router/download/react-router-5.1.2.tgz", + "integrity": "sha1-bqUdeJyzamvhul98DUjdnoF9NBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.3.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-pathname/download/resolve-pathname-3.0.0.tgz", + "integrity": "sha1-mdAiJNPPJjaJvsuzk7xWAxMCXc0=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-invariant/download/tiny-invariant-1.1.0.tgz", + "integrity": "sha1-Y0xfjv3CdxS384bDXmdgmR0jCHU=" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-warning/download/tiny-warning-1.0.3.tgz", + "integrity": "sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/value-equal/download/value-equal-1.0.1.tgz", + "integrity": "sha1-Hgt5THNMXAyt4XnEN9NW2TGjTWw=" + } + } + } + } +} diff --git a/packages/plugin-undo-redo/package.json b/packages/plugin-undo-redo/package.json new file mode 100644 index 000000000..fa789a1e1 --- /dev/null +++ b/packages/plugin-undo-redo/package.json @@ -0,0 +1,56 @@ +{ + "name": "@ali/lowcode-plugin-undo-redo", + "version": "0.0.1", + "description": "alibaba lowcode editor undo redo plugin", + "files": [ + "demo/", + "es/", + "lib/", + "build/" + ], + "main": "lib/index.tsx", + "module": "es/index.js", + "stylePath": "style.js", + "scripts": { + "start": "build-scripts start", + "build": "build-scripts build --skip-demo", + "prepublishOnly": "npm run prettier && npm run build", + "lint": "eslint --cache --ext .js,.jsx ./", + "prettier": "prettier --write \"./src/**/*.{ts,tsx,js,jsx,ejs,less,css,scss,json}\" " + }, + "keywords": [ + "lowcode", + "editor" + ], + "author": "xiayang.xy", + "dependencies": { + "@ali/lowcode-editor-skeleton": "0.0.1", + "prop-types": "^15.5.8", + "react": "^16.8.1", + "react-dom": "^16.8.1", + "react-router-dom": "^5.1.2" + }, + "peerDependencies": { + "@ali/lowcode-editor-framework": "0.0.1" + }, + "devDependencies": { + "@alib/build-scripts": "^0.1.3", + "@alifd/next": "1.x", + "@ice/spec": "^0.1.1", + "@types/lodash": "^4.14.149", + "@types/react": "^16.9.13", + "@types/react-dom": "^16.9.4", + "build-plugin-component": "^0.2.7-1", + "build-plugin-fusion": "^0.1.0", + "build-plugin-moment-locales": "^0.1.0", + "eslint": "^6.0.1", + "prettier": "^1.19.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/ice-lab/react-materials/tree/master/scaffolds/ice-ts" + }, + "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-engine-skeleton@0.0.1/build/index.html" +} diff --git a/packages/plugin-undo-redo/src/index.scss b/packages/plugin-undo-redo/src/index.scss new file mode 100644 index 000000000..e69de29bb diff --git a/packages/editor/src/plugins/undoRedo/index.tsx b/packages/plugin-undo-redo/src/index.tsx similarity index 92% rename from packages/editor/src/plugins/undoRedo/index.tsx rename to packages/plugin-undo-redo/src/index.tsx index 345a84356..804631f30 100644 --- a/packages/editor/src/plugins/undoRedo/index.tsx +++ b/packages/plugin-undo-redo/src/index.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; import './index.scss'; -import { PluginProps } from '../../framework/definitions'; -import TopIcon from '../../skeleton/components/TopIcon/index'; +import { PluginProps } from '@ali/lowcode-editor-framework/lib/definitions'; +import {TopIcon} from '@ali/lowcode-editor-skeleton'; export interface IProps { editor: any; diff --git a/packages/plugin-undo-redo/tests/index.js b/packages/plugin-undo-redo/tests/index.js new file mode 100644 index 000000000..346e384d2 --- /dev/null +++ b/packages/plugin-undo-redo/tests/index.js @@ -0,0 +1 @@ +// test file diff --git a/packages/plugin-undo-redo/tsconfig.json b/packages/plugin-undo-redo/tsconfig.json new file mode 100644 index 000000000..a511d68ba --- /dev/null +++ b/packages/plugin-undo-redo/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "es6", + "jsx": "react", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} From 37e49a34fce863c9d017126981ca3e4ad3d54c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8B=E7=BE=8A?= Date: Thu, 26 Mar 2020 21:24:30 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat:=E7=BC=96=E8=BE=91=E5=99=A8=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/package.json | 2 +- .../.eslintignore | 0 .../.eslintrc.js | 0 .../.gitignore | 0 .../.prettierrc | 0 .../README copy.md | 0 .../README.md | 0 .../build.json | 0 .../demo/usage.md | 0 .../es/areaManager.d.ts | 0 .../es/areaManager.js | 0 .../es/context.d.ts | 0 .../es/context.js | 0 .../es/definitions.d.ts | 0 .../es/definitions.js | 0 .../es/editor.d.ts | 2 +- .../es/editor.js | 3 - .../es/index.d.ts | 0 .../es/index.js | 0 .../es/pluginFactory.d.ts | 0 .../es/pluginFactory.js | 0 packages/editor-core/es/request.d.ts | 6 + packages/editor-core/es/request.js | 111 + .../es/style.js | 0 .../es/utils.d.ts | 2 +- .../es/utils.js | 1 + .../package-lock.json | 0 .../package.json | 7 +- .../src/areaManager.ts | 0 .../src/context.ts | 0 .../src/definitions.ts | 0 .../src/editor.ts | 3 +- .../src/index.ts | 0 .../src/pluginFactory.tsx | 0 packages/editor-core/src/request.ts | 125 + .../src/utils.ts | 1 + .../tsconfig.json | 0 .../es/components/LeftPlugin/index.d.ts | 4 +- .../es/components/TopPlugin/index.d.ts | 4 +- .../es/layouts/CenterArea/index.d.ts | 2 +- .../es/layouts/CenterArea/index.js | 2 +- .../es/layouts/LeftArea/nav.d.ts | 7 +- .../es/layouts/LeftArea/nav.js | 2 +- .../es/layouts/LeftArea/panel.d.ts | 2 +- .../es/layouts/LeftArea/panel.js | 2 +- .../es/layouts/RightArea/index.d.ts | 9 +- .../es/layouts/RightArea/index.js | 2 +- .../es/layouts/TopArea/index.d.ts | 5 +- .../es/layouts/TopArea/index.js | 2 +- packages/editor-skeleton/es/skeleton.d.ts | 4 +- packages/editor-skeleton/es/skeleton.js | 5 +- packages/editor-skeleton/es/style.js | 1 - packages/editor-skeleton/package.json | 2 +- .../src/components/LeftPlugin/index.tsx | 4 +- .../src/components/TopPlugin/index.tsx | 4 +- packages/editor-skeleton/src/index.ts | 5 +- .../src/layouts/CenterArea/index.tsx | 2 +- .../src/layouts/LeftArea/nav.tsx | 4 +- .../src/layouts/LeftArea/panel.tsx | 2 +- .../src/layouts/RightArea/index.tsx | 4 +- .../src/layouts/TopArea/index.tsx | 4 +- packages/editor-skeleton/src/skeleton.tsx | 7 +- packages/editor/package.json | 8 +- packages/editor/public/assets.json | 1589 +++++++ packages/editor/public/schema.json | 110 + packages/editor/src/config/assets.js | 458 +- packages/editor/src/config/components.js | 6 +- packages/editor/src/config/skeleton.js | 262 +- packages/editor/src/index.tsx | 4 +- .../editor/src/plugins/designer/index.tsx | 35 +- packages/material-parser/package.json | 2 +- packages/plugin-component-pane/src/index.tsx | 24 + packages/plugin-components-pane/.editorconfig | 12 + packages/plugin-components-pane/.eslintignore | 11 + packages/plugin-components-pane/.eslintrc.js | 16 + packages/plugin-components-pane/.gitignore | 20 + .../plugin-components-pane/.stylelintignore | 7 + .../plugin-components-pane/.stylelintrc.js | 3 + packages/plugin-components-pane/README.md | 1 + packages/plugin-components-pane/abc.json | 4 + packages/plugin-components-pane/build.json | 9 + packages/plugin-components-pane/demo/usage.md | 24 + packages/plugin-components-pane/es/index.d.ts | 9 + packages/plugin-components-pane/es/index.js | 17 + packages/plugin-components-pane/es/index.scss | 13 + packages/plugin-components-pane/es/style.js | 1 + packages/plugin-components-pane/jsconfig.json | 9 + .../plugin-components-pane/package-lock.json | 4179 +++++++++++++++++ packages/plugin-components-pane/package.json | 58 + .../plugin-components-pane/src/index.scss | 25 + packages/plugin-components-pane/src/index.tsx | 189 + .../plugin-components-pane/tests/index.js | 1 + packages/plugin-components-pane/tsconfig.json | 21 + packages/plugin-designer/.editorconfig | 12 + packages/plugin-designer/.eslintignore | 11 + packages/plugin-designer/.eslintrc.js | 16 + packages/plugin-designer/.gitignore | 20 + packages/plugin-designer/.stylelintignore | 7 + packages/plugin-designer/.stylelintrc.js | 3 + packages/plugin-designer/README.md | 1 + packages/plugin-designer/abc.json | 4 + packages/plugin-designer/build.json | 9 + packages/plugin-designer/demo/usage.md | 24 + packages/plugin-designer/es/index.d.ts | 16 + packages/plugin-designer/es/index.js | 195 + packages/plugin-designer/es/index.scss | 4 + packages/plugin-designer/es/style.js | 1 + packages/plugin-designer/jsconfig.json | 9 + packages/plugin-designer/package-lock.json | 4179 +++++++++++++++++ packages/plugin-designer/package.json | 55 + packages/plugin-designer/src/index.scss | 4 + packages/plugin-designer/src/index.tsx | 202 + packages/plugin-designer/tests/index.js | 1 + packages/plugin-designer/tsconfig.json | 21 + packages/plugin-logo/es/index.d.ts | 2 +- packages/plugin-logo/package.json | 2 +- packages/plugin-logo/src/index.tsx | 2 +- packages/plugin-save/es/index.d.ts | 2 +- packages/plugin-save/package.json | 2 +- packages/plugin-save/src/index.scss | 2 +- packages/plugin-save/src/index.tsx | 10 +- packages/plugin-setters/package.json | 2 +- packages/plugin-settings/package.json | 2 +- packages/plugin-undo-redo/es/index.d.ts | 5 +- packages/plugin-undo-redo/es/index.js | 60 +- packages/plugin-undo-redo/package.json | 2 +- packages/plugin-undo-redo/src/index.tsx | 53 +- packages/react-renderer/package.json | 2 +- packages/runtime-framework/package.json | 2 +- packages/utils/package.json | 2 +- 130 files changed, 11839 insertions(+), 588 deletions(-) rename packages/{editor-framework => editor-core}/.eslintignore (100%) rename packages/{editor-framework => editor-core}/.eslintrc.js (100%) rename packages/{editor-framework => editor-core}/.gitignore (100%) rename packages/{editor-framework => editor-core}/.prettierrc (100%) rename packages/{editor-framework => editor-core}/README copy.md (100%) rename packages/{editor-framework => editor-core}/README.md (100%) rename packages/{editor-framework => editor-core}/build.json (100%) rename packages/{editor-framework => editor-core}/demo/usage.md (100%) rename packages/{editor-framework => editor-core}/es/areaManager.d.ts (100%) rename packages/{editor-framework => editor-core}/es/areaManager.js (100%) rename packages/{editor-framework => editor-core}/es/context.d.ts (100%) rename packages/{editor-framework => editor-core}/es/context.js (100%) rename packages/{editor-framework => editor-core}/es/definitions.d.ts (100%) rename packages/{editor-framework => editor-core}/es/definitions.js (100%) rename packages/{editor-framework => editor-core}/es/editor.d.ts (93%) rename packages/{editor-framework => editor-core}/es/editor.js (99%) rename packages/{editor-framework => editor-core}/es/index.d.ts (100%) rename packages/{editor-framework => editor-core}/es/index.js (100%) rename packages/{editor-framework => editor-core}/es/pluginFactory.d.ts (100%) rename packages/{editor-framework => editor-core}/es/pluginFactory.js (100%) create mode 100644 packages/editor-core/es/request.d.ts create mode 100644 packages/editor-core/es/request.js rename packages/{editor-framework => editor-core}/es/style.js (100%) rename packages/{editor-framework => editor-core}/es/utils.d.ts (98%) rename packages/{editor-framework => editor-core}/es/utils.js (99%) rename packages/{editor-framework => editor-core}/package-lock.json (100%) rename packages/{editor-framework => editor-core}/package.json (91%) rename packages/{editor-framework => editor-core}/src/areaManager.ts (100%) rename packages/{editor-framework => editor-core}/src/context.ts (100%) rename packages/{editor-framework => editor-core}/src/definitions.ts (100%) rename packages/{editor-framework => editor-core}/src/editor.ts (98%) rename packages/{editor-framework => editor-core}/src/index.ts (100%) rename packages/{editor-framework => editor-core}/src/pluginFactory.tsx (100%) create mode 100644 packages/editor-core/src/request.ts rename packages/{editor-framework => editor-core}/src/utils.ts (99%) rename packages/{editor-framework => editor-core}/tsconfig.json (100%) create mode 100644 packages/editor/public/assets.json create mode 100644 packages/editor/public/schema.json create mode 100644 packages/plugin-component-pane/src/index.tsx create mode 100644 packages/plugin-components-pane/.editorconfig create mode 100644 packages/plugin-components-pane/.eslintignore create mode 100644 packages/plugin-components-pane/.eslintrc.js create mode 100644 packages/plugin-components-pane/.gitignore create mode 100644 packages/plugin-components-pane/.stylelintignore create mode 100644 packages/plugin-components-pane/.stylelintrc.js create mode 100644 packages/plugin-components-pane/README.md create mode 100644 packages/plugin-components-pane/abc.json create mode 100644 packages/plugin-components-pane/build.json create mode 100644 packages/plugin-components-pane/demo/usage.md create mode 100644 packages/plugin-components-pane/es/index.d.ts create mode 100644 packages/plugin-components-pane/es/index.js create mode 100644 packages/plugin-components-pane/es/index.scss create mode 100644 packages/plugin-components-pane/es/style.js create mode 100644 packages/plugin-components-pane/jsconfig.json create mode 100644 packages/plugin-components-pane/package-lock.json create mode 100644 packages/plugin-components-pane/package.json create mode 100644 packages/plugin-components-pane/src/index.scss create mode 100644 packages/plugin-components-pane/src/index.tsx create mode 100644 packages/plugin-components-pane/tests/index.js create mode 100644 packages/plugin-components-pane/tsconfig.json create mode 100644 packages/plugin-designer/.editorconfig create mode 100644 packages/plugin-designer/.eslintignore create mode 100644 packages/plugin-designer/.eslintrc.js create mode 100644 packages/plugin-designer/.gitignore create mode 100644 packages/plugin-designer/.stylelintignore create mode 100644 packages/plugin-designer/.stylelintrc.js create mode 100644 packages/plugin-designer/README.md create mode 100644 packages/plugin-designer/abc.json create mode 100644 packages/plugin-designer/build.json create mode 100644 packages/plugin-designer/demo/usage.md create mode 100644 packages/plugin-designer/es/index.d.ts create mode 100644 packages/plugin-designer/es/index.js create mode 100644 packages/plugin-designer/es/index.scss create mode 100644 packages/plugin-designer/es/style.js create mode 100644 packages/plugin-designer/jsconfig.json create mode 100644 packages/plugin-designer/package-lock.json create mode 100644 packages/plugin-designer/package.json create mode 100644 packages/plugin-designer/src/index.scss create mode 100644 packages/plugin-designer/src/index.tsx create mode 100644 packages/plugin-designer/tests/index.js create mode 100644 packages/plugin-designer/tsconfig.json diff --git a/packages/designer/package.json b/packages/designer/package.json index b9d63b32d..75d5ca596 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -7,7 +7,7 @@ "license": "MIT", "dependencies": { "@ali/iceluna-sdk": "^1.0.5-beta.12", - "@ali/lowcode-editor-framework": "^0.0.1", + "@ali/lowcode-editor-core": "^0.0.1", "@recore/obx": "^1.0.8", "@recore/obx-react": "^1.0.7", "@types/medium-editor": "^5.0.3", diff --git a/packages/editor-framework/.eslintignore b/packages/editor-core/.eslintignore similarity index 100% rename from packages/editor-framework/.eslintignore rename to packages/editor-core/.eslintignore diff --git a/packages/editor-framework/.eslintrc.js b/packages/editor-core/.eslintrc.js similarity index 100% rename from packages/editor-framework/.eslintrc.js rename to packages/editor-core/.eslintrc.js diff --git a/packages/editor-framework/.gitignore b/packages/editor-core/.gitignore similarity index 100% rename from packages/editor-framework/.gitignore rename to packages/editor-core/.gitignore diff --git a/packages/editor-framework/.prettierrc b/packages/editor-core/.prettierrc similarity index 100% rename from packages/editor-framework/.prettierrc rename to packages/editor-core/.prettierrc diff --git a/packages/editor-framework/README copy.md b/packages/editor-core/README copy.md similarity index 100% rename from packages/editor-framework/README copy.md rename to packages/editor-core/README copy.md diff --git a/packages/editor-framework/README.md b/packages/editor-core/README.md similarity index 100% rename from packages/editor-framework/README.md rename to packages/editor-core/README.md diff --git a/packages/editor-framework/build.json b/packages/editor-core/build.json similarity index 100% rename from packages/editor-framework/build.json rename to packages/editor-core/build.json diff --git a/packages/editor-framework/demo/usage.md b/packages/editor-core/demo/usage.md similarity index 100% rename from packages/editor-framework/demo/usage.md rename to packages/editor-core/demo/usage.md diff --git a/packages/editor-framework/es/areaManager.d.ts b/packages/editor-core/es/areaManager.d.ts similarity index 100% rename from packages/editor-framework/es/areaManager.d.ts rename to packages/editor-core/es/areaManager.d.ts diff --git a/packages/editor-framework/es/areaManager.js b/packages/editor-core/es/areaManager.js similarity index 100% rename from packages/editor-framework/es/areaManager.js rename to packages/editor-core/es/areaManager.js diff --git a/packages/editor-framework/es/context.d.ts b/packages/editor-core/es/context.d.ts similarity index 100% rename from packages/editor-framework/es/context.d.ts rename to packages/editor-core/es/context.d.ts diff --git a/packages/editor-framework/es/context.js b/packages/editor-core/es/context.js similarity index 100% rename from packages/editor-framework/es/context.js rename to packages/editor-core/es/context.js diff --git a/packages/editor-framework/es/definitions.d.ts b/packages/editor-core/es/definitions.d.ts similarity index 100% rename from packages/editor-framework/es/definitions.d.ts rename to packages/editor-core/es/definitions.d.ts diff --git a/packages/editor-framework/es/definitions.js b/packages/editor-core/es/definitions.js similarity index 100% rename from packages/editor-framework/es/definitions.js rename to packages/editor-core/es/definitions.js diff --git a/packages/editor-framework/es/editor.d.ts b/packages/editor-core/es/editor.d.ts similarity index 93% rename from packages/editor-framework/es/editor.d.ts rename to packages/editor-core/es/editor.d.ts index 3db69aa66..f0fdfb0c1 100644 --- a/packages/editor-framework/es/editor.d.ts +++ b/packages/editor-core/es/editor.d.ts @@ -8,7 +8,7 @@ declare global { } } export interface HooksFuncs { - [idx: number]: (msg: string, handler: (...args: any[]) => void) => void; + [idx: number]: (msg: string, handler: (...args: []) => void) => void; } export default class Editor extends EventEmitter { static getInstance: (config: EditorConfig, components: PluginClassSet, utils?: Utils) => Editor; diff --git a/packages/editor-framework/es/editor.js b/packages/editor-core/es/editor.js similarity index 99% rename from packages/editor-framework/es/editor.js rename to packages/editor-core/es/editor.js index 4ec0549bc..a70126473 100644 --- a/packages/editor-framework/es/editor.js +++ b/packages/editor-core/es/editor.js @@ -79,9 +79,6 @@ var Editor = /*#__PURE__*/function (_EventEmitter) { _this.components = components; _this.utils = _extends({}, editorUtils, {}, utils); instance = _assertThisInitialized(_this); - - _this.init(); - return _this; } diff --git a/packages/editor-framework/es/index.d.ts b/packages/editor-core/es/index.d.ts similarity index 100% rename from packages/editor-framework/es/index.d.ts rename to packages/editor-core/es/index.d.ts diff --git a/packages/editor-framework/es/index.js b/packages/editor-core/es/index.js similarity index 100% rename from packages/editor-framework/es/index.js rename to packages/editor-core/es/index.js diff --git a/packages/editor-framework/es/pluginFactory.d.ts b/packages/editor-core/es/pluginFactory.d.ts similarity index 100% rename from packages/editor-framework/es/pluginFactory.d.ts rename to packages/editor-core/es/pluginFactory.d.ts diff --git a/packages/editor-framework/es/pluginFactory.js b/packages/editor-core/es/pluginFactory.js similarity index 100% rename from packages/editor-framework/es/pluginFactory.js rename to packages/editor-core/es/pluginFactory.js diff --git a/packages/editor-core/es/request.d.ts b/packages/editor-core/es/request.d.ts new file mode 100644 index 000000000..05b447a25 --- /dev/null +++ b/packages/editor-core/es/request.d.ts @@ -0,0 +1,6 @@ +import 'whatwg-fetch'; +export declare function serialize(obj: object): string; +export declare function buildUrl(dataAPI: string, params: object): string; +export declare function get(dataAPI: string, params?: object, headers?: object, otherProps?: object): Promise; +export declare function post(dataAPI: string, params?: object, headers?: object, otherProps?: object): Promise; +export declare function request(dataAPI: string, method?: string, data?: object | string, headers?: object, otherProps?: object): Promise; diff --git a/packages/editor-core/es/request.js b/packages/editor-core/es/request.js new file mode 100644 index 000000000..6f1eb7bdf --- /dev/null +++ b/packages/editor-core/es/request.js @@ -0,0 +1,111 @@ +import _extends from "@babel/runtime/helpers/extends"; +import 'whatwg-fetch'; +import Debug from 'debug'; +var debug = Debug('request'); +export function serialize(obj) { + var rst = []; + Object.entries(obj || {}).forEach(function (_ref) { + var key = _ref[0], + val = _ref[1]; + if (val === null || val === undefined || val === '') return; + if (typeof val === 'object') rst.push(key + "=" + encodeURIComponent(JSON.stringify(val)));else rst.push(key + "=" + encodeURIComponent(val)); + }); + return rst.join('&'); +} +export function buildUrl(dataAPI, params) { + var paramStr = serialize(params); + + if (paramStr) { + return dataAPI.indexOf('?') > 0 ? dataAPI + "&" + paramStr : dataAPI + "?" + paramStr; + } + + return dataAPI; +} +export function get(dataAPI, params, headers, otherProps) { + var fetchHeaders = _extends({ + Accept: 'application/json' + }, headers); + + return request(buildUrl(dataAPI, params), 'GET', null, fetchHeaders, otherProps); +} +export function post(dataAPI, params, headers, otherProps) { + var fetchHeaders = _extends({ + Accept: 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded' + }, headers); + + return request(dataAPI, 'POST', fetchHeaders['Content-Type'].indexOf('application/json') > -1 || Array.isArray(params) ? JSON.stringify(params) : serialize(params), fetchHeaders, otherProps); +} +export function request(dataAPI, method, data, headers, otherProps) { + if (method === void 0) { + method = 'GET'; + } + + return new Promise(function (resolve, reject) { + if (otherProps && otherProps.timeout) { + setTimeout(function () { + reject(new Error('timeout')); + }, otherProps.timeout); + } + + fetch(dataAPI, _extends({ + method: method, + credentials: 'include', + headers: headers, + body: data + }, otherProps)).then(function (response) { + switch (response.status) { + case 200: + case 201: + case 202: + return response.json(); + + case 204: + if (method === 'DELETE') { + return { + success: true + }; + } else { + return { + __success: false, + code: response.status + }; + } + + case 400: + case 401: + case 403: + case 404: + case 406: + case 410: + case 422: + case 500: + return response.json().then(function (res) { + return { + __success: false, + code: response.status, + data: res + }; + })["catch"](function () { + return { + __success: false, + code: response.status + }; + }); + + default: + return null; + } + }).then(function (json) { + if (json && json.__success !== false) { + resolve(json); + } else { + delete json.__success; + reject(json); + } + })["catch"](function (err) { + debug(err); + reject(err); + }); + }); +} \ No newline at end of file diff --git a/packages/editor-framework/es/style.js b/packages/editor-core/es/style.js similarity index 100% rename from packages/editor-framework/es/style.js rename to packages/editor-core/es/style.js diff --git a/packages/editor-framework/es/utils.d.ts b/packages/editor-core/es/utils.d.ts similarity index 98% rename from packages/editor-framework/es/utils.d.ts rename to packages/editor-core/es/utils.d.ts index c1d4ff1e8..e6d909b4d 100644 --- a/packages/editor-framework/es/utils.d.ts +++ b/packages/editor-core/es/utils.d.ts @@ -1,4 +1,5 @@ /// +export { get, post, request } from './request'; import Editor from './editor'; import { EditorConfig, I18nFunction, I18nMessages, LocaleType, ShortCutsConfig } from './definitions'; export declare const pick: any; @@ -68,4 +69,3 @@ export declare function comboEditorConfig(defaultConfig: EditorConfig, customCon * @param {*} Comp 需要判断的组件 */ export declare function acceptsRef(Comp: React.ReactNode): boolean; -export {}; diff --git a/packages/editor-framework/es/utils.js b/packages/editor-core/es/utils.js similarity index 99% rename from packages/editor-framework/es/utils.js rename to packages/editor-core/es/utils.js index b2a677d4c..fa74c17bd 100644 --- a/packages/editor-framework/es/utils.js +++ b/packages/editor-core/es/utils.js @@ -8,6 +8,7 @@ import _deepEqual from 'lodash/isEqualWith'; import _pick from 'lodash/pick'; import _throttle from 'lodash/throttle'; import _serialize from 'serialize-javascript'; +export { get, post, request } from './request'; export var pick = _pick; export var deepEqual = _deepEqual; export var clone = _clone; diff --git a/packages/editor-framework/package-lock.json b/packages/editor-core/package-lock.json similarity index 100% rename from packages/editor-framework/package-lock.json rename to packages/editor-core/package-lock.json diff --git a/packages/editor-framework/package.json b/packages/editor-core/package.json similarity index 91% rename from packages/editor-framework/package.json rename to packages/editor-core/package.json index f7cecc059..1f50249c7 100644 --- a/packages/editor-framework/package.json +++ b/packages/editor-core/package.json @@ -1,5 +1,5 @@ { - "name": "@ali/lowcode-editor-framework", + "name": "@ali/lowcode-editor-core", "version": "0.0.1", "description": "alibaba lowcode editor core", "files": [ @@ -29,7 +29,8 @@ "intl-messageformat": "^7.8.4", "lodash": "^4.17.15", "prop-types": "^15.5.8", - "store": "^2.0.12" + "store": "^2.0.12", + "whatwg-fetch": "^3.0.0" }, "devDependencies": { "@alib/build-scripts": "^0.1.3", @@ -51,5 +52,5 @@ "@alifd/next": "1.x" }, "license": "MIT", - "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-editor-framework@0.0.1/build/index.html" + "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-editor-core@0.0.1/build/index.html" } diff --git a/packages/editor-framework/src/areaManager.ts b/packages/editor-core/src/areaManager.ts similarity index 100% rename from packages/editor-framework/src/areaManager.ts rename to packages/editor-core/src/areaManager.ts diff --git a/packages/editor-framework/src/context.ts b/packages/editor-core/src/context.ts similarity index 100% rename from packages/editor-framework/src/context.ts rename to packages/editor-core/src/context.ts diff --git a/packages/editor-framework/src/definitions.ts b/packages/editor-core/src/definitions.ts similarity index 100% rename from packages/editor-framework/src/definitions.ts rename to packages/editor-core/src/definitions.ts diff --git a/packages/editor-framework/src/editor.ts b/packages/editor-core/src/editor.ts similarity index 98% rename from packages/editor-framework/src/editor.ts rename to packages/editor-core/src/editor.ts index 8686fa34a..6a0b938a0 100644 --- a/packages/editor-framework/src/editor.ts +++ b/packages/editor-core/src/editor.ts @@ -64,7 +64,7 @@ const debug = Debug('editor'); EventEmitter.defaultMaxListeners = 100; export interface HooksFuncs { - [idx: number]: (msg: string, handler: (...args) => void) => void; + [idx: number]: (msg: string, handler: (...args: []) => void) => void; } export default class Editor extends EventEmitter { @@ -95,7 +95,6 @@ export default class Editor extends EventEmitter { this.components = components; this.utils = { ...editorUtils, ...utils }; instance = this; - this.init(); } public init(): Promise { diff --git a/packages/editor-framework/src/index.ts b/packages/editor-core/src/index.ts similarity index 100% rename from packages/editor-framework/src/index.ts rename to packages/editor-core/src/index.ts diff --git a/packages/editor-framework/src/pluginFactory.tsx b/packages/editor-core/src/pluginFactory.tsx similarity index 100% rename from packages/editor-framework/src/pluginFactory.tsx rename to packages/editor-core/src/pluginFactory.tsx diff --git a/packages/editor-core/src/request.ts b/packages/editor-core/src/request.ts new file mode 100644 index 000000000..85eafabcf --- /dev/null +++ b/packages/editor-core/src/request.ts @@ -0,0 +1,125 @@ +import 'whatwg-fetch'; +import Debug from 'debug'; +const debug = Debug('request'); + +export function serialize(obj: object): string { + const rst: string[] = []; + Object.entries(obj || {}).forEach(([key, val]): void => { + if (val === null || val === undefined || val === '') return; + if (typeof val === 'object') rst.push(`${key}=${encodeURIComponent(JSON.stringify(val))}`); + else rst.push(`${key}=${encodeURIComponent(val)}`); + }); + return rst.join('&'); +} + +export function buildUrl(dataAPI: string, params: object): string { + const paramStr = serialize(params); + if (paramStr) { + return dataAPI.indexOf('?') > 0 ? `${dataAPI}&${paramStr}` : `${dataAPI}?${paramStr}`; + } + return dataAPI; +} + +export function get(dataAPI: string, params?: object, headers?: object, otherProps?: object): Promise { + const fetchHeaders = { + Accept: 'application/json', + ...headers, + }; + return request(buildUrl(dataAPI, params), 'GET', null, fetchHeaders, otherProps); +} + +export function post(dataAPI: string, params?: object, headers?: object, otherProps?: object): Promise { + const fetchHeaders = { + Accept: 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded', + ...headers, + }; + return request( + dataAPI, + 'POST', + fetchHeaders['Content-Type'].indexOf('application/json') > -1 || Array.isArray(params) + ? JSON.stringify(params) + : serialize(params), + fetchHeaders, + otherProps, + ); +} + +export function request( + dataAPI: string, + method: string = 'GET', + data?: object | string, + headers?: object, + otherProps?: object, +): Promise { + return new Promise((resolve, reject): void => { + if (otherProps && otherProps.timeout) { + setTimeout((): void => { + reject(new Error('timeout')); + }, otherProps.timeout); + } + fetch(dataAPI, { + method, + credentials: 'include', + headers, + body: data, + ...otherProps, + }) + .then((response: Response): any => { + switch (response.status) { + case 200: + case 201: + case 202: + return response.json(); + case 204: + if (method === 'DELETE') { + return { + success: true, + }; + } else { + return { + __success: false, + code: response.status, + }; + } + case 400: + case 401: + case 403: + case 404: + case 406: + case 410: + case 422: + case 500: + return response + .json() + .then((res: object): any => { + return { + __success: false, + code: response.status, + data: res, + }; + }) + .catch((): object => { + return { + __success: false, + code: response.status, + }; + }); + default: + return null; + } + }) + .then((json: object): void => { + if (json && json.__success !== false) { + resolve(json); + } else { + delete json.__success; + reject(json); + } + }) + .catch((err: Error): void => { + debug(err); + reject(err); + }); + }); +} diff --git a/packages/editor-framework/src/utils.ts b/packages/editor-core/src/utils.ts similarity index 99% rename from packages/editor-framework/src/utils.ts rename to packages/editor-core/src/utils.ts index 4a672f020..dd6d6d251 100644 --- a/packages/editor-framework/src/utils.ts +++ b/packages/editor-core/src/utils.ts @@ -9,6 +9,7 @@ import _pick from 'lodash/pick'; import _throttle from 'lodash/throttle'; import _serialize from 'serialize-javascript'; +export { get, post, request } from './request'; import Editor from './editor'; import { EditorConfig, I18nFunction, I18nMessages, LocaleType, ShortCutsConfig } from './definitions'; diff --git a/packages/editor-framework/tsconfig.json b/packages/editor-core/tsconfig.json similarity index 100% rename from packages/editor-framework/tsconfig.json rename to packages/editor-core/tsconfig.json diff --git a/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts b/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts index b503d9bae..fb8f8e0e8 100644 --- a/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts +++ b/packages/editor-skeleton/es/components/LeftPlugin/index.d.ts @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { PluginConfig, PluginClass } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor from '@ali/lowcode-editor-core'; +import { PluginConfig, PluginClass } from '@ali/lowcode-editor-core/lib/definitions'; import './index.scss'; export interface LeftPluginProps { active?: boolean; diff --git a/packages/editor-skeleton/es/components/TopPlugin/index.d.ts b/packages/editor-skeleton/es/components/TopPlugin/index.d.ts index 2ef80c825..3bebaaa16 100644 --- a/packages/editor-skeleton/es/components/TopPlugin/index.d.ts +++ b/packages/editor-skeleton/es/components/TopPlugin/index.d.ts @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { PluginConfig, PluginClass } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor from '@ali/lowcode-editor-core'; +import { PluginConfig, PluginClass } from '@ali/lowcode-editor-core/lib/definitions'; import './index.scss'; export interface TopPluginProps { active?: boolean; diff --git a/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts b/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts index 17fc0df75..c53938fe1 100644 --- a/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts +++ b/packages/editor-skeleton/es/layouts/CenterArea/index.d.ts @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; +import Editor from '@ali/lowcode-editor-core'; import './index.scss'; export interface CenterAreaProps { editor: Editor; diff --git a/packages/editor-skeleton/es/layouts/CenterArea/index.js b/packages/editor-skeleton/es/layouts/CenterArea/index.js index bc7c3f2c1..a71ebf30b 100644 --- a/packages/editor-skeleton/es/layouts/CenterArea/index.js +++ b/packages/editor-skeleton/es/layouts/CenterArea/index.js @@ -1,7 +1,7 @@ import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; -import { AreaManager } from '@ali/lowcode-editor-framework'; +import { AreaManager } from '@ali/lowcode-editor-core'; import './index.scss'; var CenterArea = /*#__PURE__*/function (_PureComponent) { diff --git a/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts b/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts index e12b41c0e..ed4d30613 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts +++ b/packages/editor-skeleton/es/layouts/LeftArea/nav.d.ts @@ -1,6 +1,5 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor from '@ali/lowcode-editor-core'; import './index.scss'; export interface LeftAreaNavProps { editor: Editor; @@ -17,8 +16,8 @@ export default class LeftAreaNav extends PureComponent void; handlePluginChange: (key: string) => void; - handlePluginClick: (item: PluginConfig) => void; + handlePluginClick: (item: any) => void; updateActiveKey: (key: string) => void; - renderPluginList: (list?: PluginConfig[]) => any[]; + renderPluginList: (list?: any[]) => any[]; render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/LeftArea/nav.js b/packages/editor-skeleton/es/layouts/LeftArea/nav.js index 5401ced91..66fc08e54 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/nav.js +++ b/packages/editor-skeleton/es/layouts/LeftArea/nav.js @@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; import LeftPlugin from '../../components/LeftPlugin'; -import { utils, AreaManager } from '@ali/lowcode-editor-framework'; +import { utils, AreaManager } from '@ali/lowcode-editor-core'; import './index.scss'; var isEmpty = utils.isEmpty; diff --git a/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts b/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts index c9320350c..2d9e3e72d 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts +++ b/packages/editor-skeleton/es/layouts/LeftArea/panel.d.ts @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; +import Editor from '@ali/lowcode-editor-core'; import './index.scss'; export interface LeftAreaPanelProps { editor: Editor; diff --git a/packages/editor-skeleton/es/layouts/LeftArea/panel.js b/packages/editor-skeleton/es/layouts/LeftArea/panel.js index 2104ab096..1ab2bd462 100644 --- a/packages/editor-skeleton/es/layouts/LeftArea/panel.js +++ b/packages/editor-skeleton/es/layouts/LeftArea/panel.js @@ -1,7 +1,7 @@ import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent, Fragment } from 'react'; -import { AreaManager } from '@ali/lowcode-editor-framework'; +import { AreaManager } from '@ali/lowcode-editor-core'; import Panel from '../../components/Panel'; import './index.scss'; diff --git a/packages/editor-skeleton/es/layouts/RightArea/index.d.ts b/packages/editor-skeleton/es/layouts/RightArea/index.d.ts index 8ecf5b466..39edb210b 100644 --- a/packages/editor-skeleton/es/layouts/RightArea/index.d.ts +++ b/packages/editor-skeleton/es/layouts/RightArea/index.d.ts @@ -1,6 +1,5 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor from '@ali/lowcode-editor-core'; import './index.scss'; export interface RightAreaProps { editor: Editor; @@ -17,8 +16,8 @@ export default class RightArea extends PureComponent void; handlePluginChange: (key: string, isinit?: boolean) => void; - renderTabTitle: (config: PluginConfig) => any; - renderTabPanels: (list: PluginConfig[], height: string) => any; - renderPanels: (list: PluginConfig[], height: string) => any; + renderTabTitle: (config: any) => any; + renderTabPanels: (list: any[], height: string) => any; + renderPanels: (list: any[], height: string) => any; render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/RightArea/index.js b/packages/editor-skeleton/es/layouts/RightArea/index.js index f66672d48..2849ed19e 100644 --- a/packages/editor-skeleton/es/layouts/RightArea/index.js +++ b/packages/editor-skeleton/es/layouts/RightArea/index.js @@ -5,7 +5,7 @@ import _Icon from "@alifd/next/es/icon"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; import classNames from 'classnames'; -import { AreaManager, utils } from '@ali/lowcode-editor-framework'; +import { AreaManager, utils } from '@ali/lowcode-editor-core'; import './index.scss'; var isEmpty = utils.isEmpty; diff --git a/packages/editor-skeleton/es/layouts/TopArea/index.d.ts b/packages/editor-skeleton/es/layouts/TopArea/index.d.ts index 658aea93d..7084aea26 100644 --- a/packages/editor-skeleton/es/layouts/TopArea/index.d.ts +++ b/packages/editor-skeleton/es/layouts/TopArea/index.d.ts @@ -1,6 +1,5 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor from '@ali/lowcode-editor-core'; import './index.scss'; export interface TopAreaProps { editor: Editor; @@ -13,6 +12,6 @@ export default class TopArea extends PureComponent { componentDidMount(): void; componentWillUnmount(): void; handleSkeletonUpdate: () => void; - renderPluginList: (list?: PluginConfig[]) => any[]; + renderPluginList: (list?: any[]) => any[]; render(): React.ReactNode; } diff --git a/packages/editor-skeleton/es/layouts/TopArea/index.js b/packages/editor-skeleton/es/layouts/TopArea/index.js index edc1e793a..56309e5af 100644 --- a/packages/editor-skeleton/es/layouts/TopArea/index.js +++ b/packages/editor-skeleton/es/layouts/TopArea/index.js @@ -1,7 +1,7 @@ import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import _Grid from "@alifd/next/es/grid"; import React, { PureComponent } from 'react'; -import { AreaManager } from '@ali/lowcode-editor-framework'; +import { AreaManager } from '@ali/lowcode-editor-core'; import TopPlugin from '../../components/TopPlugin'; import './index.scss'; var Row = _Grid.Row, diff --git a/packages/editor-skeleton/es/skeleton.d.ts b/packages/editor-skeleton/es/skeleton.d.ts index 66a91524c..8ba4463d8 100644 --- a/packages/editor-skeleton/es/skeleton.d.ts +++ b/packages/editor-skeleton/es/skeleton.d.ts @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; -import Editor from '@ali/lowcode-editor-framework'; -import { EditorConfig, Utils, PluginClassSet } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor from '@ali/lowcode-editor-core'; +import { EditorConfig, Utils, PluginClassSet } from '@ali/lowcode-editor-core/lib/definitions'; import './global.scss'; declare global { interface Window { diff --git a/packages/editor-skeleton/es/skeleton.js b/packages/editor-skeleton/es/skeleton.js index 9d62bcc23..69ab79b6f 100644 --- a/packages/editor-skeleton/es/skeleton.js +++ b/packages/editor-skeleton/es/skeleton.js @@ -5,7 +5,7 @@ import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import React, { PureComponent } from 'react'; import { HashRouter as Router, Route } from 'react-router-dom'; -import Editor, { utils } from '@ali/lowcode-editor-framework'; +import Editor, { utils } from '@ali/lowcode-editor-core'; import defaultConfig from './config/skeleton'; import skeletonUtils from './config/utils'; import TopArea from './layouts/TopArea'; @@ -68,8 +68,7 @@ export var Skeleton = /*#__PURE__*/function (_PureComponent) { skeletonKey: isReset ? "skeleton" + ++renderIdx : _this.state.skeletonKey }, function () { editor.emit('editor.ready'); - editor.emit('ide.ready'); - isReset && editor.emit('ide.afterReset'); + isReset && editor.emit('editor.afterReset'); }); }); }; diff --git a/packages/editor-skeleton/es/style.js b/packages/editor-skeleton/es/style.js index 36f598306..5388cdbd8 100644 --- a/packages/editor-skeleton/es/style.js +++ b/packages/editor-skeleton/es/style.js @@ -1,6 +1,5 @@ import '@alifd/next/es/config-provider/style'; import '@alifd/next/es/loading/style'; -import '@ali/lowcode-editor-framework/es/style'; import '@alifd/next/es/grid/style'; import '@alifd/next/es/balloon/style'; import '@alifd/next/es/dialog/style'; diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json index 4fa9dfb69..d3b4976db 100644 --- a/packages/editor-skeleton/package.json +++ b/packages/editor-skeleton/package.json @@ -24,7 +24,7 @@ ], "author": "xiayang.xy", "dependencies": { - "@ali/lowcode-editor-framework": "0.0.1", + "@ali/lowcode-editor-core": "0.0.1", "@alifd/next": "^1.x", "prop-types": "^15.5.8", "react": "^16.8.1", diff --git a/packages/editor-skeleton/src/components/LeftPlugin/index.tsx b/packages/editor-skeleton/src/components/LeftPlugin/index.tsx index 66b718226..7770c942c 100644 --- a/packages/editor-skeleton/src/components/LeftPlugin/index.tsx +++ b/packages/editor-skeleton/src/components/LeftPlugin/index.tsx @@ -1,11 +1,11 @@ import React, { PureComponent, Fragment } from 'react'; import classNames from 'classnames'; import { Balloon, Dialog, Icon, Badge } from '@alifd/next'; -import Editor from '@ali/lowcode-editor-framework'; +import Editor from '@ali/lowcode-editor-core'; import { PluginConfig, PluginClass, -} from '@ali/lowcode-editor-framework/lib/definitions'; +} from '@ali/lowcode-editor-core/lib/definitions'; import './index.scss'; export interface LeftPluginProps { diff --git a/packages/editor-skeleton/src/components/TopPlugin/index.tsx b/packages/editor-skeleton/src/components/TopPlugin/index.tsx index 2f00402d5..71eccf28a 100644 --- a/packages/editor-skeleton/src/components/TopPlugin/index.tsx +++ b/packages/editor-skeleton/src/components/TopPlugin/index.tsx @@ -1,11 +1,11 @@ import React, { PureComponent, Fragment } from 'react'; import { Balloon, Badge, Dialog } from '@alifd/next'; -import Editor from '@ali/lowcode-editor-framework'; +import Editor from '@ali/lowcode-editor-core'; import { PluginConfig, PluginClass, -} from '@ali/lowcode-editor-framework/lib/definitions'; +} from '@ali/lowcode-editor-core/lib/definitions'; import TopIcon from '../TopIcon'; import './index.scss'; diff --git a/packages/editor-skeleton/src/index.ts b/packages/editor-skeleton/src/index.ts index 3c1996ea9..c519f0552 100644 --- a/packages/editor-skeleton/src/index.ts +++ b/packages/editor-skeleton/src/index.ts @@ -4,7 +4,4 @@ import TopIcon from './components/TopIcon'; export default Skeleton; -export { - Panel, - TopIcon -}; +export { Panel, TopIcon }; diff --git a/packages/editor-skeleton/src/layouts/CenterArea/index.tsx b/packages/editor-skeleton/src/layouts/CenterArea/index.tsx index 2736b9005..3261b4bbe 100644 --- a/packages/editor-skeleton/src/layouts/CenterArea/index.tsx +++ b/packages/editor-skeleton/src/layouts/CenterArea/index.tsx @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import Editor, { AreaManager } from '@ali/lowcode-editor-framework'; +import Editor, { AreaManager } from '@ali/lowcode-editor-core'; import './index.scss'; export interface CenterAreaProps { diff --git a/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx b/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx index 3777fc57a..735b77a27 100644 --- a/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx +++ b/packages/editor-skeleton/src/layouts/LeftArea/nav.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; import LeftPlugin from '../../components/LeftPlugin'; -import Editor, { utils, AreaManager } from '@ali/lowcode-editor-framework'; -import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor, { utils, AreaManager } from '@ali/lowcode-editor-core'; +import { PluginConfig } from '@ali/lowcode-editor-core/lib/definitions'; import './index.scss'; diff --git a/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx b/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx index 0c62f07b2..ccb81cfe0 100644 --- a/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx +++ b/packages/editor-skeleton/src/layouts/LeftArea/panel.tsx @@ -1,5 +1,5 @@ import React, { PureComponent, Fragment } from 'react'; -import Editor, { AreaManager } from '@ali/lowcode-editor-framework'; +import Editor, { AreaManager } from '@ali/lowcode-editor-core'; import Panel from '../../components/Panel'; import './index.scss'; diff --git a/packages/editor-skeleton/src/layouts/RightArea/index.tsx b/packages/editor-skeleton/src/layouts/RightArea/index.tsx index 40a6d9ad0..5925284da 100644 --- a/packages/editor-skeleton/src/layouts/RightArea/index.tsx +++ b/packages/editor-skeleton/src/layouts/RightArea/index.tsx @@ -1,8 +1,8 @@ import React, { PureComponent } from 'react'; import { Tab, Badge, Icon } from '@alifd/next'; import classNames from 'classnames'; -import Editor, { AreaManager, utils } from '@ali/lowcode-editor-framework'; -import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor, { AreaManager, utils } from '@ali/lowcode-editor-core'; +import { PluginConfig } from '@ali/lowcode-editor-core/lib/definitions'; import './index.scss'; const { isEmpty } = utils; diff --git a/packages/editor-skeleton/src/layouts/TopArea/index.tsx b/packages/editor-skeleton/src/layouts/TopArea/index.tsx index 434e12d60..68c73f202 100644 --- a/packages/editor-skeleton/src/layouts/TopArea/index.tsx +++ b/packages/editor-skeleton/src/layouts/TopArea/index.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; import { Grid } from '@alifd/next'; -import Editor, { AreaManager } from '@ali/lowcode-editor-framework'; -import { PluginConfig } from '@ali/lowcode-editor-framework/lib/definitions'; +import Editor, { AreaManager } from '@ali/lowcode-editor-core'; +import { PluginConfig } from '@ali/lowcode-editor-core/lib/definitions'; import TopPlugin from '../../components/TopPlugin'; import './index.scss'; diff --git a/packages/editor-skeleton/src/skeleton.tsx b/packages/editor-skeleton/src/skeleton.tsx index b4a32480e..cf04022ec 100644 --- a/packages/editor-skeleton/src/skeleton.tsx +++ b/packages/editor-skeleton/src/skeleton.tsx @@ -2,12 +2,12 @@ import React, { PureComponent } from 'react'; import { Loading, ConfigProvider } from '@alifd/next'; import { HashRouter as Router, Route } from 'react-router-dom'; -import Editor, { utils } from '@ali/lowcode-editor-framework'; +import Editor, { utils } from '@ali/lowcode-editor-core'; import { EditorConfig, Utils, PluginClassSet, -} from '@ali/lowcode-editor-framework/lib/definitions'; +} from '@ali/lowcode-editor-core/lib/definitions'; import defaultConfig from './config/skeleton'; import skeletonUtils from './config/utils'; @@ -113,8 +113,7 @@ export class Skeleton extends PureComponent { }, (): void => { editor.emit('editor.ready'); - editor.emit('ide.ready'); - isReset && editor.emit('ide.afterReset'); + isReset && editor.emit('editor.afterReset'); }, ); }); diff --git a/packages/editor/package.json b/packages/editor/package.json index b80f50a7f..6f0040a6e 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -3,16 +3,14 @@ "version": "0.0.1", "description": "低代码编辑器", "dependencies": { - "@ali/lowcode-editor-framework": "0.0.1", + "@ali/lowcode-editor-core": "0.0.1", "@ali/lowcode-editor-skeleton": "0.0.1", "@ali/lowcode-plugin-logo": "0.0.1", "@ali/lowcode-plugin-undo-redo": "0.0.1", "@ali/lowcode-plugin-save": "0.0.1", - "@ali/iceluna-addon-2": "^1.0.3", - "@ali/iceluna-addon-component-list": "^1.0.11", - "@ali/iceluna-sdk": "^1.0.5-beta.26", + "@ali/lowcode-plugin-designer": "0.0.1", + "@ali/lowcode-plugin-components-pane": "^1.0.11", "@alifd/next": "^1.x", - "@alife/dpl-iceluna": "^2.3.2", "@alife/theme-lowcode-dark": "^0.1.0", "@alife/theme-lowcode-light": "^0.1.0", "@icedesign/theme": "^1.x", diff --git a/packages/editor/public/assets.json b/packages/editor/public/assets.json new file mode 100644 index 000000000..7d86b9ed3 --- /dev/null +++ b/packages/editor/public/assets.json @@ -0,0 +1,1589 @@ +{ + "version": "1.0.0", + "packages": { + "@alifd/next": { + "title": "fusion组件库", + "package": "@alifd/next", + "version": "1.19.18", + "urls": ["https://unpkg.antfin-inc.com/@alife/next@1.19.18/dist/next.js", "https://unpkg.antfin-inc.com/@alife/next@1.19.18/dist/next.css"], + "library": "Next" + } + }, + "components": { + "Page": { + "componentName": "Page", + "title": "页面", + "configure": { + "events": { + "supportedLifecycles": [{ + "description": "初始化时", + "name": "constructor" + }, { + "description": "装载后", + "name": "componentDidMount" + }, { + "description": "更新时", + "name": "componentDidMount" + }, { + "description": "卸载时", + "name": "componentWillUnmount" + }] + }, + "component": { + "isContainer": true + } + } + }, + "Div": { + "componentName": "Div", + "title": "容器", + "configure": { + "component": { + "isContainer": true + } + } + }, + "Button": { + "componentName": "Button", + "title": "按钮", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Button" + }, + "props": [{ + "name": "prefix", + "propType": "string", + "defaultValue": "next-" + }, { + "name": "rtl", + "propType": "bool" + }, { + "name": "type", + "propType": { + "type": "oneOf", + "value": ["primary", "secondary", "normal"] + }, + "description": "按钮的类型", + "defaultValue": "normal" + }, { + "name": "size", + "propType": { + "type": "oneOf", + "value": ["small", "medium", "large"] + }, + "description": "按钮的尺寸", + "defaultValue": "medium" + }, { + "name": "iconSize", + "propType": { + "type": "oneOf", + "value": ["xxs", "xs", "small", "medium", "large", "xl", "xxl", "xxxl"] + }, + "description": "按钮中 Icon 的尺寸,用于替代 Icon 的默认大小" + }, { + "name": "htmlType", + "propType": { + "type": "oneOf", + "value": ["submit", "reset", "button"] + }, + "description": "当 component = 'button' 时,设置 button 标签的 type 值", + "defaultValue": "button" + }, { + "name": "component", + "propType": { + "type": "oneOf", + "value": ["button", "a", "div", "span"] + }, + "description": "设置标签类型", + "defaultValue": "button" + }, { + "name": "loading", + "propType": "bool", + "description": "设置按钮的载入状态", + "defaultValue": false + }, { + "name": "ghost", + "propType": { + "type": "oneOf", + "value": [true, false, "light", "dark"] + }, + "description": "是否为幽灵按钮", + "defaultValue": false + }, { + "name": "text", + "propType": "bool", + "description": "是否为文本按钮", + "defaultValue": false + }, { + "name": "warning", + "propType": "bool", + "description": "是否为警告按钮", + "defaultValue": false + }, { + "name": "disabled", + "propType": "bool", + "description": "是否禁用", + "defaultValue": false + }, { + "name": "onClick", + "propType": "func", + "description": "点击按钮的回调\n@param {Object} e Event Object" + }, { + "name": "className", + "propType": "string" + }, { + "name": "onMouseUp", + "propType": "func" + }, { + "name": "children", + "propType": "node" + }] + }, + "Button.Group": { + "componentName": "Button.Group", + "title": "按钮组", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Button", + "subName": "Group" + }, + "props": [{ + "name": "rtl", + "propType": "bool" + }, { + "name": "prefix", + "propType": "string", + "defaultValue": "next-" + }, { + "name": "size", + "propType": "string", + "description": "统一设置 Button 组件的按钮大小", + "defaultValue": "medium" + }, { + "name": "className", + "propType": "string" + }, { + "name": "children", + "propType": "node" + }], + "configure": { + "component": { + "isContainer": true, + "nestingRule": { + "childWhitelist": "Button" + } + } + } + }, + "Input": { + "componentName": "Input", + "title": "输入框", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Input" + }, + "props": [{ + "name": "label", + "propType": "node", + "description": "label" + }, { + "name": "hasClear", + "propType": "bool", + "description": "是否出现clear按钮" + }, { + "name": "hasBorder", + "propType": "bool", + "description": "是否有边框", + "defaultValue": "true" + }, { + "name": "state", + "propType": { + "type": "oneOf", + "value": ["error", "loading", "success", "warning"] + }, + "description": "状态\n@enumdesc 错误, 校验中, 成功, 警告" + }, { + "name": "size", + "propType": { + "type": "oneOf", + "value": ["small", "medium", "large"] + }, + "description": "尺寸\n@enumdesc 小, 中, 大", + "defaultValue": "medium" + }, { + "name": "onPressEnter", + "propType": "func", + "description": "按下回车的回调", + "defaultValue": "func.noop" + }, { + "name": "onClear", + "propType": "func" + }, { + "name": "htmlType", + "propType": "string", + "description": "原生type" + }, { + "name": "htmlSize", + "propType": "string" + }, { + "name": "hint", + "propType": "string", + "description": "水印 (Icon的type类型,和hasClear占用一个地方)" + }, { + "name": "innerBefore", + "propType": "node", + "description": "文字前附加内容" + }, { + "name": "innerAfter", + "propType": "node", + "description": "文字后附加内容" + }, { + "name": "addonBefore", + "propType": "node", + "description": "输入框前附加内容" + }, { + "name": "addonAfter", + "propType": "node", + "description": "输入框后附加内容" + }, { + "name": "addonTextBefore", + "propType": "node", + "description": "输入框前附加文字" + }, { + "name": "addonTextAfter", + "propType": "node", + "description": "输入框后附加文字" + }, { + "name": "autoComplete", + "propType": "string", + "description": "(原生input支持)", + "defaultValue": "off" + }, { + "name": "autoFocus", + "propType": "bool", + "description": "自动聚焦(原生input支持)" + }, { + "name": "inputRender", + "propType": "func", + "defaultValue": "el => el" + }, { + "name": "extra", + "propType": "node" + }, { + "name": "innerBeforeClassName", + "propType": "string" + }, { + "name": "innerAfterClassName", + "propType": "string" + }, { + "name": "isPreview", + "propType": "bool", + "description": "是否为预览态", + "defaultValue": "false" + }, { + "name": "renderPreview", + "propType": "func", + "description": "预览态模式下渲染的内容\n@param {number} value 评分值" + }] + }, + "Form": { + "componentName": "Form", + "title": "表单容器", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Form" + }, + "props": [{ + "name": "prefix", + "propType": "string", + "description": "样式前缀", + "defaultValue": "next-" + }, { + "name": "inline", + "propType": "bool", + "description": "内联表单" + }, { + "name": "size", + "propType": { + "type": "oneOf", + "value": ["large", "medium", "small"] + }, + "description": "单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。\n@enumdesc 大, 中, 小", + "defaultValue": "medium" + }, { + "name": "fullWidth", + "propType": "bool", + "description": "单个 Item 中表单类组件宽度是否是100%" + }, { + "name": "labelAlign", + "propType": { + "type": "oneOf", + "value": ["top", "left", "inset"] + }, + "description": "标签的位置\n@enumdesc 上, 左, 内", + "defaultValue": "left" + }, { + "name": "labelTextAlign", + "propType": { + "type": "oneOf", + "value": ["left", "right"] + }, + "description": "标签的左右对齐方式\n@enumdesc 左, 右" + }, { + "name": "field", + "propType": "any", + "description": "field 实例, 传 false 会禁用 field" + }, { + "name": "saveField", + "propType": "func", + "description": "保存 Form 自动生成的 field 对象" + }, { + "name": "labelCol", + "propType": "object", + "description": "控制第一级 Item 的 labelCol" + }, { + "name": "wrapperCol", + "propType": "object", + "description": "控制第一级 Item 的 wrapperCol" + }, { + "name": "onSubmit", + "propType": "func", + "description": "form内有 `htmlType=\"submit\"` 的元素的时候会触发" + }, { + "name": "children", + "propType": "any", + "description": "子元素" + }, { + "name": "className", + "propType": "string", + "description": "扩展class" + }, { + "name": "style", + "propType": "object", + "description": "自定义内联样式" + }, { + "name": "value", + "propType": "object", + "description": "表单数值" + }, { + "name": "onChange", + "propType": "func", + "description": "表单变化回调\n@param {Object} values 表单数据\n@param {Object} item 详细\n@param {String} item.name 变化的组件名\n@param {String} item.value 变化的数据\n@param {Object} item.field field 实例" + }, { + "name": "component", + "propType": { + "type": "oneOfType", + "value": ["string", "func"] + }, + "description": "设置标签类型", + "defaultValue": "form" + }, { + "name": "fieldOptions", + "propType": "object" + }, { + "name": "rtl", + "propType": "bool" + }, { + "name": "device", + "propType": { + "type": "oneOf", + "value": ["phone", "tablet", "desktop"] + }, + "description": "预设屏幕宽度", + "defaultValue": "desktop" + }, { + "name": "responsive", + "propType": "bool", + "description": "是否开启内置的响应式布局 (使用ResponsiveGrid)" + }, { + "name": "isPreview", + "propType": "bool", + "description": "是否开启预览态" + }], + "configure": { + "component": { + "isContainer": true + } + } + }, + "Form.Item": { + "componentName": "Form.Item", + "title": "表单项", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Form", + "subName": "Item" + }, + "props": [{ + "name": "prefix", + "propType": "string", + "description": "样式前缀", + "defaultValue": "next-" + }, { + "name": "rtl", + "propType": "bool" + }, { + "name": "label", + "propType": "node", + "description": "label 标签的文本" + }, { + "name": "labelCol", + "propType": "object", + "description": "label 标签布局,通 `` 组件,设置 span offset 值,如 {span: 8, offset: 16},该项仅在垂直表单有效" + }, { + "name": "wrapperCol", + "propType": "object", + "description": "需要为输入控件设置布局样式时,使用该属性,用法同 labelCol" + }, { + "name": "help", + "propType": "node", + "description": "自定义提示信息,如不设置,则会根据校验规则自动生成." + }, { + "name": "extra", + "propType": "node", + "description": "额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 位于错误信息后面" + }, { + "name": "validateState", + "propType": { + "type": "oneOf", + "value": ["error", "success", "loading", "warning"] + }, + "description": "校验状态,如不设置,则会根据校验规则自动生成\n@enumdesc 失败, 成功, 校验中, 警告" + }, { + "name": "hasFeedback", + "propType": "bool", + "description": "配合 validateState 属性使用,是否展示 success/loading 的校验状态图标, 目前只有Input支持", + "defaultValue": false + }, { + "name": "style", + "propType": "object", + "description": "自定义内联样式" + }, { + "name": "id", + "propType": "string" + }, { + "name": "children", + "propType": { + "type": "oneOfType", + "value": ["node", "func"] + }, + "description": "node 或者 function(values)" + }, { + "name": "size", + "propType": { + "type": "oneOf", + "value": ["large", "small", "medium"] + }, + "description": "单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。" + }, { + "name": "fullWidth", + "propType": "bool", + "description": "单个 Item 中表单类组件宽度是否是100%" + }, { + "name": "labelAlign", + "propType": { + "type": "oneOf", + "value": ["top", "left", "inset"] + }, + "description": "标签的位置\n@enumdesc 上, 左, 内" + }, { + "name": "labelTextAlign", + "propType": { + "type": "oneOf", + "value": ["left", "right"] + }, + "description": "标签的左右对齐方式\n@enumdesc 左, 右" + }, { + "name": "className", + "propType": "string", + "description": "扩展class" + }, { + "name": "required", + "propType": "bool", + "description": "[表单校验] 不能为空" + }, { + "name": "asterisk", + "propType": "bool", + "description": "required 的星号是否显示" + }, { + "name": "requiredMessage", + "propType": "string", + "description": "required 自定义错误信息" + }, { + "name": "requiredTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "required 自定义触发方式" + }, { + "name": "min", + "propType": "number", + "description": "[表单校验] 最小值" + }, { + "name": "max", + "propType": "number", + "description": "[表单校验] 最大值" + }, { + "name": "minmaxMessage", + "propType": "string", + "description": "min/max 自定义错误信息" + }, { + "name": "minmaxTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "min/max 自定义触发方式" + }, { + "name": "minLength", + "propType": "number", + "description": "[表单校验] 字符串最小长度 / 数组最小个数" + }, { + "name": "maxLength", + "propType": "number", + "description": "[表单校验] 字符串最大长度 / 数组最大个数" + }, { + "name": "minmaxLengthMessage", + "propType": "string", + "description": "minLength/maxLength 自定义错误信息" + }, { + "name": "minmaxLengthTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "minLength/maxLength 自定义触发方式" + }, { + "name": "length", + "propType": "number", + "description": "[表单校验] 字符串精确长度 / 数组精确个数" + }, { + "name": "lengthMessage", + "propType": "string", + "description": "length 自定义错误信息" + }, { + "name": "lengthTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "length 自定义触发方式" + }, { + "name": "pattern", + "propType": "any", + "description": "正则校验" + }, { + "name": "patternMessage", + "propType": "string", + "description": "pattern 自定义错误信息" + }, { + "name": "patternTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "pattern 自定义触发方式" + }, { + "name": "format", + "propType": { + "type": "oneOf", + "value": ["number", "email", "url", "tel"] + }, + "description": "[表单校验] 四种常用的 pattern" + }, { + "name": "formatMessage", + "propType": "string", + "description": "format 自定义错误信息" + }, { + "name": "formatTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "format 自定义触发方式" + }, { + "name": "validator", + "propType": "func", + "description": "[表单校验] 自定义校验函数" + }, { + "name": "validatorTrigger", + "propType": { + "type": "oneOfType", + "value": ["string", "array"] + }, + "description": "validator 自定义触发方式" + }, { + "name": "autoValidate", + "propType": "bool", + "description": "是否修改数据时自动触发校验" + }, { + "name": "device", + "propType": { + "type": "oneOf", + "value": ["phone", "tablet", "desktop"] + }, + "description": "预设屏幕宽度" + }, { + "name": "responsive", + "propType": "bool" + }, { + "name": "colSpan", + "propType": "number", + "description": "在响应式布局模式下,表单项占多少列" + }, { + "name": "labelWidth", + "propType": { + "type": "oneOfType", + "value": ["string", "number"] + }, + "description": "在响应式布局下,且label在左边时,label的宽度是多少", + "defaultValue": 100 + }, { + "name": "isPreview", + "propType": "bool", + "description": "是否开启预览态" + }, { + "name": "renderPreview", + "propType": "func", + "description": "预览态模式下渲染的内容\n@param {any} value 根据包裹的组件的 value 类型而决定" + }], + "configure": { + "component": { + "isContainer": true, + "nestingRule": { + "parentWhitelist": "Form" + } + } + } + }, + "NumberPicker": { + "componentName": "NumberPicker", + "title": "数字输入", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "NumberPicker" + }, + "props": [{ + "name": "prefix", + "propType": "string", + "description": "样式前缀", + "defaultValue": "next-" + }, { + "name": "type", + "propType": { + "type": "oneOf", + "value": ["normal", "inline"] + }, + "description": "设置类型\n@enumdesc 普通, 内联", + "defaultValue": "normal" + }, { + "name": "size", + "propType": { + "type": "oneOf", + "value": ["large", "medium"] + }, + "description": "大小", + "defaultValue": "medium" + }, { + "name": "value", + "propType": "number", + "description": "当前值" + }, { + "name": "defaultValue", + "propType": "number", + "description": "默认值" + }, { + "name": "disabled", + "propType": "bool", + "description": "是否禁用" + }, { + "name": "step", + "propType": { + "type": "oneOfType", + "value": ["number", "string"] + }, + "description": "步长", + "defaultValue": 1 + }, { + "name": "precision", + "propType": "number", + "description": "保留小数点后位数", + "defaultValue": 0 + }, { + "name": "editable", + "propType": "bool", + "description": "用户是否可以输入", + "defaultValue": true + }, { + "name": "autoFocus", + "propType": "bool", + "description": "自动焦点" + }, { + "name": "onChange", + "propType": "func", + "description": "数值被改变的事件\n@param {Number} value 数据\n@param {Event} e DOM事件对象" + }, { + "name": "onKeyDown", + "propType": "func", + "description": "键盘按下" + }, { + "name": "onFocus", + "propType": "func", + "description": "焦点获得" + }, { + "name": "onBlur", + "propType": "func", + "description": "焦点失去" + }, { + "name": "onCorrect", + "propType": "func", + "description": "数值订正后的回调\n@param {Object} obj {currentValue,oldValue:String}" + }, { + "name": "onDisabled", + "propType": "func" + }, { + "name": "max", + "propType": "number", + "description": "最大值", + "defaultValue": null + }, { + "name": "min", + "propType": "number", + "description": "最小值", + "defaultValue": null + }, { + "name": "className", + "propType": "string", + "description": "自定义class" + }, { + "name": "style", + "propType": "object", + "description": "自定义内联样式" + }, { + "name": "state", + "propType": { + "type": "oneOf", + "value": ["error"] + } + }, { + "name": "format", + "propType": "func", + "description": "格式化当前值\n@param {Number} value\n@return {String|Number}" + }, { + "name": "upBtnProps", + "propType": "object", + "description": "增加按钮的props" + }, { + "name": "downBtnProps", + "propType": "object", + "description": "减少按钮的props" + }, { + "name": "label", + "propType": "node", + "description": "内联 label" + }, { + "name": "innerAfter", + "propType": "node", + "description": "inner after" + }, { + "name": "rtl", + "propType": "bool" + }, { + "name": "isPreview", + "propType": "bool", + "description": "是否为预览态" + }, { + "name": "renderPreview", + "propType": "func", + "description": "预览态模式下渲染的内容\n@param {number} value 评分值" + }, { + "name": "device", + "propType": { + "type": "oneOf", + "value": ["phone", "tablet", "desktop"] + }, + "description": "预设屏幕宽度" + }] + }, + "Select": { + "componentName": "Select", + "title": "下拉", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Select" + }, + "props": [{ + "name": "mode", + "propType": { + "type": "oneOf", + "value": ["single", "multiple", "tag"] + }, + "description": "选择器模式", + "defaultValue": "single" + }, { + "name": "value", + "propType": "any", + "description": "当前值,用于受控模式" + }, { + "name": "defaultValue", + "propType": "any", + "description": "初始的默认值" + }, { + "name": "onChange", + "propType": "func", + "description": "Select发生改变时触发的回调\n@param {*} value 选中的值\n@param {String} actionType 触发的方式, 'itemClick', 'enter', 'tag'\n@param {*} item 选中的值的对象数据 (useDetailValue=false有效)" + }, { + "name": "dataSource", + "propType": { + "type": "arrayOf", + "value": { + "type": "oneOfType", + "value": [{ + "type": "shape", + "value": [{ + "name": "value", + "propType": "any" + }, { + "name": "label", + "propType": "any" + }, { + "name": "disabled", + "propType": "bool" + }, { + "name": "children", + "propType": "array" + }] + }, "bool", "number", "string"] + } + }, + "description": "传入的数据源,可以动态渲染子项,详见 [dataSource的使用](#dataSource的使用)" + }, { + "name": "hasBorder", + "propType": "bool", + "description": "是否有边框" + }, { + "name": "hasArrow", + "propType": "bool", + "description": "是否有下拉箭头", + "defaultValue": true + }, { + "name": "showSearch", + "propType": "bool", + "description": "展开后是否能搜索(tag 模式下固定为true)", + "defaultValue": false + }, { + "name": "onSearch", + "propType": "func", + "description": "当搜索框值变化时回调\n@param {String} value 数据" + }, { + "name": "onSearchClear", + "propType": "func", + "description": "当搜索框值被清空时候的回调\n@param {String} actionType 触发的方式, 'select'(选择清空), 'popupClose'(弹窗关闭清空)" + }, { + "name": "hasSelectAll", + "propType": { + "type": "oneOfType", + "value": ["bool", "string"] + }, + "description": "多选模式下是否有全选功能" + }, { + "name": "fillProps", + "propType": "string", + "description": "填充到选择框里的值的 key\b\b" + }, { + "name": "useDetailValue", + "propType": "bool", + "description": "onChange 返回的 value 使用 dataSource 的对象" + }, { + "name": "cacheValue", + "propType": "bool", + "description": "dataSource 变化的时是否保留已选的内容", + "defaultValue": true + }, { + "name": "valueRender", + "propType": "func", + "description": "渲染 Select 展现内容的方法\n@param {Object} item 渲染节点的item\n@return {ReactNode} 展现内容\n@default item => item.label \\|\\| item.value" + }, { + "name": "itemRender", + "propType": "func", + "description": "渲染 MenuItem 内容的方法\n@param {Object} item 渲染节点的item\n@param {String} searchValue 搜索关键字(如果开启搜索)\n@return {ReactNode} item node" + }, { + "name": "notFoundContent", + "propType": "node", + "description": "弹层内容为空的文案" + }, { + "name": "style", + "propType": "object" + }, { + "name": "searchValue", + "propType": "string", + "description": "受控搜索值,一般不需要设置\n@type {[type]}" + }, { + "name": "tagInline", + "propType": "bool", + "description": "是否一行显示,仅在 mode 为 multiple 的时候生效", + "defaultValue": false + }, { + "name": "maxTagCount", + "propType": "number", + "description": "最多显示多少个 tag" + }, { + "name": "maxTagPlaceholder", + "propType": "func", + "description": "隐藏多余 tag 时显示的内容,在 maxTagCount 生效时起作用\n@param {number} selectedValues 当前已选中的元素\n@param {number} totalValues 总待选元素" + }, { + "name": "hiddenSelected", + "propType": "bool", + "description": "选择后是否立即隐藏菜单 (mode=multiple/tag 模式生效)" + }, { + "name": "onRemove", + "propType": "func", + "description": "tag 删除回调\n@param {object} item 渲染节点的item" + }, { + "name": "onFocus", + "propType": "func", + "description": "焦点事件" + }, { + "name": "onBlur", + "propType": "func", + "description": "失去焦点事件" + }, { + "name": "onMouseEnter", + "propType": "func" + }, { + "name": "onMouseLeave", + "propType": "func" + }, { + "name": "onKeyDown", + "propType": "func" + }, { + "name": "locale", + "propType": "object" + }], + "configure": { + "component": { + "isContainer": true, + "nestingRule": { + "childWhitelist": "Select.Option" + } + }, + "props": [{ + "name": "mode", + "title": "选择器模式", + "setter": { + "componentName": "RadioGroupSetter", + "props": { + "defaultValue": "single", + "dataSource": [{ + "value": "single", + "label": "single" + }, { + "value": "multiple", + "label": "multiple" + }, { + "value": "tag", + "label": "tag" + }] + } + } + }, { + "name": "mode", + "title": "选择器模式", + "setter": { + "componentName": "SelectSetter", + "props": { + "defaultValue": "single", + "dataSource": [{ + "value": "single", + "label": "single" + }, { + "value": "multiple", + "label": "multiple" + }, { + "value": "tag", + "label": "tag" + }] + } + } + }, { + "name": "value", + "title": "受控值", + "setter": "StringSetter" + }, { + "name": "hasBorder", + "title": "是否有边框", + "setter": { + "componentName": "BoolSetter", + "props": { + "defaultValue": true + } + } + }, { + "name": "maxTagCount", + "title": "最多显示多少个 tag", + "setter": "NumberSetter" + }, { + "name": "maxTagCount", + "title": "最多显示多少个 tag", + "setter": "ExpressionSetter" + }, { + "name": "MixinSetter", + "placeholder": "混合", + "setter": { + "componentName": "MixinSetter", + "props": { + "types": [{ + "name": "StringSetter", + "props": {} + }, { + "name": "TextAreaSetter", + "props": {} + }, { + "name": "SelectSetter", + "props": { + "hasClear": true, + "dataSource": [{ + "label": "上", + "value": "t" + }, { + "label": "右", + "value": "r" + }, { + "label": "下", + "value": "b" + }, { + "label": "左", + "value": "l" + }] + } + }, { + "name": "NumberSetter", + "props": {} + }, { + "name": "BoolSetter", + "props": {} + }], + "defaultType": "SelectSetter" + } + } + }, { + "type": "group", + "name": "扩展 Setter", + "items": [{ + "name": "TextAreaSetter", + "setter": "TextAreaSetter" + }, { + "name": "date", + "title": "测试日期", + "setter": "DateSetter" + }, { + "name": "date", + "title": "测试日期-年", + "setter": "DateYearSetter" + }, { + "name": "date", + "title": "测试日期-月", + "setter": "DateMonthSetter" + }, { + "name": "date", + "title": "测试日期-区间", + "setter": "DateRangeSetter" + }] + }, { + "type": "group", + "name": "ArraySetter", + "items": [{ + "name": "arrayValue1", + "title": "字符数组", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": { + "componentName": "StringSetter", + "initialValue": "" + } + } + } + }, { + "name": "arrayValue2", + "title": "数字数组", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": { + "componentName": "NumberSetter", + "initialValue": 0 + } + } + } + }, { + "name": "arrayValue3", + "title": "混合数组", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": { + "componentName": "MixinSetter", + "props": { + "types": [{ + "name": "StringSetter", + "props": {} + }, { + "name": "ExpressionSetter", + "props": {} + }, { + "name": "RadioGroupSetter", + "props": { + "hasClear": true, + "dataSource": [{ + "label": "上", + "value": "t" + }, { + "label": "右", + "value": "r" + }, { + "label": "下", + "value": "b" + }, { + "label": "左", + "value": "l" + }] + } + }], + "defaultType": "SelectSetter" + } + } + } + } + }, { + "name": "arrayValue4", + "title": "对象数组", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": { + "componentName": "ObjectSetter", + "props": { + "config": { + "items": [{ + "name": "username", + "title": "姓名", + "setter": "StringSetter", + "important": true + }, { + "name": "phone", + "title": "电话", + "setter": "StringSetter", + "important": true + }, { + "name": "age", + "title": "年龄", + "setter": "NumberSetter" + }, { + "name": "married", + "title": "婚否", + "setter": "BoolSetter" + }, { + "type": "group", + "title": "work", + "items": [{ + "name": "job", + "title": "工作岗位", + "setter": { + "componentName": "SelectSetter", + "props": { + "dataSource": [{ + "label": "工程师", + "value": 1 + }, { + "label": "高级工程师", + "value": 2 + }, { + "label": "资深工程师", + "value": 3 + }] + } + } + }, { + "name": "address", + "title": "工作地点", + "setter": "TextAreaSetter" + }] + }] + } + }, + "initialValue": {} + } + } + } + }, { + "name": "arrayValue5", + "title": "对象数组", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": { + "componentName": "ObjectSetter", + "props": { + "config": { + "items": [{ + "name": "username", + "title": "姓名", + "setter": "StringSetter", + "important": true + }, { + "name": "age", + "title": "年龄", + "setter": "NumberSetter", + "important": true + }, { + "name": "married", + "title": "婚否", + "setter": "BoolSetter", + "important": true + }, { + "name": "log", + "title": "到访记录", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": "StringSetter" + } + }, + "important": true + }, { + "type": "group", + "title": "work", + "items": [{ + "name": "job", + "title": "工作岗位", + "setter": { + "componentName": "SelectSetter", + "props": { + "dataSource": [{ + "label": "工程师", + "value": 1 + }, { + "label": "高级工程师", + "value": 2 + }, { + "label": "资深工程师", + "value": 3 + }] + } + } + }, { + "name": "address", + "title": "工作地点", + "setter": "TextAreaSetter" + }] + }] + } + }, + "initialValue": {} + }, + "mode": "popup" + } + } + }], + "extraProps": { + "defaultCollapsed": false + } + }, { + "type": "group", + "name": "ObjectSetter", + "items": [{ + "name": "objectValue1", + "title": "对象数据1", + "setter": { + "componentName": "ObjectSetter", + "props": { + "config": { + "items": [{ + "name": "username", + "title": "姓名", + "setter": "StringSetter", + "important": true + }, { + "name": "age", + "title": "年龄", + "setter": "NumberSetter", + "important": true + }, { + "name": "married", + "title": "婚否", + "setter": "BoolSetter", + "important": true + }, { + "name": "log", + "title": "到访记录", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": "StringSetter" + } + }, + "important": true + }, { + "type": "group", + "title": "work", + "items": [{ + "name": "job", + "title": "工作岗位", + "setter": { + "componentName": "SelectSetter", + "props": { + "dataSource": [{ + "label": "工程师", + "value": 1 + }, { + "label": "高级工程师", + "value": 2 + }, { + "label": "资深工程师", + "value": 3 + }] + } + } + }, { + "name": "address", + "title": "工作地点", + "setter": "TextAreaSetter" + }] + }] + } + }, + "initialValue": {} + } + }, { + "name": "objectValue2", + "title": "对象数据2", + "setter": { + "componentName": "ObjectSetter", + "props": { + "mode": "popup", + "config": { + "items": [{ + "name": "username", + "title": "姓名", + "setter": "StringSetter", + "important": true + }, { + "name": "age", + "title": "年龄", + "setter": "NumberSetter", + "important": true + }, { + "name": "married", + "title": "婚否", + "setter": "BoolSetter", + "important": true + }, { + "name": "log", + "title": "到访记录", + "setter": { + "componentName": "ArraySetter", + "props": { + "itemSetter": "StringSetter" + } + }, + "important": true + }, { + "type": "group", + "title": "work", + "items": [{ + "name": "job", + "title": "工作岗位", + "setter": { + "componentName": "SelectSetter", + "props": { + "dataSource": [{ + "label": "工程师", + "value": 1 + }, { + "label": "高级工程师", + "value": 2 + }, { + "label": "资深工程师", + "value": 3 + }] + } + } + }, { + "name": "address", + "title": "工作地点", + "setter": "TextAreaSetter" + }] + }] + } + }, + "initialValue": {} + } + }] + }] + } + }, + "Select.Option": { + "componentName": "Select.Option", + "title": "选择项", + "devMode": "proCode", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "destructuring": true, + "exportName": "Select", + "subName": "Option" + }, + "props": [{ + "name": "value", + "propType": { + "type": "any", + "isRequired": true + }, + "description": "选项值" + }, { + "name": "disabled", + "propType": "bool", + "description": "是否禁用" + }, { + "name": "children", + "propType": "any" + }], + "configure": { + "component": { + "isContainer": true, + "nestingRule": { + "parentWhitelist": "Select" + } + } + } + } + }, + "componentList": [{ + "title": "基础", + "icon": "", + "children": [{ + "componentName": "Button", + "title": "按钮", + "icon": "", + "package": "@alife/next", + "library": "Next", + "snippets": [{ + "title": "private", + "screenshot": "https://img.alicdn.com/tfs/TB16gZhi.H1gK0jSZSyXXXtlpXa-192-144.png", + "schema": { + "componentName": "Button", + "props": { + "type": "primary" + }, + "children": "Primary" + } + }, { + "title": "secondary", + "screenshot": "https://img.alicdn.com/tfs/TB11Hkji1H2gK0jSZFEXXcqMpXa-192-144.png", + "schema": { + "componentName": "Button", + "props": { + "type": "secondary" + }, + "children": "secondary" + } + }, { + "title": "normal", + "screenshot": "", + "schema": { + "componentName": "Button", + "props": { + "type": "normal" + }, + "children": "normal" + } + }] + }] + }, { + "title": "表单", + "icon": "", + "children": [{ + "componentName": "Input", + "library": "Next", + "title": "输入框", + "icon": "", + "package": "@alife/next", + "snippets": [{ + "title": "普通", + "screenshot": "", + "schema": { + "componentName": "Input", + "props": {} + } + }] + }, { + "componentName": "Select", + "library": "Next", + "title": "选择框", + "icon": "", + "package": "@alife/next", + "snippets": [{ + "title": "默认", + "screenshot": "", + "schema": { + "componentName": "Select", + "props": {} + } + }] + }, { + "componentName": "NumberPicker", + "library": "Next", + "title": "数字", + "icon": "", + "package": "@alife/next", + "snippets": [{ + "title": "默认", + "screenshot": "", + "schema": { + "componentName": "NumberPicker", + "props": {} + } + }] + }] + }, { + "title": "其他", + "icon": "", + "children": [{ + "componentName": "Div", + "library": "Next", + "title": "容器", + "icon": "", + "snippets": [{ + "title": "默认", + "screenshot": "", + "schema": { + "componentName": "Div", + "props": {} + } + }] + }] + }] +} diff --git a/packages/editor/public/schema.json b/packages/editor/public/schema.json new file mode 100644 index 000000000..424628106 --- /dev/null +++ b/packages/editor/public/schema.json @@ -0,0 +1,110 @@ +{ + "componentName": "Page", + "fileName": "test", + "dataSource": { + "list": [] + }, + "state": { + "text": "outter" + }, + "props": { + "ref": "outterView", + "autoLoading": true, + "style": { + "padding": 20 + } + }, + "children": [{ + "componentName": "Form", + "props": { + "labelCol": 3, + "style": {}, + "ref": "testForm" + }, + "children": [{ + "componentName": "Form.Item", + "props": { + "label": "姓名:", + "name": "name", + "initValue": "李雷" + }, + "children": [{ + "componentName": "Input", + "props": { + "placeholder": "请输入", + "size": "medium", + "style": { + "width": 320 + } + } + }] + }, { + "componentName": "Form.Item", + "props": { + "label": "年龄:", + "name": "age", + "initValue": "22" + }, + "children": [{ + "componentName": "NumberPicker", + "props": { + "size": "medium", + "type": "normal" + } + }] + }, { + "componentName": "Form.Item", + "props": { + "label": "职业:", + "name": "profession" + }, + "children": [{ + "componentName": "Select", + "props": { + "dataSource": [{ + "label": "教师", + "value": "t" + }, { + "label": "医生", + "value": "d" + }, { + "label": "歌手", + "value": "s" + }] + } + }] + }, { + "componentName": "Div", + "props": { + "style": { + "textAlign": "center" + } + }, + "children": [{ + "componentName": "Button.Group", + "props": {}, + "children": [{ + "componentName": "Button", + "props": { + "type": "primary", + "style": { + "margin": "0 5px 0 5px" + }, + "htmlType": "submit" + }, + "children": "提交" + }, { + "componentName": "Button", + "props": { + "type": "normal", + "style": { + "margin": "0 5px 0 5px" + }, + "htmlType": "reset" + }, + "children": "重置" + }] + }] + }] + }] +} \ No newline at end of file diff --git a/packages/editor/src/config/assets.js b/packages/editor/src/config/assets.js index ce83e3438..19c509860 100644 --- a/packages/editor/src/config/assets.js +++ b/packages/editor/src/config/assets.js @@ -1250,7 +1250,7 @@ export default { { name: 'value', title: '受控值', - setter: 'StringSetter', + setter: 'StringSetter' }, { name: 'hasBorder', @@ -1447,57 +1447,67 @@ export default { componentName: 'ObjectSetter', props: { config: { - items: [{ - name: 'username', - title: '姓名', - setter: 'StringSetter', - important: true, - }, { - name: 'phone', - title: '电话', - setter: 'StringSetter', - important: true, - }, { - name: 'age', - title: '年龄', - setter: 'NumberSetter' - }, { - name: 'married', - title: '婚否', - setter: 'BoolSetter' - }, { - type: 'group', - title: 'work', - items: [ - { - name: 'job', - title: '工作岗位', - setter: { - componentName: 'SelectSetter', - props: { - dataSource: [{ - label: '工程师', - value: 1 - }, { - label: '高级工程师', - value: 2 - }, { - label: '资深工程师', - value: 3 - }] + items: [ + { + name: 'username', + title: '姓名', + setter: 'StringSetter', + important: true + }, + { + name: 'phone', + title: '电话', + setter: 'StringSetter', + important: true + }, + { + name: 'age', + title: '年龄', + setter: 'NumberSetter' + }, + { + name: 'married', + title: '婚否', + setter: 'BoolSetter' + }, + { + type: 'group', + title: 'work', + items: [ + { + name: 'job', + title: '工作岗位', + setter: { + componentName: 'SelectSetter', + props: { + dataSource: [ + { + label: '工程师', + value: 1 + }, + { + label: '高级工程师', + value: 2 + }, + { + label: '资深工程师', + value: 3 + } + ] + } } + }, + { + name: 'address', + title: '工作地点', + setter: 'TextAreaSetter' } - }, - { - name: 'address', - title: '工作地点', - setter: 'TextAreaSetter' - } - ] - }], + ] + } + ] } }, - initialValue: {}, + initialValue: {} } } } @@ -1512,72 +1522,82 @@ export default { componentName: 'ObjectSetter', props: { config: { - items: [{ - name: 'username', - title: '姓名', - setter: 'StringSetter', - important: true, - }, { - name: 'age', - title: '年龄', - setter: 'NumberSetter', - important: true, - }, { - name: 'married', - title: '婚否', - setter: 'BoolSetter', - important: true, - }, { - name: 'log', - title: '到访记录', - setter: { - componentName: 'ArraySetter', - props: { - itemSetter: 'StringSetter' - } + items: [ + { + name: 'username', + title: '姓名', + setter: 'StringSetter', + important: true }, - important: true, - }, { - type: 'group', - title: 'work', - items: [ - { - name: 'job', - title: '工作岗位', - setter: { - componentName: 'SelectSetter', - props: { - dataSource: [{ - label: '工程师', - value: 1 - }, { - label: '高级工程师', - value: 2 - }, { - label: '资深工程师', - value: 3 - }] - } + { + name: 'age', + title: '年龄', + setter: 'NumberSetter', + important: true + }, + { + name: 'married', + title: '婚否', + setter: 'BoolSetter', + important: true + }, + { + name: 'log', + title: '到访记录', + setter: { + componentName: 'ArraySetter', + props: { + itemSetter: 'StringSetter' } }, - { - name: 'address', - title: '工作地点', - setter: 'TextAreaSetter' - } - ] - }], + important: true + }, + { + type: 'group', + title: 'work', + items: [ + { + name: 'job', + title: '工作岗位', + setter: { + componentName: 'SelectSetter', + props: { + dataSource: [ + { + label: '工程师', + value: 1 + }, + { + label: '高级工程师', + value: 2 + }, + { + label: '资深工程师', + value: 3 + } + ] + } + } + }, + { + name: 'address', + title: '工作地点', + setter: 'TextAreaSetter' + } + ] + } + ] } }, - initialValue: {}, + initialValue: {} }, mode: 'popup' } } - }, + } ], extraProps: { - defaultCollapsed: false, + defaultCollapsed: false } }, { @@ -1591,64 +1611,74 @@ export default { componentName: 'ObjectSetter', props: { config: { - items: [{ - name: 'username', - title: '姓名', - setter: 'StringSetter', - important: true, - }, { - name: 'age', - title: '年龄', - setter: 'NumberSetter', - important: true, - }, { - name: 'married', - title: '婚否', - setter: 'BoolSetter', - important: true, - }, { - name: 'log', - title: '到访记录', - setter: { - componentName: 'ArraySetter', - props: { - itemSetter: 'StringSetter' - } + items: [ + { + name: 'username', + title: '姓名', + setter: 'StringSetter', + important: true }, - important: true, - }, { - type: 'group', - title: 'work', - items: [ - { - name: 'job', - title: '工作岗位', - setter: { - componentName: 'SelectSetter', - props: { - dataSource: [{ - label: '工程师', - value: 1 - }, { - label: '高级工程师', - value: 2 - }, { - label: '资深工程师', - value: 3 - }] - } + { + name: 'age', + title: '年龄', + setter: 'NumberSetter', + important: true + }, + { + name: 'married', + title: '婚否', + setter: 'BoolSetter', + important: true + }, + { + name: 'log', + title: '到访记录', + setter: { + componentName: 'ArraySetter', + props: { + itemSetter: 'StringSetter' } }, - { - name: 'address', - title: '工作地点', - setter: 'TextAreaSetter' - } - ] - }], + important: true + }, + { + type: 'group', + title: 'work', + items: [ + { + name: 'job', + title: '工作岗位', + setter: { + componentName: 'SelectSetter', + props: { + dataSource: [ + { + label: '工程师', + value: 1 + }, + { + label: '高级工程师', + value: 2 + }, + { + label: '资深工程师', + value: 3 + } + ] + } + } + }, + { + name: 'address', + title: '工作地点', + setter: 'TextAreaSetter' + } + ] + } + ] } }, - initialValue: {}, + initialValue: {} } }, { @@ -1659,64 +1689,74 @@ export default { props: { mode: 'popup', config: { - items: [{ - name: 'username', - title: '姓名', - setter: 'StringSetter', - important: true, - }, { - name: 'age', - title: '年龄', - setter: 'NumberSetter', - important: true, - }, { - name: 'married', - title: '婚否', - setter: 'BoolSetter', - important: true, - }, { - name: 'log', - title: '到访记录', - setter: { - componentName: 'ArraySetter', - props: { - itemSetter: 'StringSetter' - } + items: [ + { + name: 'username', + title: '姓名', + setter: 'StringSetter', + important: true }, - important: true, - }, { - type: 'group', - title: 'work', - items: [ - { - name: 'job', - title: '工作岗位', - setter: { - componentName: 'SelectSetter', - props: { - dataSource: [{ - label: '工程师', - value: 1 - }, { - label: '高级工程师', - value: 2 - }, { - label: '资深工程师', - value: 3 - }] - } + { + name: 'age', + title: '年龄', + setter: 'NumberSetter', + important: true + }, + { + name: 'married', + title: '婚否', + setter: 'BoolSetter', + important: true + }, + { + name: 'log', + title: '到访记录', + setter: { + componentName: 'ArraySetter', + props: { + itemSetter: 'StringSetter' } }, - { - name: 'address', - title: '工作地点', - setter: 'TextAreaSetter' - } - ] - }], + important: true + }, + { + type: 'group', + title: 'work', + items: [ + { + name: 'job', + title: '工作岗位', + setter: { + componentName: 'SelectSetter', + props: { + dataSource: [ + { + label: '工程师', + value: 1 + }, + { + label: '高级工程师', + value: 2 + }, + { + label: '资深工程师', + value: 3 + } + ] + } + } + }, + { + name: 'address', + title: '工作地点', + setter: 'TextAreaSetter' + } + ] + } + ] } }, - initialValue: {}, + initialValue: {} } } ] diff --git a/packages/editor/src/config/components.js b/packages/editor/src/config/components.js index 3320dd909..fac4759f7 100644 --- a/packages/editor/src/config/components.js +++ b/packages/editor/src/config/components.js @@ -8,14 +8,14 @@ import rightPanel1 from '@ali/iceluna-addon-2'; import rightPanel2 from '@ali/iceluna-addon-2'; import rightPanel3 from '@ali/iceluna-addon-2'; import rightPanel4 from '@ali/iceluna-addon-2'; -import componentList from '@ali/iceluna-addon-component-list'; +import componentsPane from '@ali/lowcode-plugin-components-pane'; import Settings from '../../../plugin-settings'; import undoRedo from '@ali/lowcode-plugin-undo-redo'; import Designer from '../plugins/designer'; import logo from '@ali/lowcode-plugin-logo'; import save from '@ali/lowcode-plugin-save'; -import {PluginFactory} from '@ali/lowcode-editor-framework'; +import { PluginFactory } from '@ali/lowcode-editor-core'; export default { logo: PluginFactory(logo), @@ -33,5 +33,5 @@ export default { rightPanel2: PluginFactory(rightPanel2), rightPanel3: PluginFactory(rightPanel3), rightPanel4: PluginFactory(rightPanel4), - componentList: PluginFactory(componentList) + componentsPane: PluginFactory(componentsPane) }; diff --git a/packages/editor/src/config/skeleton.js b/packages/editor/src/config/skeleton.js index 2e9012768..7f16bf2d1 100644 --- a/packages/editor/src/config/skeleton.js +++ b/packages/editor/src/config/skeleton.js @@ -1,5 +1,3 @@ -import assets from './assets'; - export default { version: '^1.0.2', theme: { @@ -31,73 +29,6 @@ export default { href: '/' } }, - { - pluginKey: 'topBalloonIcon', - type: 'BalloonIcon', - props: { - align: 'left', - title: 'balloon', - icon: 'dengpao', - balloonProps: { - triggerType: 'click' - } - }, - config: { - package: '@ali/iceluna-addon-2', - version: '^1.0.0' - }, - pluginProps: {} - }, - { - pluginKey: 'divider', - type: 'Divider', - props: { - align: 'left' - } - }, - { - pluginKey: 'topDialogIcon', - type: 'DialogIcon', - props: { - align: 'left', - title: 'dialog', - icon: 'dengpao' - }, - config: { - package: '@ali/iceluna-addon-2', - version: '^1.0.0' - }, - pluginProps: {} - }, - { - pluginKey: 'topLinkIcon', - type: 'LinkIcon', - props: { - align: 'left', - title: 'link', - icon: 'dengpao', - linkProps: { - href: '//www.taobao.com', - target: 'blank' - } - }, - config: {}, - pluginProps: {} - }, - { - pluginKey: 'topIcon', - type: 'Icon', - props: { - align: 'left', - title: 'icon', - icon: 'dengpao', - onClick(editor) { - alert(`icon addon invoke, current activeKey: ${editor.activeKey}`); - } - }, - config: {}, - pluginProps: {} - }, { pluginKey: 'undoRedo', type: 'Custom', @@ -132,7 +63,7 @@ export default { ], leftArea: [ { - pluginKey: 'componentList', + pluginKey: 'componentsPane', type: 'PanelIcon', props: { align: 'top', @@ -140,101 +71,12 @@ export default { title: '组件库' }, config: { - package: '@ali/iceluna-addon-component-list', + package: '@ali/iceluna-plugin-components-pane', version: '^1.0.4' }, pluginProps: { disableAppComponent: true } - }, - { - pluginKey: 'leftPanelIcon', - type: 'PanelIcon', - props: { - align: 'top', - title: 'panel', - icon: 'dengpao' - }, - config: { - package: '@ali/iceluna-addon-2', - version: '^1.0.0' - }, - pluginProps: {} - }, - { - pluginKey: 'leftBalloonIcon', - type: 'BalloonIcon', - props: { - align: 'top', - title: 'balloon', - icon: 'dengpao' - }, - config: { - package: '@ali/iceluna-addon-2', - version: '^1.0.0' - }, - pluginProps: {} - }, - { - pluginKey: 'leftPanelIcon2', - type: 'PanelIcon', - props: { - align: 'top', - title: 'panel2', - icon: 'dengpao', - panelProps: { - defaultWidth: 400, - floatable: true - } - }, - config: { - package: '@ali/iceluna-addon-2', - version: '^1.0.0' - }, - pluginProps: {} - }, - { - pluginKey: 'leftDialogIcon', - type: 'DialogIcon', - props: { - align: 'bottom', - title: 'dialog', - icon: 'dengpao' - }, - config: { - package: '@ali/iceluna-addon-2', - version: '^1.0.0' - }, - pluginProps: {} - }, - { - pluginKey: 'leftLinkIcon', - type: 'LinkIcon', - props: { - align: 'bottom', - title: 'link', - icon: 'dengpao', - linkProps: { - href: '//www.taobao.com', - target: 'blank' - } - }, - config: {}, - pluginProps: {} - }, - { - pluginKey: 'leftIcon', - type: 'Icon', - props: { - align: 'bottom', - title: 'icon', - icon: 'dengpao', - onClick(editor) { - alert(`icon addon invoke, current activeKey: ${editor.activeKey}`); - } - }, - config: {}, - pluginProps: {} } ], rightArea: [ @@ -243,55 +85,11 @@ export default { type: 'Panel', props: {}, config: { + package: '@ali/lowcode-plugin-settings-pane', version: '^1.0.0' }, pluginProps: {} } - // { - // pluginKey: 'rightPanel1', - // type: 'TabPanel', - // props: { - // title: '样式' - // }, - // config: { - // version: '^1.0.0' - // }, - // pluginProps: {} - // }, - // { - // pluginKey: 'rightPanel2', - // type: 'TabPanel', - // props: { - // title: '属性', - // icon: 'dengpao' - // }, - // config: { - // version: '^1.0.0' - // }, - // pluginProps: {} - // }, - // { - // pluginKey: 'rightPanel3', - // type: 'TabPanel', - // props: { - // title: '事件' - // }, - // config: { - // version: '^1.0.0' - // }, - // pluginProps: {} - // }, - // { - // pluginKey: 'rightPanel4', - // type: 'TabPanel', - // props: { - // title: '数据' - // }, - // config: { - // version: '^1.0.0' - // }, - // pluginProps: {} - // } ], centerArea: [ { @@ -306,57 +104,15 @@ export default { hooks: [], shortCuts: [], lifeCycles: { - init: function init(editor) { - const transformMaterial = componentList => { - return componentList.map(category => { - return { - name: category.title, - items: category.children.map(comp => { - return { - ...comp, - name: comp.componentName, - snippets: comp.snippets.map(snippet => { - return { - name: snippet.title, - screenshot: snippet.screenshot, - code: JSON.stringify(snippet.schema) - }; - }) - }; - }) - }; - }); - }; - - const list = transformMaterial(assets.componentList); - console.log('++++', list); + init: async function init(editor) { + const assets = await editor.utils.get('/assets.json'); editor.set({ - componentsMap: assets.components, - componentMaterial: { - library: [ - { - name: 'Fusion组件库', - id: '2' - }, { - name: '其他', - id: '3' - } - ], - list - } + assets, + componentsMap: assets.components }); - editor.set('dndHelper', { - handleResourceDragStart: function(ev, tagName, schema) { - // 物料面板中组件snippet的dragStart回调 - // ev: 原始的domEvent;tagName: 组件的描述文案;schema: snippet的schema - if (editor.designer) { - editor.designer.dragon.boost({ - type: 'nodedata', - data: schema - }, ev.nativeEvent); - } - } + editor.utils.get('/schema.json').then(res => { + editor.emit('schema.reset', res); }); } } diff --git a/packages/editor/src/index.tsx b/packages/editor/src/index.tsx index 23dbb8f92..bf52abd6d 100644 --- a/packages/editor/src/index.tsx +++ b/packages/editor/src/index.tsx @@ -16,6 +16,4 @@ if (!ICE_CONTAINER) { throw new Error('当前页面不存在
节点.'); } -ReactDOM.render(, - ICE_CONTAINER -); +ReactDOM.render(, ICE_CONTAINER); diff --git a/packages/editor/src/plugins/designer/index.tsx b/packages/editor/src/plugins/designer/index.tsx index 2e98d0364..713073880 100644 --- a/packages/editor/src/plugins/designer/index.tsx +++ b/packages/editor/src/plugins/designer/index.tsx @@ -1,13 +1,11 @@ import React, { PureComponent } from 'react'; -import Editor from '../../framework/index'; -import { PluginConfig } from '../../framework/definitions'; - +import Editor from '@ali/lowcode-editor-core'; +import { PluginConfig } from '@ali/lowcode-editor-core/lib/definitions'; +import assets from '../../config/assets'; // @ts-ignore import Designer from '../../../../designer'; -import assets from '../../config/assets'; - import './index.scss'; export interface PluginProps { @@ -157,23 +155,46 @@ const SCHEMA = { export default class DesignerPlugin extends PureComponent { displayName: 'LowcodePluginDesigner'; + componentDidMount(): void { + const { editor } = this.props; + editor.on('schema.reset', this.handleSchemaReset); + } + + componentWillUmount(): void { + const { editor } = this.props; + editor.off('schema.reset', this.handleSchemaReset); + } + + handleSchemaReset = (schema: object): void => { + // const {editor} = this.props; + // if (this.designer) { + // this.designer.setSchema(schema); + // } else { + // editor.once('designer.ready', (designer): void => { + // designer.setSchema(schema); + // }); + // } + }; + handleDesignerMount = (designer): void => { const { editor } = this.props; + this.designer = designer; editor.set('designer', designer); editor.emit('designer.ready', designer); }; render(): React.ReactNode { const { editor } = this.props; + // const assets = editor.get('assets') || {}; return ( ); diff --git a/packages/material-parser/package.json b/packages/material-parser/package.json index 0966e5681..ab1a8387c 100644 --- a/packages/material-parser/package.json +++ b/packages/material-parser/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "dependencies": { - "@ali/lowcode-editor-framework": "^0.0.1", + "@ali/lowcode-editor-core": "^0.0.1", "@babel/generator": "^7.8.4", "@babel/parser": "^7.8.4", "@babel/traverse": "^7.8.4", diff --git a/packages/plugin-component-pane/src/index.tsx b/packages/plugin-component-pane/src/index.tsx new file mode 100644 index 000000000..8dd9e114f --- /dev/null +++ b/packages/plugin-component-pane/src/index.tsx @@ -0,0 +1,24 @@ +import React, {PureComponent} from '../node_modules/_@types_react@16.9.25@@types/react'; +import { + Search, + Select +} from '../node_modules/_@alifd_next@1.19.19@@alifd/next/types'; +import './index.scss'; +import ComponentList from '../node_modules/_@ali_iceluna-addon-component-list@1.0.12@@ali/iceluna-addon-component-list/lib'; +import { PluginProps } from './node_modules/@ali/lowcode-editor-core/lib/definitions'; + +export default class ComponentListPlugin extends PureComponent { + static displayName = 'LowcodeComponentListPlugin'; + + + + render(): React.ReactNode { + return ( +
+ +
+ ) + } + + +} diff --git a/packages/plugin-components-pane/.editorconfig b/packages/plugin-components-pane/.editorconfig new file mode 100644 index 000000000..5760be583 --- /dev/null +++ b/packages/plugin-components-pane/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/plugin-components-pane/.eslintignore b/packages/plugin-components-pane/.eslintignore new file mode 100644 index 000000000..3b437e614 --- /dev/null +++ b/packages/plugin-components-pane/.eslintignore @@ -0,0 +1,11 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ + +# 忽略文件 +**/*-min.js +**/*.min.js diff --git a/packages/plugin-components-pane/.eslintrc.js b/packages/plugin-components-pane/.eslintrc.js new file mode 100644 index 000000000..4d6be3c66 --- /dev/null +++ b/packages/plugin-components-pane/.eslintrc.js @@ -0,0 +1,16 @@ +const { tslint, deepmerge } = require('@ice/spec'); + +module.exports = deepmerge(tslint, { + rules: { + "global-require": 0, + "comma-dangle": 0, + "no-unused-expressions": 0, + "object-shorthand": 0, + "jsx-a11y/anchor-has-content": 0, + "react/sort-comp": 0, + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", "ts"] }], + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-member-accessibility": 0 + }, +}); diff --git a/packages/plugin-components-pane/.gitignore b/packages/plugin-components-pane/.gitignore new file mode 100644 index 000000000..c590da5b0 --- /dev/null +++ b/packages/plugin-components-pane/.gitignore @@ -0,0 +1,20 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# production +/build +/dist + +# misc +.idea/ +.happypack +.DS_Store + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# ignore d.ts auto generated by css-modules-typescript-loader +*.module.scss.d.ts \ No newline at end of file diff --git a/packages/plugin-components-pane/.stylelintignore b/packages/plugin-components-pane/.stylelintignore new file mode 100644 index 000000000..82af6f60d --- /dev/null +++ b/packages/plugin-components-pane/.stylelintignore @@ -0,0 +1,7 @@ +# 忽略目录 +build/ +tests/ +demo/ + +# node 覆盖率文件 +coverage/ diff --git a/packages/plugin-components-pane/.stylelintrc.js b/packages/plugin-components-pane/.stylelintrc.js new file mode 100644 index 000000000..eeb605b33 --- /dev/null +++ b/packages/plugin-components-pane/.stylelintrc.js @@ -0,0 +1,3 @@ +const { stylelint } = require('@ice/spec'); + +module.exports = stylelint; diff --git a/packages/plugin-components-pane/README.md b/packages/plugin-components-pane/README.md new file mode 100644 index 000000000..8a6fb13f0 --- /dev/null +++ b/packages/plugin-components-pane/README.md @@ -0,0 +1 @@ +## todo diff --git a/packages/plugin-components-pane/abc.json b/packages/plugin-components-pane/abc.json new file mode 100644 index 000000000..dce1f92ed --- /dev/null +++ b/packages/plugin-components-pane/abc.json @@ -0,0 +1,4 @@ +{ + "type": "ice-scripts", + "builder": "@ali/builder-ice-scripts" +} diff --git a/packages/plugin-components-pane/build.json b/packages/plugin-components-pane/build.json new file mode 100644 index 000000000..77627cdf9 --- /dev/null +++ b/packages/plugin-components-pane/build.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + "build-plugin-component", + "build-plugin-fusion", + ["build-plugin-moment-locales", { + "locales": ["zh-cn"] + }] + ] +} \ No newline at end of file diff --git a/packages/plugin-components-pane/demo/usage.md b/packages/plugin-components-pane/demo/usage.md new file mode 100644 index 000000000..9f19eae0b --- /dev/null +++ b/packages/plugin-components-pane/demo/usage.md @@ -0,0 +1,24 @@ +--- +title: Simple Usage +order: 1 +--- + +本 Demo 演示一行文字的用法。 + +````jsx +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; + +class App extends Component { + render() { + return ( +
+
+ ); + } +} + +ReactDOM.render(( + +), mountNode); +```` diff --git a/packages/plugin-components-pane/es/index.d.ts b/packages/plugin-components-pane/es/index.d.ts new file mode 100644 index 000000000..4ca4e9ee3 --- /dev/null +++ b/packages/plugin-components-pane/es/index.d.ts @@ -0,0 +1,9 @@ +import React from 'react'; +import './index.scss'; +import { PluginProps } from '@ali/lowcode-editor-core/lib/definitions'; +export interface IProps { + logo?: string; + href?: string; +} +declare const Logo: React.FC; +export default Logo; diff --git a/packages/plugin-components-pane/es/index.js b/packages/plugin-components-pane/es/index.js new file mode 100644 index 000000000..1b43f6c70 --- /dev/null +++ b/packages/plugin-components-pane/es/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import './index.scss'; + +var Logo = function Logo(props) { + return /*#__PURE__*/React.createElement("div", { + className: "lowcode-plugin-logo" + }, /*#__PURE__*/React.createElement("a", { + className: "logo", + target: "blank", + href: props.href || '/', + style: { + backgroundImage: "url(" + props.logo + ")" + } + })); +}; + +export default Logo; \ No newline at end of file diff --git a/packages/plugin-components-pane/es/index.scss b/packages/plugin-components-pane/es/index.scss new file mode 100644 index 000000000..338b4c58a --- /dev/null +++ b/packages/plugin-components-pane/es/index.scss @@ -0,0 +1,13 @@ +.lowcode-plugin-logo { + padding: 14px 8px; + padding-left: 8px; + .logo { + display: block; + width: 56px; + height: 20px; + cursor: pointer; + background-size: contain; + background-position: center; + background-repeat: no-repeat; + } +} diff --git a/packages/plugin-components-pane/es/style.js b/packages/plugin-components-pane/es/style.js new file mode 100644 index 000000000..bf3c23acb --- /dev/null +++ b/packages/plugin-components-pane/es/style.js @@ -0,0 +1 @@ +import './index.scss'; \ No newline at end of file diff --git a/packages/plugin-components-pane/jsconfig.json b/packages/plugin-components-pane/jsconfig.json new file mode 100644 index 000000000..9e0f3c03d --- /dev/null +++ b/packages/plugin-components-pane/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "jsx": "react", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/packages/plugin-components-pane/package-lock.json b/packages/plugin-components-pane/package-lock.json new file mode 100644 index 000000000..3422fc790 --- /dev/null +++ b/packages/plugin-components-pane/package-lock.json @@ -0,0 +1,4179 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@alifd/next": { + "version": "1.19.18", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/next/download/@alifd/next-1.19.18.tgz", + "integrity": "sha1-grGCFS+qjXvfwJRk6tKGZWyr+nM=", + "requires": { + "@alifd/field": "~1.3.3", + "@alifd/validate": "~1.1.4", + "babel-runtime": "^6.26.0", + "classnames": "^2.2.3", + "hoist-non-react-statics": "^2.1.0", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-transition-group": "^2.2.1", + "shallow-element-equals": "^1.0.1" + }, + "dependencies": { + "@alifd/field": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/field/download/@alifd/field-1.3.5.tgz", + "integrity": "sha1-uPNwuNnbwquirIX2pZiezVHzZnM=", + "requires": { + "@alifd/validate": "^1.1.3", + "prop-types": "^15.5.8" + } + }, + "@alifd/validate": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/@alifd/validate/download/@alifd/validate-1.1.5.tgz", + "integrity": "sha1-5EiWeFBRGCy5TbfsKzOpm0yGlDo=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npm.alibaba-inc.com/classnames/download/classnames-2.2.6.tgz", + "integrity": "sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4=" + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npm.alibaba-inc.com/core-js/download/core-js-2.6.11.tgz", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/dom-helpers/download/dom-helpers-3.4.0.tgz", + "integrity": "sha1-6bNpcA+Vn2Ls3lprq95LzNkWmvg=", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha1-xZA89AnA39kI84jmGdhrnBF0y0c=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/react-lifecycles-compat/download/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=" + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-transition-group/download/react-transition-group-2.9.0.tgz", + "integrity": "sha1-35zbAleWIRFRpDbGmo87l7WwfI0=", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + }, + "shallow-element-equals": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/shallow-element-equals/download/shallow-element-equals-1.0.1.tgz", + "integrity": "sha1-UHObfZStdWehNBc9P0QiOH7VfOY=", + "requires": { + "style-equal": "^1.0.0" + } + }, + "style-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-equal/download/style-equal-1.0.0.tgz", + "integrity": "sha1-mKHFkiImv+E8GW5z8ZQOkbjmZZU=" + } + } + }, + "@ice/spec": { + "version": "0.1.9", + "resolved": "https://registry.npm.alibaba-inc.com/@ice/spec/download/@ice/spec-0.1.9.tgz", + "integrity": "sha1-pVjNIibD7f+wXNLGBzhbceXQZ7A=", + "requires": { + "@commitlint/config-conventional": "^8.1.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "babel-eslint": "^10.0.2", + "eslint-config-airbnb": "^17.1.1", + "eslint-config-prettier": "^6.0.0", + "eslint-plugin-import": "^2.18.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.2", + "eslint-plugin-react-hooks": "^1.6.1", + "stylelint-config-css-modules": "^1.4.0", + "stylelint-config-prettier": "^5.2.0", + "stylelint-config-rational-order": "^0.1.2", + "stylelint-config-standard": "^18.3.0", + "stylelint-order": "^3.0.0", + "stylelint-scss": "^3.8.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/core/download/@babel/core-7.8.7.tgz", + "integrity": "sha1-tpAX0iHM3rIDFFrp2iadcs8QLzs=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.7", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.7", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/generator/download/@babel/generator-7.8.8.tgz", + "integrity": "sha1-zc1YyqtzCDTO6e6ttynoM7Yl2j4=", + "requires": { + "@babel/types": "^7.8.7", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/helpers/download/@babel/helpers-7.8.4.tgz", + "integrity": "sha1-dU6z7nJ8Fl4KJA1sIH3nxFXzb3M=", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/parser/download/@babel/parser-7.8.8.tgz", + "integrity": "sha1-TDt8422zfgYpvh8NUKVx0vhvbNQ=" + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.8.7.tgz", + "integrity": "sha1-ggnZ3/LzOqJhbLMZyD/hWf+we4w=", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/template/download/@babel/template-7.8.6.tgz", + "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/traverse/download/@babel/traverse-7.8.6.tgz", + "integrity": "sha1-rP4MZOHNmRs+MuroE6brVklUtf8=", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/types/download/@babel/types-7.8.7.tgz", + "integrity": "sha1-H8lynhrLsjN9W2l3pjl5tIGfXR0=", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@commitlint/config-conventional": { + "version": "8.3.4", + "resolved": "https://registry.npm.alibaba-inc.com/@commitlint/config-conventional/download/@commitlint/config-conventional-8.3.4.tgz", + "integrity": "sha1-/tE7NxFpBmOxdsH2s5wgWlZWGNI=", + "requires": { + "conventional-changelog-conventionalcommits": "4.2.1" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/events/download/@types/events-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/glob/download/@types/glob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/@types/json-schema/download/@types/json-schema-7.0.4.tgz", + "integrity": "sha1-OP1z3f2bVaux4bLtV4y1W9e30zk=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=" + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/@types/node/download/@types/node-13.9.1.tgz", + "integrity": "sha1-lvYG+M1n+wGIR9m2HpOZfave/HI=" + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/@types/unist/download/@types/unist-2.0.3.tgz", + "integrity": "sha1-nAiGeYdvN061mD8VDUeHqm+zLX4=" + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile/download/@types/vfile-3.0.2.tgz", + "integrity": "sha1-GcGM0jLfEc5vpq2AJZvIbDZrCbk=", + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/@types/vfile-message/download/@types/vfile-message-2.0.0.tgz", + "integrity": "sha1-aQ5Grw/fwfn6rgDNBJzIiJV5J9U=", + "requires": { + "vfile-message": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-1.13.0.tgz", + "integrity": "sha1-Iv7ZsW3f60Av17zeVjB4IPbrxJ8=", + "requires": { + "@typescript-eslint/experimental-utils": "1.13.0", + "eslint-utils": "^1.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^2.0.1", + "tsutils": "^3.7.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-1.13.0.tgz", + "integrity": "sha1-sIxg14DABn3i+0SwS0MvVAE4MB4=", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-scope": "^4.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/parser/download/@typescript-eslint/parser-1.13.0.tgz", + "integrity": "sha1-Yax4EepSeRxH3J/U3UoYT66aw1U=", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "1.13.0", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-1.13.0.tgz", + "integrity": "sha1-gUDxfQ9gwDYZeY8dYouENJE9wy4=", + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/ajv/download/ajv-6.12.0.tgz", + "integrity": "sha1-BtYLlth7hFSlrauobnhU2mKdtLc=", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.alibaba-inc.com/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/aria-query/download/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-find-index/download/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/array-ify/download/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/array-includes/download/array-includes-3.1.1.tgz", + "integrity": "sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/array.prototype.flat/download/array.prototype.flat-1.2.3.tgz", + "integrity": "sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/arrify/download/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npm.alibaba-inc.com/ast-types-flow/download/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=" + }, + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npm.alibaba-inc.com/autoprefixer/download/autoprefixer-9.7.4.tgz", + "integrity": "sha1-+L8+BnB9BH8GQdh67oz7F0sqU3g=", + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "axobject-query": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/axobject-query/download/axobject-query-2.1.2.tgz", + "integrity": "sha1-K9/8A3HmQ+XwO6mQZdUXm5ynl5k=" + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/bail/download/bail-1.0.5.tgz", + "integrity": "sha1-tvoTNASjksvB+MS/Y/WVM1Hnp3Y=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.alibaba-inc.com/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.alibaba-inc.com/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.9.1", + "resolved": "https://registry.npm.alibaba-inc.com/browserslist/download/browserslist-4.9.1.tgz", + "integrity": "sha1-Af+5yjGhrvdngSj8aiJTMWqnKHw=", + "requires": { + "caniuse-lite": "^1.0.30001030", + "electron-to-chromium": "^1.3.363", + "node-releases": "^1.1.50" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-callsite/download/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase/download/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/camelcase-keys/download/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001035", + "resolved": "https://registry.npm.alibaba-inc.com/caniuse-lite/download/caniuse-lite-1.0.30001035.tgz", + "integrity": "sha1-K7U7iqRxay7QjgiNTcgWpf4Imh4=" + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/ccount/download/ccount-1.0.5.tgz", + "integrity": "sha1-rIKpRJBaZc4gTrAwIxV+3ylCXBc=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/chalk/download/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities/download/character-entities-1.2.4.tgz", + "integrity": "sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=" + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-html4/download/character-entities-html4-1.1.4.tgz", + "integrity": "sha1-DmSwo3U92/H9wETF/QHQGZoC4SU=" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz", + "integrity": "sha1-lLwYRdznClu50uzHSHJWYSk9j8E=" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz", + "integrity": "sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.alibaba-inc.com/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/clone-regexp/download/clone-regexp-1.0.1.tgz", + "integrity": "sha1-BRgFzTMXM3XYIRj8CRhgbaOf1g8=", + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/collapse-white-space/download/collapse-white-space-1.0.6.tgz", + "integrity": "sha1-5jYpwAFmZXkgYNu+t5xCI50sUoc=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.alibaba-inc.com/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=" + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/compare-func/download/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npm.alibaba-inc.com/confusing-browser-globals/download/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha1-crwTtIPAJ2gBaBhx1ImFFvj1T90=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/contains-path/download/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "conventional-changelog-conventionalcommits": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/conventional-changelog-conventionalcommits/download/conventional-changelog-conventionalcommits-4.2.1.tgz", + "integrity": "sha1-1ssuLF17/KBEoIuduoS0CC4aG9k=", + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.2.1", + "q": "^1.5.1" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npm.alibaba-inc.com/core-js-pure/download/core-js-pure-3.6.4.tgz", + "integrity": "sha1-S/G6hm4lgU8UnU6aqgjDYXNQbjo=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/currently-unhandled/download/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/damerau-levenshtein/download/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha1-FDwWQcs9hcYMMjKeJoma3qhwF5E=" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/decamelize-keys/download/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=" + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.alibaba-inc.com/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/domutils/download/domutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.377", + "resolved": "https://registry.npm.alibaba-inc.com/electron-to-chromium/download/electron-to-chromium-1.3.377.tgz", + "integrity": "sha1-tJ1CCzbubEiwzTE3v8f+x182my4=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=" + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npm.alibaba-inc.com/es-abstract/download/es-abstract-1.17.4.tgz", + "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-config-airbnb": { + "version": "17.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb/download/eslint-config-airbnb-17.1.1.tgz", + "integrity": "sha1-InLguGux4rE4zfiNB6O29M2j1iY=", + "requires": { + "eslint-config-airbnb-base": "^13.2.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-airbnb-base": { + "version": "13.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-airbnb-base/download/eslint-config-airbnb-base-13.2.0.tgz", + "integrity": "sha1-9uqBRZ/03sLdogDDXx2PdBnVeUM=", + "requires": { + "confusing-browser-globals": "^1.0.5", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + } + }, + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-config-prettier/download/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha1-exXjA7+clWh1yUj2shUA5I3tan8=", + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ=", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-module-utils/download/eslint-module-utils-2.5.2.tgz", + "integrity": "sha1-eHj3UEgk4bhX3SUFtZqOXtompwg=", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-import/download/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha1-gCQjGW3LEdnOhDWl/AKm07RpObM=", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-jsx-a11y/download/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react/download/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha1-bQj5ZzYoqmnFVZ0zSJ6FXYNVFmY=", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/doctrine/download/doctrine-2.1.0.tgz", + "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-utils/download/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/estraverse/download/estraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=" + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/execall/download/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "requires": { + "clone-regexp": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.alibaba-inc.com/fast-glob/download/fast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + }, + "file-entry-cache": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/file-entry-cache/download/file-entry-cache-4.0.0.tgz", + "integrity": "sha1-YzVn0VNkrv4LKZ4eIXc16POp9ug=", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/flatted/download/flatted-2.0.1.tgz", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.alibaba-inc.com/gensync/download/gensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=" + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/get-stdin/download/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/glob/download/glob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-modules/download/global-modules-2.0.0.tgz", + "integrity": "sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/global-prefix/download/global-prefix-3.0.0.tgz", + "integrity": "sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.alibaba-inc.com/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=" + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/globjoin/download/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=" + }, + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npm.alibaba-inc.com/gonzales-pe/download/gonzales-pe-4.2.4.tgz", + "integrity": "sha1-NWrjajEsRv4PECbdbLU5A5+FANI=", + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=" + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/graceful-fs/download/graceful-fs-4.2.3.tgz", + "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-symbols/download/has-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.alibaba-inc.com/hosted-git-info/download/hosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=" + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/ignore/download/ignore-5.1.4.tgz", + "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-fresh/download/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/import-lazy/download/import-lazy-3.1.0.tgz", + "integrity": "sha1-iRJ5ICyKIoD9vWZ029jaGh38Z8w=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/indent-string/download/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/ini/download/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/internal-slot/download/internal-slot-1.0.2.tgz", + "integrity": "sha1-nC6fs82OXkJWxvRf4xAGf8+jeKM=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphabetical/download/is-alphabetical-1.0.4.tgz", + "integrity": "sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=" + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumeric/download/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz", + "integrity": "sha1-frmiQx+FX2se8aeOMm31FWlsTb8=", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-callable/download/is-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-decimal/download/is-decimal-1.0.4.tgz", + "integrity": "sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz", + "integrity": "sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-regex/download/is-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-regexp/download/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/is-string/download/is-string-1.0.5.tgz", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=" + }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-supported-regexp-flag/download/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha1-Ie4WUY0sHdPt0+mg1X5QIHrDZMo=" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/is-symbol/download/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-whitespace-character/download/is-whitespace-character-1.0.4.tgz", + "integrity": "sha1-CFjt2UqVWUx8ndC1wXTsbkXuSqc=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-word-character/download/is-word-character-1.0.4.tgz", + "integrity": "sha1-zg5zIW+YWZBgWS9i/zE1TdvrAjA=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.alibaba-inc.com/js-yaml/download/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.alibaba-inc.com/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/json5/download/json5-2.1.2.tgz", + "integrity": "sha1-Q+8fCvmDXdYkdRprf6SIdPstYI4=", + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + } + } + }, + "jsx-ast-utils": { + "version": "2.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/jsx-ast-utils/download/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha1-ipNk5AJEijzn8U01dzgxDZJIBU8=", + "requires": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=" + }, + "known-css-properties": { + "version": "0.11.0", + "resolved": "https://registry.npm.alibaba-inc.com/known-css-properties/download/known-css-properties-0.11.0.tgz", + "integrity": "sha1-DaeE8RXqd8drgVNtcFLpDubIaoo=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/leven/download/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.alibaba-inc.com/lodash/download/lodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/lodash.unescape/download/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "requires": { + "chalk": "^2.0.1" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/longest-streak/download/longest-streak-2.0.4.tgz", + "integrity": "sha1-uFmZV9pbXatk3uP+MW+ndFl9kOQ=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/loud-rejection/download/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-obj/download/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-escapes/download/markdown-escapes-1.0.4.tgz", + "integrity": "sha1-yVQV70UUmddgK5EJXzyOiXX3hTU=" + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/markdown-table/download/markdown-table-1.1.3.tgz", + "integrity": "sha1-n8tpvP24cXv9A5jG7C2TA2743mA=" + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/mathml-tag-names/download/mathml-tag-names-2.1.3.tgz", + "integrity": "sha1-TdrdZzCOeAzxakdoWHjuJ7c2oKM=" + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/mdast-util-compact/download/mdast-util-compact-1.0.4.tgz", + "integrity": "sha1-1TG7dme1Ejq/IIWb4IbE0GyJRZM=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/meow/download/meow-5.0.0.tgz", + "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=", + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/load-json-file/download/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/merge2/download/merge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.alibaba-inc.com/micromatch/download/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npm.alibaba-inc.com/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/minimist-options/download/minimist-options-3.0.2.tgz", + "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.alibaba-inc.com/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npm.alibaba-inc.com/node-releases/download/node-releases-1.1.52.tgz", + "integrity": "sha1-vP/uPgp1jpLkTs+uzQpHVUsLy6k=", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/normalize-selector/download/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=" + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.alibaba-inc.com/object-inspect/download/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.entries/download/object.entries-1.1.1.tgz", + "integrity": "sha1-7hzwQVPeArsJP+wzaDkA9XzlOZs=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/object.fromentries/download/object.fromentries-2.0.2.tgz", + "integrity": "sha1-SgnJubs4Q90PiazbUXp5TU81Wsk=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-limit/download/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/parse-entities/download/parse-entities-1.2.2.tgz", + "integrity": "sha1-wxvw9lO2ZhNU+Jc1WcuG3R1e31A=", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-type/download/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/pkg-dir/download/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npm.alibaba-inc.com/postcss/download/postcss-7.0.27.tgz", + "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-html/download/postcss-html-0.36.0.tgz", + "integrity": "sha1-tAkT+U6qzCRT/TChMnrW7h+IsgQ=", + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-jsx": { + "version": "0.36.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-jsx/download/postcss-jsx-0.36.4.tgz", + "integrity": "sha1-N6aPMAo55XSNVH8Zp0ezJXJAvVA=", + "requires": { + "@babel/core": ">=7.2.2" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-less/download/postcss-less-3.1.4.tgz", + "integrity": "sha1-Np9YZCtZKO+Jj/vBpuk8lYMExa0=", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-markdown/download/postcss-markdown-0.36.0.tgz", + "integrity": "sha1-fyKEmuDj2xiCC3sNXngz8TpEdWA=", + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-reporter/download/postcss-reporter-6.0.1.tgz", + "integrity": "sha1-fAVRIAYKl8iDe05IIVZhqvt0JF8=", + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=" + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-safe-parser/download/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha1-ptTkjw832ffBGypYG/APi6SHC5Y=", + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.3.5", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sass/download/postcss-sass-0.3.5.tgz", + "integrity": "sha1-bT458QGlPS76CR+VNJMRbTK+tow=", + "requires": { + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-scss/download/postcss-scss-2.0.0.tgz", + "integrity": "sha1-JIsKKK936nsysQEaug9zi9on3qE=", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/dot-prop/download/dot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=" + } + } + }, + "postcss-sorting": { + "version": "4.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-4.1.0.tgz", + "integrity": "sha1-oQfwvzhSl3+mTkRCvDQMiNWqzbM=", + "requires": { + "lodash": "^4.17.4", + "postcss": "^7.0.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-syntax/download/postcss-syntax-0.36.2.tgz", + "integrity": "sha1-8IV4x9lYNFdOVZOoLfv6ivrjtRw=" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.alibaba-inc.com/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/quick-lru/download/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg/download/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/read-pkg-up/download/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.alibaba-inc.com/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/redent/download/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=" + }, + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/remark/download/remark-10.0.1.tgz", + "integrity": "sha1-MFgHbcQXgb9QXYl4wpFIX+R2Z98=", + "requires": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/remark-parse/download/remark-parse-6.0.3.tgz", + "integrity": "sha1-yZExBSgJ2kghCEE/h7Duf1IYCjo=", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/remark-stringify/download/remark-stringify-6.0.4.tgz", + "integrity": "sha1-FqwinU0VkySQGGY8e93yiq/E4Ig=", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.alibaba-inc.com/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/replace-ext/download/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve/download/resolve-1.15.1.tgz", + "integrity": "sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g=", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.alibaba-inc.com/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.alibaba-inc.com/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/semver/download/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/side-channel/download/side-channel-1.0.2.tgz", + "integrity": "sha1-310auttOS/SvHNiFK/Ey0veHaUc=", + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.alibaba-inc.com/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.alibaba-inc.com/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-resolve/download/source-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=" + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/specificity/download/specificity-0.4.1.tgz", + "integrity": "sha1-qrXmRQEtsIuhguFRFlc40AiHsBk=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/state-toggle/download/state-toggle-1.0.3.tgz", + "integrity": "sha1-4SOxaojhQxObCcaFIiG8mBWRff4=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.alibaba-inc.com/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.matchall/download/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha1-SLtRAyb7n962ozzqqBpuoE73ZI4=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/string_decoder/download/string_decoder-1.3.0.tgz", + "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/stringify-entities/download/stringify-entities-1.3.2.tgz", + "integrity": "sha1-qYQX5Ucf0iez5F09sYYcEcr2aPc=", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-bom/download/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/style-search/download/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=" + }, + "stylelint": { + "version": "9.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint/download/stylelint-9.10.1.tgz", + "integrity": "sha1-Xw7jcBRh3/HWgoThOG7+jwZ3p10=", + "requires": { + "autoprefixer": "^9.0.0", + "balanced-match": "^1.0.0", + "chalk": "^2.4.1", + "cosmiconfig": "^5.0.0", + "debug": "^4.0.0", + "execall": "^1.0.0", + "file-entry-cache": "^4.0.0", + "get-stdin": "^6.0.0", + "global-modules": "^2.0.0", + "globby": "^9.0.0", + "globjoin": "^0.1.4", + "html-tags": "^2.0.0", + "ignore": "^5.0.4", + "import-lazy": "^3.1.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.11.0", + "leven": "^2.1.0", + "lodash": "^4.17.4", + "log-symbols": "^2.0.0", + "mathml-tag-names": "^2.0.1", + "meow": "^5.0.0", + "micromatch": "^3.1.10", + "normalize-selector": "^0.2.0", + "pify": "^4.0.0", + "postcss": "^7.0.13", + "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.0", + "postcss-less": "^3.1.0", + "postcss-markdown": "^0.36.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.0", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.0", + "postcss-sass": "^0.3.5", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^3.1.0", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^3.3.0", + "resolve-from": "^4.0.0", + "signal-exit": "^3.0.2", + "slash": "^2.0.0", + "specificity": "^0.4.1", + "string-width": "^3.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + } + } + }, + "stylelint-config-css-modules": { + "version": "1.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-css-modules/download/stylelint-config-css-modules-1.5.0.tgz", + "integrity": "sha1-x9kB2wUvWi7jE13eUUkNNMKBrdM=" + }, + "stylelint-config-prettier": { + "version": "5.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-prettier/download/stylelint-config-prettier-5.3.0.tgz", + "integrity": "sha1-ptpibC7auyxSB7z2P+RJwW9aJOw=" + }, + "stylelint-config-rational-order": { + "version": "0.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-rational-order/download/stylelint-config-rational-order-0.1.2.tgz", + "integrity": "sha1-TpjjkHg9Q38OxB+3O8QZkueNAqA=", + "requires": { + "stylelint": "^9.10.1", + "stylelint-order": "^2.2.1" + }, + "dependencies": { + "stylelint-order": { + "version": "2.2.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-2.2.1.tgz", + "integrity": "sha1-zS1KDYHZHHBfHSdaWEh+WtWqWCg=", + "requires": { + "lodash": "^4.17.10", + "postcss": "^7.0.2", + "postcss-sorting": "^4.1.0" + } + } + } + }, + "stylelint-config-recommended": { + "version": "2.2.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-recommended/download/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha1-RqsTnbSg5xUf1flK8VVRKIbJbT8=" + }, + "stylelint-config-standard": { + "version": "18.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-config-standard/download/stylelint-config-standard-18.3.0.tgz", + "integrity": "sha1-oqG3iNLPh2wBP+r/iuJ2EXob76c=", + "requires": { + "stylelint-config-recommended": "^2.2.0" + } + }, + "stylelint-order": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-order/download/stylelint-order-3.1.1.tgz", + "integrity": "sha1-up6mhE0Ugvl/MSBOfJYFx7eSwpQ=", + "requires": { + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-sorting": "^5.0.1" + }, + "dependencies": { + "postcss-sorting": { + "version": "5.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-sorting/download/postcss-sorting-5.0.1.tgz", + "integrity": "sha1-ENXQBZ7qgzTazIIMASGGQDW8PxE=", + "requires": { + "lodash": "^4.17.14", + "postcss": "^7.0.17" + } + } + } + }, + "stylelint-scss": { + "version": "3.15.0", + "resolved": "https://registry.npm.alibaba-inc.com/stylelint-scss/download/stylelint-scss-3.15.0.tgz", + "integrity": "sha1-34c6EWO1kuy/mFqE1ZhWkiLWcEM=", + "requires": { + "lodash": "^4.17.15", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz", + "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + } + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/sugarss/download/sugarss-2.0.0.tgz", + "integrity": "sha1-3dduASSyl9QL88yjHIsi7LQ7xh0=", + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.alibaba-inc.com/supports-color/download/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.alibaba-inc.com/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/trim/download/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/trim-newlines/download/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/trim-trailing-lines/download/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha1-fwc5iB/3Zle3d24Qh0EoAEtiWpQ=" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/trough/download/trough-1.0.5.tgz", + "integrity": "sha1-uLY5zvrX0LsqvTfUM/+Ck++l9AY=" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npm.alibaba-inc.com/tslib/download/tslib-1.11.1.tgz", + "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npm.alibaba-inc.com/tsutils/download/tsutils-3.17.1.tgz", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "requires": { + "tslib": "^1.8.1" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npm.alibaba-inc.com/unherit/download/unherit-1.1.3.tgz", + "integrity": "sha1-bJtQPytBsmIzDIDpHIYUq9qmnCI=", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/unified/download/unified-7.1.0.tgz", + "integrity": "sha1-UDLxwe4zZL0J2hLif91KdVPHvhM=", + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "unist-util-find-all-after": { + "version": "1.0.5", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-find-all-after/download/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha1-V1GoYIg09B0RetnFd3cMXy8bKJk=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-is/download/unist-util-is-3.0.0.tgz", + "integrity": "sha1-2ehDgcJGjoJinkpb6dfQWi3TJM0=" + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-remove-position/download/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha1-7ANzSLYQLIl3A+7m0ClMpHVaICA=", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha1-zOO/oc34W6c3XR1bF73Eytqb2do=", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit/download/unist-util-visit-1.4.1.tgz", + "integrity": "sha1-RySqqEhububibX/zyGhZYNVgseM=", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-visit-parents/download/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha1-JeQ+VTEhZvM0jK5nQ1iHgdESwek=", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.alibaba-inc.com/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.alibaba-inc.com/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile/download/vfile-3.0.1.tgz", + "integrity": "sha1-RzMdKr4ygkJPSku2rNIKRMQSGAM=", + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npm.alibaba-inc.com/is-buffer/download/is-buffer-2.0.4.tgz", + "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/unist-util-stringify-position/download/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha1-Pzf881EnncvKdICrWIm7ioMu4cY=" + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-1.1.1.tgz", + "integrity": "sha1-WDOuB4od+i2W6WR4hs0ymTqzE+E=", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-location/download/vfile-location-2.0.6.tgz", + "integrity": "sha1-iidPOUEbhxnqVyiALhDZ4N/xUZ4=" + }, + "vfile-message": { + "version": "2.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/vfile-message/download/vfile-message-2.0.3.tgz", + "integrity": "sha1-DdT2h5+yQKgJmyK9N1VTbJLlm6U=", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.alibaba-inc.com/which/download/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/x-is-string/download/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npm.alibaba-inc.com/xregexp/download/xregexp-4.3.0.tgz", + "integrity": "sha1-fpLnPZF0qZpZdD9npM6HmgS1rlA=", + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.alibaba-inc.com/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/yargs-parser/download/yargs-parser-10.1.0.tgz", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.alibaba-inc.com/prettier/download/prettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=" + }, + "react": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react/download/react-16.13.0.tgz", + "integrity": "sha1-0EbqvN9k5Fe77tHnkuI14bmTTPc=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + } + } + }, + "react-dom": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-dom/download/react-dom-16.13.0.tgz", + "integrity": "sha1-zd5UtI656KDKGz3JlD2btAm4GGY=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "scheduler": { + "version": "0.19.0", + "resolved": "https://registry.npm.alibaba-inc.com/scheduler/download/scheduler-0.19.0.tgz", + "integrity": "sha1-pxXVYwLeQD33QvSpvhGXWzL1aY0=", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router-dom/download/react-router-dom-5.1.2.tgz", + "integrity": "sha1-BnAbg0NS9E03+7YxH4cPhMdrnBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.1.2", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npm.alibaba-inc.com/@babel/runtime/download/@babel/runtime-7.8.7.tgz", + "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/gud/download/gud-1.0.0.tgz", + "integrity": "sha1-pIlYGxfmpwvsqavjrlfeekmYUsA=" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npm.alibaba-inc.com/history/download/history-4.10.1.tgz", + "integrity": "sha1-MzcaZeOoOyZ0NOKz87G0xYqtTPM=", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=", + "requires": { + "react-is": "^16.7.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.alibaba-inc.com/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "mini-create-react-context": { + "version": "0.3.2", + "resolved": "https://registry.npm.alibaba-inc.com/mini-create-react-context/download/mini-create-react-context-0.3.2.tgz", + "integrity": "sha1-efxZjyg91iPajgiLBduM3aslAYk=", + "requires": { + "@babel/runtime": "^7.4.0", + "gud": "^1.0.0", + "tiny-warning": "^1.0.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.alibaba-inc.com/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npm.alibaba-inc.com/path-to-regexp/download/path-to-regexp-1.8.0.tgz", + "integrity": "sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo=", + "requires": { + "isarray": "0.0.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npm.alibaba-inc.com/prop-types/download/prop-types-15.7.2.tgz", + "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npm.alibaba-inc.com/react-is/download/react-is-16.13.0.tgz", + "integrity": "sha1-DzfDYTw0/ms3zX92Og1ik6sVxSc=" + }, + "react-router": { + "version": "5.1.2", + "resolved": "https://registry.npm.alibaba-inc.com/react-router/download/react-router-5.1.2.tgz", + "integrity": "sha1-bqUdeJyzamvhul98DUjdnoF9NBg=", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.3.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.alibaba-inc.com/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npm.alibaba-inc.com/resolve-pathname/download/resolve-pathname-3.0.0.tgz", + "integrity": "sha1-mdAiJNPPJjaJvsuzk7xWAxMCXc0=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-invariant/download/tiny-invariant-1.1.0.tgz", + "integrity": "sha1-Y0xfjv3CdxS384bDXmdgmR0jCHU=" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npm.alibaba-inc.com/tiny-warning/download/tiny-warning-1.0.3.tgz", + "integrity": "sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npm.alibaba-inc.com/value-equal/download/value-equal-1.0.1.tgz", + "integrity": "sha1-Hgt5THNMXAyt4XnEN9NW2TGjTWw=" + } + } + } + } +} diff --git a/packages/plugin-components-pane/package.json b/packages/plugin-components-pane/package.json new file mode 100644 index 000000000..a42d14d91 --- /dev/null +++ b/packages/plugin-components-pane/package.json @@ -0,0 +1,58 @@ +{ + "name": "@ali/lowcode-plugin-components-pane", + "version": "0.0.1", + "description": "alibaba lowcode editor component-list plugin", + "files": [ + "demo/", + "es/", + "lib/", + "build/" + ], + "main": "lib/index.tsx", + "module": "es/index.js", + "stylePath": "style.js", + "scripts": { + "start": "build-scripts start", + "build": "build-scripts build --skip-demo", + "prepublishOnly": "npm run prettier && npm run build", + "lint": "eslint --cache --ext .js,.jsx ./", + "prettier": "prettier --write \"./src/**/*.{ts,tsx,js,jsx,ejs,less,css,scss,json}\" " + }, + "keywords": [ + "lowcode", + "editor" + ], + "author": "xiayang.xy", + "dependencies": { + "@ali/iceluna-addon-component-list": "^1.0.11", + "@ali/iceluna-comp-material-show": "^1.0.10", + "@alifd/next": "^1.19.19", + "prop-types": "^15.5.8", + "react": "^16.8.1", + "react-dom": "^16.8.1", + "react-router-dom": "^5.1.2" + }, + "peerDependencies": { + "@ali/lowcode-editor-core": "0.0.1" + }, + "devDependencies": { + "@alib/build-scripts": "^0.1.3", + "@alifd/next": "1.x", + "@ice/spec": "^0.1.1", + "@types/lodash": "^4.14.149", + "@types/react": "^16.9.13", + "@types/react-dom": "^16.9.4", + "build-plugin-component": "^0.2.7-1", + "build-plugin-fusion": "^0.1.0", + "build-plugin-moment-locales": "^0.1.0", + "eslint": "^6.0.1", + "prettier": "^1.19.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/ice-lab/react-materials/tree/master/scaffolds/ice-ts" + }, + "homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-engine-skeleton@0.0.1/build/index.html" +} diff --git a/packages/plugin-components-pane/src/index.scss b/packages/plugin-components-pane/src/index.scss new file mode 100644 index 000000000..73206cc27 --- /dev/null +++ b/packages/plugin-components-pane/src/index.scss @@ -0,0 +1,25 @@ +.lowcode-component-list { + height: 100%; + display: flex; + flex-flow: column; + .title { + height: 40px; + line-height: 39px; + border-bottom: 1px solid $color-line1-1; + padding: 0 8px; + position: relative; + } + .search { + display: block; + width: auto; + margin: 8px 8px 0; + } + .select { + display: block; + margin: 8px 8px 4px; + } + .components-show { + flex: 1 1 0%; + overflow: hidden; + } +} diff --git a/packages/plugin-components-pane/src/index.tsx b/packages/plugin-components-pane/src/index.tsx new file mode 100644 index 000000000..fc88400eb --- /dev/null +++ b/packages/plugin-components-pane/src/index.tsx @@ -0,0 +1,189 @@ +import React, { PureComponent } from 'react'; +import { Icon, Search, Select } from '@alifd/next'; +import MaterialShow from '@ali/iceluna-comp-material-show'; +import { PluginProps } from '@ali/lowcode-editor-core/lib/definitions'; + +import './index.scss'; + +export interface LibrayInfo { + label: string; + value: string; +} + +export interface IState { + loading: boolean; + libs: LibrayInfo[]; + searchKey: string; + currentLib: string; + componentList: object[]; +} + +export default class ComponentListPlugin extends PureComponent< + PluginProps, + IState +> { + static displayName = 'LowcodeComponentListPlugin'; + + constructor(props) { + super(props); + this.state = { + loading: false, + libs: [ + { + label: '全部', + value: 'all', + }, + ], + searchKey: '', + currentLib: 'all', + componentList: [], + }; + } + + componentDidMount(): void { + const { editor } = this.props; + if (editor.assets) { + this.initComponentList(); + } else { + editor.once('editor.ready', this.initComponentList); + } + } + + transformMaterial = (componentList): any => { + return componentList.map(category => { + return { + name: category.title, + items: category.children.map(comp => { + return { + ...comp, + name: comp.componentName, + snippets: comp.snippets.map(snippet => { + return { + name: snippet.title, + screenshot: snippet.screenshot, + code: JSON.stringify(snippet.schema), + }; + }), + }; + }), + }; + }); + }; + + initComponentList = (): void => { + const { editor } = this.props; + const assets = editor.assets || {}; + const list: string[] = []; + const libs: LibrayInfo[] = []; + Object.values(assets.packages).forEach((item): void => { + list.push(item.library); + libs.push({ + label: item.title, + value: item.library, + }); + }); + + if (list.length > 1) { + libs.unshift({ + label: '全部', + value: list.join(','), + }); + } + + const componentList = this.transformMaterial(assets.componentList); + + this.setState({ + libs, + componentList, + currentLib: libs[0] && libs[0].value, + }); + + editor.set('dndHelper', { + handleResourceDragStart: function(ev, tagName, schema) { + // 物料面板中组件snippet的dragStart回调 + // ev: 原始的domEvent;tagName: 组件的描述文案;schema: snippet的schema + if (editor.designer) { + editor.designer.dragon.boost( + { + type: 'nodedata', + data: schema, + }, + ev.nativeEvent, + ); + } + }, + }); + }; + + searchAction = (value: string): void => { + this.setState({ + searchKey: value, + }); + }; + + filterMaterial = (): any => { + const { searchKey, currentLib, componentList } = this.state; + const libs = currentLib.split(','); + return (componentList || []) + .map(cate => { + return { + ...cate, + items: (cate.items || []).filter(item => { + let libFlag = libs.some(lib => lib == item.library); + + let keyFlag = true; + if (searchKey) { + keyFlag = + `${item.name || ''} ${item.title || ''}` + .toLowerCase() + .indexOf(searchKey.trim().toLowerCase()) >= 0; + } else { + keyFlag = item.is_show === undefined || !!(item.is_show == 1); + } + return libFlag && keyFlag; + }), + }; + }) + .filter(cate => { + return cate.items && cate.items.length > 0; + }); + }; + + render(): React.ReactNode { + const { libs, loading, currentLib } = this.state; + return ( +
+
+ + 组件库 +
+ +