commit e8b185d6ff7e306c6ac7ceb81de52d4b2303c17c Author: wwsun Date: Fri Aug 25 09:39:35 2023 +0800 chore: init open source repo diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..4daf72d --- /dev/null +++ b/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": ["eslint-config-ali/typescript/react", "prettier"], + "ignorePatterns": ["**/dist/**/*", "**/lib/**/*", "**/node_modules/**/*", "scripts/**/*"], + "rules": { + "import/no-cycle": "off", + "no-nested-ternary": "off" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a4da66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +dist/ +lib/ +coverage/ + +.umi/ +.umi-production/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9efa52f --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "trailingComma": "all", + "singleQuote": true, + "printWidth": 100 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..765091f --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# tango + +一个基于源码的低代码引擎 diff --git a/apps/docs/.storybook/main.js b/apps/docs/.storybook/main.js new file mode 100644 index 0000000..871b7ea --- /dev/null +++ b/apps/docs/.storybook/main.js @@ -0,0 +1,37 @@ +const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); + +module.exports = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + + addons: ['@storybook/addon-links', '@storybook/addon-essentials'], + + babel: async (config) => { + config.plugins.push('babel-plugin-styled-components'); + return config; + }, + + typescript: { + reactDocgen: false, + }, + + webpack: async (config) => { + if (config.mode === 'production') { + config.devtool = false; + } + + if (config.resolve.plugins === null) { + config.resolve.plugins = []; + } + + config.resolve.plugins.push(new TsconfigPathsPlugin()); + + // @see https://github.com/graphql/graphql-js/issues/1272#issuecomment-393903706 + config.module.rules.push({ + test: /\.mjs$/, + include: /node_modules/, + type: 'javascript/auto', + }); + + return config; + }, +}; diff --git a/apps/docs/.storybook/preview-head.html b/apps/docs/.storybook/preview-head.html new file mode 100644 index 0000000..da9e41f --- /dev/null +++ b/apps/docs/.storybook/preview-head.html @@ -0,0 +1 @@ + diff --git a/apps/docs/.storybook/preview.js b/apps/docs/.storybook/preview.js new file mode 100644 index 0000000..3c64849 --- /dev/null +++ b/apps/docs/.storybook/preview.js @@ -0,0 +1,23 @@ +import React from 'react'; +import { SystemProvider } from 'coral-system'; +import 'antd/dist/antd.css'; + +export const parameters = { + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, +}; + +const withSystemProvider = (Story, context) => { + return ( + + + + ); +}; + +export const decorators = [withSystemProvider]; diff --git a/apps/docs/README.md b/apps/docs/README.md new file mode 100644 index 0000000..75e398c --- /dev/null +++ b/apps/docs/README.md @@ -0,0 +1,3 @@ +# `docs` + +开发调试用的文档 diff --git a/apps/docs/package.json b/apps/docs/package.json new file mode 100644 index 0000000..f68a9cb --- /dev/null +++ b/apps/docs/package.json @@ -0,0 +1,30 @@ +{ + "name": "docs", + "version": "0.0.0", + "private": "true", + "description": "> tango-apps docs", + "license": "MIT", + "author": "wwsun ", + "files": [ + "lib" + ], + "scripts": { + "build": "echo \"skip\"", + "build-storybook": "build-storybook", + "storybook": "start-storybook -p 6008" + }, + "dependencies": { + "@music163/tango-setting-form": "*", + "@music163/tango-ui": "*", + "mobx": "6.9.0", + "mobx-react-lite": "4.0.2" + }, + "devDependencies": { + "@storybook/addon-actions": "^6.5.14", + "@storybook/addon-essentials": "^6.5.14", + "@storybook/addon-links": "^6.5.14", + "@storybook/react": "^6.5.14", + "babel-plugin-styled-components": "^2.0.7", + "tsconfig-paths-webpack-plugin": "^3.5.2" + } +} diff --git a/apps/docs/src/editor.stories.tsx b/apps/docs/src/editor.stories.tsx new file mode 100644 index 0000000..e42ff4e --- /dev/null +++ b/apps/docs/src/editor.stories.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { SingleMonacoEditor } from '@music163/tango-ui'; + +export default { + title: 'Editor', +}; + +const code = ` +import React from 'react'; +import { definePage } from '@music163/tango-boot'; +import { Layout, Page, Section, Button } from '@music/tango-cms'; + +function About(props) { + const { stores } = props; + + const increment = () => { + stores.counter.increment(); + }; + + return ( + + +
+

Counter: {stores.counter.num}

+ +

原生html元素不可拖拽

+
+
+
+ ); +} + +export default definePage(About); +`; + +export function Basic() { + return ( + + + + ); +} diff --git a/apps/docs/src/setting-form.stories.tsx b/apps/docs/src/setting-form.stories.tsx new file mode 100644 index 0000000..9d25238 --- /dev/null +++ b/apps/docs/src/setting-form.stories.tsx @@ -0,0 +1,383 @@ +import React, { useState } from 'react'; +import { EditableVariableTree, FormModel, SettingForm } from '@music163/tango-setting-form'; +import { ComponentPrototypeType, getValue } from '@music163/tango-helpers'; +import { createServices } from '@music163/request'; +import { Box } from 'coral-system'; +import { JsonView } from '@music163/tango-ui'; +import { toJS } from 'mobx'; +import { observer } from 'mobx-react-lite'; +import { Card } from 'antd'; + +export default { + title: 'SettingForm/ Setters', +}; + +const modelVariables = [ + { + title: 'stores', + key: 'stores', + selectable: false, + children: [ + { + title: 'app', + key: 'stores.app', + selectable: false, + children: [ + { title: 'app.title', key: 'stores.app.title', raw: '"hello"' }, + { title: 'app.age', key: 'stores.app.age', raw: '20' }, + { title: 'app.detail', key: 'stores.app.detail', raw: '{ foo: "foo" }' }, + { title: 'app.list', key: 'stores.app.list', type: 'function', raw: '() => {}' }, + ], + }, + { + title: 'user', + key: 'stores.user', + selectable: false, + children: [ + { title: 'name', key: 'stores.user.name' }, + { title: 'age', key: 'stores.user.age' }, + ], + }, + ], + }, + { + title: 'services', + key: 'services', + selectable: false, + children: [ + { + title: 'listUsers', + key: 'services.listUsers', + type: 'function', + }, + ], + }, +]; + +const prototype: ComponentPrototypeType = { + name: 'Test', + exportType: 'namedExport', + title: '测试', + icon: 'icon-test', + type: 'element', + category: 'basic', + package: '@music/tango-cms', + hasChildren: false, + props: [ + { + name: 'text', + title: 'textSetter', + setter: 'textSetter', + }, + { + name: 'router', + title: 'routerSetter', + setter: 'routerSetter', + }, + { + name: 'object', + title: '对象属性', + tip: '一个嵌套的对象', + props: [ + { + name: 'name', + title: 'Name', + setter: 'textSetter', + }, + { + name: 'age', + title: 'Age', + setter: 'numberSetter', + }, + { + name: 'address', + title: 'Address', + props: [ + { + name: 'city', + title: 'City', + setter: 'textSetter', + }, + ], + }, + ], + getVisible: (form) => { + return form.getValue('text') !== 'test'; + }, + }, + { + name: 'expression', + title: 'expressionSetter', + setter: 'expressionSetter', + }, + { + name: 'model', + title: 'modelSetter', + setter: 'modelSetter', + }, + { + name: 'image', + title: 'imageSetter', + setter: 'imageSetter', + }, + { + name: 'css', + title: 'cssSetter', + setter: 'cssSetter', + }, + { + name: 'extra', + title: 'jsxSetter', + setter: 'jsxSetter', + }, + { + name: 'icon', + title: 'iconSetter', + setter: 'iconSetter', + }, + { + name: 'iconType', + title: 'iconTypeSetter', + setter: 'iconTypeSetter', + }, + { + name: 'onClick', + title: 'eventSetter', + tip: '当点击按钮时', + setter: 'eventSetter', + group: 'event', + }, + { + name: 'onClick2', + title: 'actionSetter', + tip: '当点击按钮时', + setter: 'actionSetter', + group: 'event', + }, + { + name: 'disabled', + title: 'boolSetter', + tip: 'disabled 是否禁用', + defaultValue: false, + setter: 'boolSetter', + }, + { + name: 'size', + title: 'choiceSetter', + tip: 'size 按钮的尺寸', + defaultValue: 'medium', + setter: 'choiceSetter', + setterProps: { + options: [ + { label: '小', value: 'small' }, + { label: '中', value: 'medium' }, + { label: '大', value: 'large' }, + ], + }, + }, + { + name: 'color', + title: 'colorSetter', + setter: 'colorSetter', + }, + { + name: 'columns', + title: 'columnSetter', + setter: 'columnSetter', + }, + { + name: 'date', + title: 'dateSetter', + setter: 'dateSetter', + }, + { + name: 'dateRange', + title: 'dateRangeSetter', + setter: 'dateRangeSetter', + }, + { + name: 'enum', + title: 'enumSetter', + setter: 'enumSetter', + setterProps: {}, + }, + { + name: 'time', + title: 'timeSetter', + setter: 'timeSetter', + }, + { + name: 'timeRange', + title: 'timeRangeSetter', + setter: 'timeRangeSetter', + }, + { + name: 'dataSource', + title: 'jsonSetter 不推荐', + setter: 'jsonSetter', + }, + { + name: 'listSetter', + title: 'listSetter', + setter: 'listSetter', + }, + { + name: 'count', + title: 'numberSetter', + setter: 'numberSetter', + }, + { + name: 'options', + title: 'optionSetter', + setter: 'optionSetter', + }, + { + name: 'type', + title: 'pickerSetter', + defaultValue: 'solid', + setter: 'pickerSetter', + setterProps: { + options: [ + { label: '文本型', value: 'text' }, + { label: '实体型', value: 'solid' }, + { label: '幽灵', value: 'ghost' }, + ], + }, + }, + { + name: 'title', + title: 'textSetter', + setter: 'textSetter', + }, + { + name: 'invalid', + title: 'invalidSetter', + setter: 'invalidSetter', + }, + ], +}; + +const deerService = createServices( + { + listMy: { + url: '/my/upload/list', + }, + listFav: { + url: '/my/star/list', + }, + listPub: { + url: '/list', + }, + }, + { + baseURL: 'https://febase-openapi.fn.netease.com/deer/api/deer/pic', + withCredentials: false, // 解决跨域时必须非*问题 + headers: { + 'Febase-Auth': 'dskPVkIRnQ2dEn1DbyxURmUj4rl4BsCh53xFAsJnvVs=', + }, + }, +); + +const context = { + stores: { + app: { + title: 'Sample App', + age: 20, + detail: { + foo: 'foo', + bar: 'bar', + biz: { + x: 'xxx', + }, + }, + newKey: 'xxx', + }, + foo: { + test: 'test string', + }, + }, +}; + +/** + * 表单值预览 + */ +const FormValuePreview = observer(({ model }: { model: FormModel }) => { + const data = toJS(model.values); + return ; +}); + +export function Basic() { + const model = new FormModel( + { + router: 'www.163.com', + expression: { + foo: 'foo', + }, + object: { + name: 'Alice', + }, + image: + 'https://p6.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/13270238619/2cc5/0782/1d6e/009b96bf90c557b9bbde09b1687a2c80.png', + }, + { onChange: console.log }, + ); + + return ( + + + + + + + + + ); +} + +export function NoExpressionSwitch() { + const model = new FormModel({}); + return ( + + + + ); +} + +export function Binding() { + const [data, setData] = useState({}); + return ( + + + selected: {data?.key} + + { + if (!node || !node.key) { + return; + } + if (node.type === 'function') { + return node.raw; + } + const keyPath = node.key.replaceAll('?', ''); + return getValue(context, keyPath); + }} + onSelect={setData} + onAddVariable={console.log} + onSave={console.log} + /> + + ); +} diff --git a/apps/docs/src/ui/chat.stories.tsx b/apps/docs/src/ui/chat.stories.tsx new file mode 100644 index 0000000..8f7e208 --- /dev/null +++ b/apps/docs/src/ui/chat.stories.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { ChatInput } from '@music163/tango-ui'; + +export default { + title: 'UI/ChatGPT', +}; + +export function Basic() { + return ; +} diff --git a/apps/docs/src/ui/copy.stories.tsx b/apps/docs/src/ui/copy.stories.tsx new file mode 100644 index 0000000..b9aa134 --- /dev/null +++ b/apps/docs/src/ui/copy.stories.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { CopyClipboard } from '@music163/tango-ui'; + +export default { + title: 'UI/Copy', +}; + +export function Basic() { + return ( + + {(copied) => } + + ); +} diff --git a/apps/docs/src/ui/input-code.stories.tsx b/apps/docs/src/ui/input-code.stories.tsx new file mode 100644 index 0000000..84b2faa --- /dev/null +++ b/apps/docs/src/ui/input-code.stories.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { IconButton, InputCode } from '@music163/tango-ui'; +import { BlockOutlined } from '@ant-design/icons'; + +export default { + title: 'UI/InputCode', +}; + +const context = { + stores: { + foo: { + loading: false, + action: () => {}, + }, + }, + services: { + list: () => {}, + get: () => {}, + }, +}; + +export function Basic() { + return ( + } />} + autoCompleteContext={{ tango: context }} + /> + ); +} + +export function Inset() { + return ; +} diff --git a/apps/docs/src/ui/input-list.stories.tsx b/apps/docs/src/ui/input-list.stories.tsx new file mode 100644 index 0000000..8ac13ff --- /dev/null +++ b/apps/docs/src/ui/input-list.stories.tsx @@ -0,0 +1,11 @@ +import React, { useState } from 'react'; +import { InputList } from '@music163/tango-ui'; + +export default { + title: 'UI/InputList', +}; + +export function Basic() { + const [value, setValue] = useState([]); + return ; +} diff --git a/apps/docs/src/ui/menu.stories.tsx b/apps/docs/src/ui/menu.stories.tsx new file mode 100644 index 0000000..e28c524 --- /dev/null +++ b/apps/docs/src/ui/menu.stories.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Menu } from '@music163/tango-ui'; + +export default { + title: 'UI/Menu', +}; + +export function Basic() { + return ( + + ); +} diff --git a/apps/docs/src/ui/select-list.stories.tsx b/apps/docs/src/ui/select-list.stories.tsx new file mode 100644 index 0000000..cdb49ba --- /dev/null +++ b/apps/docs/src/ui/select-list.stories.tsx @@ -0,0 +1,35 @@ +import React, { useState } from 'react'; +import { SelectList } from '@music163/tango-ui'; + +export default { + title: 'UI/SelectList', +}; + +const options = [ + { + value: 'alice', + label: 'Alice', + }, + { + value: 'jack', + label: 'Jack', + }, + { + value: 'lucy', + label: 'Lucy', + }, + { + value: 'bob', + label: 'Bob', + }, +]; + +export function Basic() { + const [value, setValue] = useState([]); + return ; +} + +export function UniqueValue() { + const [value, setValue] = useState([]); + return ; +} diff --git a/apps/docs/src/ui/tag-select.stories.tsx b/apps/docs/src/ui/tag-select.stories.tsx new file mode 100644 index 0000000..d88d578 --- /dev/null +++ b/apps/docs/src/ui/tag-select.stories.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { TagSelect } from '@music163/tango-ui'; + +export default { + title: 'UI/TagSelect', +}; + +export function Basic() { + return ( + ({ label: item, value: item }))} + onChange={console.log} + /> + ); +} + +export function SingleMode() { + return ( + ({ label: item, value: item }))} + mode="single" + onChange={console.log} + /> + ); +} diff --git a/apps/docs/src/ui/toggle-button.stories.tsx b/apps/docs/src/ui/toggle-button.stories.tsx new file mode 100644 index 0000000..925b757 --- /dev/null +++ b/apps/docs/src/ui/toggle-button.stories.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { ToggleButton, IconFont } from '@music163/tango-ui'; +import { Box, Flex } from 'coral-system'; + +export default { + title: 'UI/ToggleButton', +}; + +export function Basic() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json new file mode 100644 index 0000000..e068225 --- /dev/null +++ b/apps/docs/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "target": "ES2022", + "module": "esnext" + } +} diff --git a/apps/docs/yarn-error.log b/apps/docs/yarn-error.log new file mode 100644 index 0000000..dd76d39 --- /dev/null +++ b/apps/docs/yarn-error.log @@ -0,0 +1,17712 @@ +Arguments: + /Users/wwsun/.nvm/versions/node/v16.19.1/bin/node /Users/wwsun/.nvm/versions/node/v16.19.1/bin/yarn add --ignore-workspace-root-check -D react react-dom + +PATH: + /Users/wwsun/.npm/_npx/bc7e1e37fcb46ffc/node_modules/.bin:/Users/wwsun/projj/g.hz.netease.com/22222/tango/tango-apps/apps/docs/node_modules/.bin:/Users/wwsun/projj/g.hz.netease.com/22222/tango/tango-apps/apps/node_modules/.bin:/Users/wwsun/projj/g.hz.netease.com/22222/tango/tango-apps/node_modules/.bin:/Users/wwsun/projj/g.hz.netease.com/22222/tango/node_modules/.bin:/Users/wwsun/projj/g.hz.netease.com/22222/node_modules/.bin:/Users/wwsun/projj/g.hz.netease.com/node_modules/.bin:/Users/wwsun/projj/node_modules/.bin:/Users/wwsun/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/wwsun/.nvm/versions/node/v16.19.1/bin:/Users/wwsun/bin:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin + +Yarn version: + 1.22.19 + +Node version: + 16.19.1 + +Platform: + darwin x64 + +Trace: + Invariant Violation: expected workspace package to exist for "@types/react-dom" + at invariant (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:2318:15) + at _loop2 (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:91040:9) + at PackageHoister.init (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:91099:19) + at PackageLinker.getFlatHoistedTree (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:48549:20) + at PackageLinker. (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:48560:27) + at Generator.next () + at step (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:310:30) + at /Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:328:14 + at new Promise () + at new F (/Users/wwsun/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:5305:28) + +npm manifest: + { + "name": "docs", + "version": "0.0.0", + "private": "true", + "description": "> tango-apps docs", + "homepage": "", + "repository": { + "type": "git", + "url": "ssh://git@g.hz.netease.com/tango/tango-apps.git" + }, + "license": "ISC", + "author": "wwsun ", + "files": [ + "lib" + ], + "scripts": { + "build": "echo \"skip\"", + "build-storybook": "storybook build", + "storybook": "storybook dev -p 6008" + }, + "dependencies": { + "@music/tango-apps-editor": "*", + "@music/tango-apps-guide-form": "*", + "@music/tango-apps-setting-form": "*", + "@music/tango-apps-ui": "*", + "@music/tango-cms": "1.25.6", + "mobx": "^6.9.0", + "mobx-react-lite": "^4.0.2" + }, + "devDependencies": { + "@storybook/addon-actions": "^7.0.6", + "@storybook/addon-essentials": "^7.0.6", + "@storybook/addon-links": "^7.0.6", + "@storybook/react": "^7.0.6", + "babel-plugin-styled-components": "^2.0.7", + "tsconfig-paths-webpack-plugin": "^3.5.2" + } + } + +yarn manifest: + No manifest + +Lockfile: + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + # yarn lockfile v1 + + + "@ampproject/remapping@^2.2.0": + version "2.2.0" + resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + + "@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + + "@ant-design/icons-svg@^4.2.1": + version "4.2.1" + resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== + + "@ant-design/icons@^4.7.0", "@ant-design/icons@^4.8.0": + version "4.8.0" + resolved "https://registry.npmmirror.com/@ant-design/icons/-/icons-4.8.0.tgz#3084e2bb494cac3dad6c0392f77c1efc90ee1fa4" + integrity sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-util "^5.9.4" + + "@ant-design/react-slick@~0.29.1": + version "0.29.2" + resolved "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-0.29.2.tgz#53e6a7920ea3562eebb304c15a7fc2d7e619d29c" + integrity sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.21" + resize-observer-polyfill "^1.5.1" + + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + + "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" + integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== + + "@babel/compat-data@^7.21.4": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== + + "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/core/-/core-7.21.3.tgz#cf1c877284a469da5d1ce1d1e53665253fae712e" + integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.3" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.3" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + + "@babel/core@^7.20.2": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.4" + "@babel/types" "^7.21.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + + "@babel/generator@^7.21.3", "@babel/generator@^7.7.2": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.21.3.tgz#232359d0874b392df04045d72ce2fd9bb5045fce" + integrity sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA== + dependencies: + "@babel/types" "^7.21.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + + "@babel/generator@^7.21.4", "@babel/generator@~7.21.1": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== + dependencies: + "@babel/types" "^7.21.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + + "@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + + "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + + "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + + "@babel/helper-compilation-targets@^7.21.4": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== + dependencies: + "@babel/compat-data" "^7.21.4" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" + integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.3.1" + + "@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + + "@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + + "@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + + "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + + "@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + + "@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + + "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + + "@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + + "@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + + "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + + "@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + + "@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + + "@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + + "@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + + "@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + + "@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + + "@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" + integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== + + "@babel/parser@^7.21.4", "@babel/parser@~7.21.2": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== + + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + + "@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + + "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + + "@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + + "@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + + "@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + + "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + + "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + + "@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + + "@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + + "@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + + "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + + "@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + + "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + + "@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + + "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + + "@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + + "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + + "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + + "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + + "@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + + "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + + "@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.20.0" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + + "@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + + "@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-block-scoping@^7.20.2": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-classes@^7.20.2": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + + "@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" + + "@babel/plugin-transform-destructuring@^7.20.2": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + + "@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-for-of@^7.18.8": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" + integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + + "@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + + "@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.21.2" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== + dependencies: + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + + "@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" + + "@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + + "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + + "@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + + "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.19.0": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" + integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.21.0" + + "@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + + "@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + + "@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + + "@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + + "@babel/plugin-transform-typescript@^7.21.0": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + + "@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + + "@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + + "@babel/preset-env@^7.19.3": + version "7.20.2" + resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" + + "@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + + "@babel/preset-react@^7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + + "@babel/preset-typescript@^7.18.6": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz#bcbbca513e8213691fe5d4b23d9251e01f00ebff" + integrity sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-transform-typescript" "^7.21.0" + + "@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + + "@babel/runtime-corejs2@^7.4.4": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.21.0.tgz#79374a14846b38764077089707566066721bcc16" + integrity sha512-hVFDLYkuthnvQwWoOniPSq+RWyQTiimVdMXQJujoiSX8maFh/62+qRImGkRpeRflsVXXSMFS4HgNe3X9fuw5ww== + dependencies: + core-js "^2.6.12" + regenerator-runtime "^0.13.11" + + "@babel/runtime@7.18.6": + version "7.18.6" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" + integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== + dependencies: + regenerator-runtime "^0.13.4" + + "@babel/runtime@7.18.9": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + + "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.1", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.21.0" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + + "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.20.7" + resolved "https://registry.npmmirror.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + + "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" + integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.3" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.3" + "@babel/types" "^7.21.3" + debug "^4.1.0" + globals "^11.1.0" + + "@babel/traverse@^7.21.4", "@babel/traverse@~7.21.2": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" + debug "^4.1.0" + globals "^11.1.0" + + "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.21.3" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.21.3.tgz#4865a5357ce40f64e3400b0f3b737dc6d4f64d05" + integrity sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + + "@babel/types@^7.21.4", "@babel/types@~7.21.2": + version "7.21.4" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + + "@base2/pretty-print-object@1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== + + "@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + + "@bloomberg/record-tuple-polyfill@0.0.3": + version "0.0.3" + resolved "https://registry.npmmirror.com/@bloomberg/record-tuple-polyfill/-/record-tuple-polyfill-0.0.3.tgz#0b03d18b88a30894caab14abd669b1cbbf47b843" + integrity sha512-sBnCqW0nqofE47mxFnw+lvx6kzsQstwaQMVkh66qm/A6IlsnH7WsyGuVXTou8RF2wL4W7ybOoHPvP2WgIo6rhQ== + + "@codemirror/autocomplete@6.4.2", "@codemirror/autocomplete@^6.0.0": + version "6.4.2" + resolved "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.4.2.tgz#938b25223bd21f97b2a6d85474643355f98b505b" + integrity sha512-8WE2xp+D0MpWEv5lZ6zPW1/tf4AGb358T5GWYiKEuCP8MvFfT3tH2mIF9Y2yr2e3KbHuSvsVhosiEyqCpiJhZQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.6.0" + "@lezer/common" "^1.0.0" + + "@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": + version "6.2.2" + resolved "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.2.2.tgz#437d9ba275107dbc629f0bfa3b150e0e43f2a218" + integrity sha512-s9lPVW7TxXrI/7voZ+HmD/yiAlwAYn9PH5SUVSUhsxXHhv4yl5eZ3KLntSoTynfdgVYM0oIpccQEWRBQgmNZyw== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.2.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + + "@codemirror/lang-javascript@^6.1.2": + version "6.1.4" + resolved "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.1.4.tgz#8a41f4d213e1143b4eef6f65f8b77b349aaf894c" + integrity sha512-OxLf7OfOZBTMRMi6BO/F72MNGmgOd9B0vetOLvHsDACFXayBzW8fm8aWnDM0yuy68wTK03MBf4HbjSBNRG5q7A== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.6.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/javascript" "^1.0.0" + + "@codemirror/language@^6.0.0", "@codemirror/language@^6.6.0": + version "6.6.0" + resolved "https://registry.npmmirror.com/@codemirror/language/-/language-6.6.0.tgz#2204407174a38a68053715c19e28ad61f491779f" + integrity sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + style-mod "^4.0.0" + + "@codemirror/lint@^6.0.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.2.0.tgz#25cdab7425fcda1b38a9d63f230f833c8b6b369f" + integrity sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + crelt "^1.0.5" + + "@codemirror/search@^6.0.0", "@codemirror/search@^6.2.3": + version "6.3.0" + resolved "https://registry.npmmirror.com/@codemirror/search/-/search-6.3.0.tgz#d48b2d636fc7474613e240ba8e56c4c5e6e51822" + integrity sha512-rBhZxzT34CarfhgCZGhaLBScABDN3iqJxixzNuINp9lrb3lzm0nTpR77G1VrxGO3HOGK7j62jcJftQM7eCOIuw== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + crelt "^1.0.5" + + "@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@codemirror/state/-/state-6.2.0.tgz#a0fb08403ced8c2a68d1d0acee926bd20be922f2" + integrity sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA== + + "@codemirror/theme-one-dark@^6.0.0": + version "6.1.1" + resolved "https://registry.npmmirror.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.1.tgz#76600555cbb314c495216f018f75b0c28daff158" + integrity sha512-+CfzmScfJuD6uDF5bHJkAjWTQ2QAAHxODCPxUEgcImDYcJLT+4l5vLnBHmDVv46kCC5uUJGMrBJct2Z6JbvqyQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/highlight" "^1.0.0" + + "@codemirror/view@^6.0.0", "@codemirror/view@^6.6.0": + version "6.9.3" + resolved "https://registry.npmmirror.com/@codemirror/view/-/view-6.9.3.tgz#4475dc0ff5d9a55f8144ad7484e7e17416861cce" + integrity sha512-BJ5mvEIhFM+SrNwc5X8pLIvMM9ffjkviVbxpg84Xk2OE8ZyKaEbId8kX+nAYEEso7+qnbwsXe1bkAHsasebMow== + dependencies: + "@codemirror/state" "^6.1.4" + style-mod "^4.0.0" + w3c-keyname "^2.2.4" + + "@commitlint/cli@^17.5.0": + version "17.5.0" + resolved "https://registry.npmmirror.com/@commitlint/cli/-/cli-17.5.0.tgz#045bf46fc38bb4246da30b462d8db66f48c28f9a" + integrity sha512-yNW3+M7UM1ioK28LKTrryIVB5qGpXlEv8+rJQiWPMZNayy9/1XR5+lL8qBTNlgopYtZWWnIm5RETcAN29ZTL/A== + dependencies: + "@commitlint/format" "^17.4.4" + "@commitlint/lint" "^17.4.4" + "@commitlint/load" "^17.5.0" + "@commitlint/read" "^17.4.4" + "@commitlint/types" "^17.4.4" + execa "^5.0.0" + lodash.isfunction "^3.0.9" + resolve-from "5.0.0" + resolve-global "1.0.0" + yargs "^17.0.0" + + "@commitlint/config-conventional@^17.3.0": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/config-conventional/-/config-conventional-17.4.4.tgz#f30b1e5b2e48ce5799a483c200c52f218a98efcc" + integrity sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ== + dependencies: + conventional-changelog-conventionalcommits "^5.0.0" + + "@commitlint/config-validator@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/config-validator/-/config-validator-17.4.4.tgz#d0742705719559a101d2ee49c0c514044af6d64d" + integrity sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg== + dependencies: + "@commitlint/types" "^17.4.4" + ajv "^8.11.0" + + "@commitlint/ensure@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/ensure/-/ensure-17.4.4.tgz#a36e7719bdb9c2b86c8b8c2e852b463a7bfda5fa" + integrity sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g== + dependencies: + "@commitlint/types" "^17.4.4" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.upperfirst "^4.3.1" + + "@commitlint/execute-rule@^17.4.0": + version "17.4.0" + resolved "https://registry.npmmirror.com/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz#4518e77958893d0a5835babe65bf87e2638f6939" + integrity sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA== + + "@commitlint/format@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/format/-/format-17.4.4.tgz#0f6e1b4d7a301c7b1dfd4b6334edd97fc050b9f5" + integrity sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ== + dependencies: + "@commitlint/types" "^17.4.4" + chalk "^4.1.0" + + "@commitlint/is-ignored@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/is-ignored/-/is-ignored-17.4.4.tgz#82e03f1abe2de2c0c8c162a250b8d466225e922b" + integrity sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw== + dependencies: + "@commitlint/types" "^17.4.4" + semver "7.3.8" + + "@commitlint/lint@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/lint/-/lint-17.4.4.tgz#0ecd70b44ec5f4823c2e00e0c4b04ebd41d42856" + integrity sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw== + dependencies: + "@commitlint/is-ignored" "^17.4.4" + "@commitlint/parse" "^17.4.4" + "@commitlint/rules" "^17.4.4" + "@commitlint/types" "^17.4.4" + + "@commitlint/load@^17.5.0": + version "17.5.0" + resolved "https://registry.npmmirror.com/@commitlint/load/-/load-17.5.0.tgz#be45dbbb50aaf5eb7e8e940e1e0d6171d1426bab" + integrity sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q== + dependencies: + "@commitlint/config-validator" "^17.4.4" + "@commitlint/execute-rule" "^17.4.0" + "@commitlint/resolve-extends" "^17.4.4" + "@commitlint/types" "^17.4.4" + "@types/node" "*" + chalk "^4.1.0" + cosmiconfig "^8.0.0" + cosmiconfig-typescript-loader "^4.0.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" + resolve-from "^5.0.0" + ts-node "^10.8.1" + typescript "^4.6.4 || ^5.0.0" + + "@commitlint/message@^17.4.2": + version "17.4.2" + resolved "https://registry.npmmirror.com/@commitlint/message/-/message-17.4.2.tgz#f4753a79701ad6db6db21f69076e34de6580e22c" + integrity sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q== + + "@commitlint/parse@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/parse/-/parse-17.4.4.tgz#8311b12f2b730de6ea0679ae2a37b386bcc5b04b" + integrity sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg== + dependencies: + "@commitlint/types" "^17.4.4" + conventional-changelog-angular "^5.0.11" + conventional-commits-parser "^3.2.2" + + "@commitlint/read@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/read/-/read-17.4.4.tgz#de6ec00aad827764153009aa54517e3df2154555" + integrity sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA== + dependencies: + "@commitlint/top-level" "^17.4.0" + "@commitlint/types" "^17.4.4" + fs-extra "^11.0.0" + git-raw-commits "^2.0.0" + minimist "^1.2.6" + + "@commitlint/resolve-extends@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz#8f931467dea8c43b9fe38373e303f7c220de6fdc" + integrity sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A== + dependencies: + "@commitlint/config-validator" "^17.4.4" + "@commitlint/types" "^17.4.4" + import-fresh "^3.0.0" + lodash.mergewith "^4.6.2" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + + "@commitlint/rules@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/rules/-/rules-17.4.4.tgz#9b33f41e5eb529f916396bac7c62e61f0edd6791" + integrity sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ== + dependencies: + "@commitlint/ensure" "^17.4.4" + "@commitlint/message" "^17.4.2" + "@commitlint/to-lines" "^17.4.0" + "@commitlint/types" "^17.4.4" + execa "^5.0.0" + + "@commitlint/to-lines@^17.4.0": + version "17.4.0" + resolved "https://registry.npmmirror.com/@commitlint/to-lines/-/to-lines-17.4.0.tgz#9bd02e911e7d4eab3fb4a50376c4c6d331e10d8d" + integrity sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg== + + "@commitlint/top-level@^17.4.0": + version "17.4.0" + resolved "https://registry.npmmirror.com/@commitlint/top-level/-/top-level-17.4.0.tgz#540cac8290044cf846fbdd99f5cc51e8ac5f27d6" + integrity sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g== + dependencies: + find-up "^5.0.0" + + "@commitlint/types@^17.4.4": + version "17.4.4" + resolved "https://registry.npmmirror.com/@commitlint/types/-/types-17.4.4.tgz#1416df936e9aad0d6a7bbc979ecc31e55dade662" + integrity sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ== + dependencies: + chalk "^4.1.0" + + "@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + + "@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.npmmirror.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + + "@ctrl/tinycolor@^3.4.0": + version "3.6.0" + resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8" + integrity sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ== + + "@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + + "@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + + "@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + + "@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.npmmirror.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + + "@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + + "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.npmmirror.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + + "@esbuild/android-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" + integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== + + "@esbuild/android-arm@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" + integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== + + "@esbuild/android-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" + integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== + + "@esbuild/darwin-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" + integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== + + "@esbuild/darwin-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" + integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== + + "@esbuild/freebsd-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" + integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== + + "@esbuild/freebsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" + integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== + + "@esbuild/linux-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" + integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== + + "@esbuild/linux-arm@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" + integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== + + "@esbuild/linux-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" + integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== + + "@esbuild/linux-loong64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" + integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== + + "@esbuild/linux-mips64el@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" + integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== + + "@esbuild/linux-ppc64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" + integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== + + "@esbuild/linux-riscv64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" + integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== + + "@esbuild/linux-s390x@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" + integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== + + "@esbuild/linux-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" + integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== + + "@esbuild/netbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" + integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== + + "@esbuild/openbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" + integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== + + "@esbuild/sunos-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" + integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== + + "@esbuild/win32-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" + integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== + + "@esbuild/win32-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" + integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== + + "@esbuild/win32-x64@0.17.18": + version "0.17.18" + resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" + integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== + + "@eslint-community/eslint-utils@^4.2.0": + version "4.3.0" + resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a" + integrity sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA== + dependencies: + eslint-visitor-keys "^3.3.0" + + "@eslint-community/regexpp@^4.4.0": + version "4.4.0" + resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403" + integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ== + + "@eslint/eslintrc@^2.0.1": + version "2.0.1" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" + integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + + "@eslint/js@8.36.0": + version "8.36.0" + resolved "https://registry.npmmirror.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" + integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== + + "@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + + "@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + + "@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + + "@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + + "@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.npmmirror.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + + "@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.npmmirror.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + + "@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.npmmirror.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + + "@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmmirror.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + + "@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + + "@jest/console@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" + integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + + "@jest/core@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" + integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/reporters" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.5.0" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-resolve-dependencies "^29.5.0" + jest-runner "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + jest-watcher "^29.5.0" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + + "@jest/environment@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" + integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== + dependencies: + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + + "@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + + "@jest/expect@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" + integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== + dependencies: + expect "^29.5.0" + jest-snapshot "^29.5.0" + + "@jest/fake-timers@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" + integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== + dependencies: + "@jest/types" "^29.5.0" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-util "^29.5.0" + + "@jest/globals@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" + integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/types" "^29.5.0" + jest-mock "^29.5.0" + + "@jest/reporters@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" + integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + jest-worker "^29.5.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + + "@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.npmmirror.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + + "@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://registry.npmmirror.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + + "@jest/test-result@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" + integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + + "@jest/test-sequencer@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" + integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== + dependencies: + "@jest/test-result" "^29.5.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + slash "^3.0.0" + + "@jest/transform@^29.3.1", "@jest/transform@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + + "@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.npmmirror.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + + "@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + + "@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + + "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + + "@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + + "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + + "@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + + "@juggle/resize-observer@^3.3.1": + version "3.4.0" + resolved "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" + integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== + + "@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.npmmirror.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + dependencies: + debug "^4.1.1" + + "@kwsites/promise-deferred@^1.1.1": + version "1.1.1" + resolved "https://registry.npmmirror.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" + integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + + "@lerna/child-process@6.6.1": + version "6.6.1" + resolved "https://registry.npmmirror.com/@lerna/child-process/-/child-process-6.6.1.tgz#e31bc411ad6d474cf7b676904da6f77f58fd64eb" + integrity sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ== + dependencies: + chalk "^4.1.0" + execa "^5.0.0" + strong-log-transformer "^2.1.0" + + "@lerna/create@6.6.1": + version "6.6.1" + resolved "https://registry.npmmirror.com/@lerna/create/-/create-6.6.1.tgz#fc20f09e10b612d424a576775ad6eefe6aa96517" + integrity sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA== + dependencies: + "@lerna/child-process" "6.6.1" + dedent "^0.7.0" + fs-extra "^9.1.0" + init-package-json "^3.0.2" + npm-package-arg "8.1.1" + p-reduce "^2.1.0" + pacote "^13.6.1" + pify "^5.0.0" + semver "^7.3.4" + slash "^3.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + yargs-parser "20.2.4" + + "@lerna/legacy-package-management@6.6.1": + version "6.6.1" + resolved "https://registry.npmmirror.com/@lerna/legacy-package-management/-/legacy-package-management-6.6.1.tgz#1f44af40098b9396a4f698514ff2b87016b1ee3d" + integrity sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q== + dependencies: + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + execa "5.0.0" + file-url "3.0.0" + find-up "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + inquirer "8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + libnpmpublish "6.0.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "14.0.3" + npmlog "6.0.2" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-waterfall "2.1.1" + pacote "13.6.2" + pify "5.0.0" + pretty-format "29.4.3" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + semver "7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + tempy "1.0.0" + upath "2.0.1" + uuid "8.3.2" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + + "@lezer/common@^1.0.0": + version "1.0.2" + resolved "https://registry.npmmirror.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087" + integrity sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng== + + "@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3": + version "1.1.3" + resolved "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.1.3.tgz#bf5a36c2ee227f526d74997ac91f7777e29bd25d" + integrity sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw== + dependencies: + "@lezer/common" "^1.0.0" + + "@lezer/javascript@^1.0.0": + version "1.4.1" + resolved "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.1.tgz#97a15042c76b5979af6a069fac83cf6485628cbf" + integrity sha512-Hqx36DJeYhKtdpc7wBYPR0XF56ZzIp0IkMO/zNNj80xcaFOV4Oj/P7TQc/8k2TxNhzl7tV5tXS8ZOCPbT4L3nA== + dependencies: + "@lezer/highlight" "^1.1.3" + "@lezer/lr" "^1.3.0" + + "@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0": + version "1.3.3" + resolved "https://registry.npmmirror.com/@lezer/lr/-/lr-1.3.3.tgz#0ac6c889f1235874f33c45a1b9785d7054f60708" + integrity sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w== + dependencies: + "@lezer/common" "^1.0.0" + + "@mdx-js/react@^2.1.5": + version "2.3.0" + resolved "https://registry.npmmirror.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3" + integrity sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g== + dependencies: + "@types/mdx" "^2.0.0" + "@types/react" ">=16" + + "@monaco-editor/loader@^1.3.1": + version "1.3.2" + resolved "https://registry.npmmirror.com/@monaco-editor/loader/-/loader-1.3.2.tgz#04effbb87052d19cd7d3c9d81c0635490f9bb6d8" + integrity sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g== + dependencies: + state-local "^1.0.6" + + "@music/charts@^1.8.8": + version "1.8.9" + resolved "http://rnpm.hz.netease.com/@music/charts/download/@music/charts-1.8.9.tgz#25fd8392b581b9116f765e8ab21b1c3b71413015" + integrity sha1-Jf2DkrWBuRFvdl6KshscO3FBMBU= + dependencies: + "@ant-design/colors" "^6.0.0" + "@music/tango-apps-shared" "^1.0.1" + "@types/lodash-es" "^4.17.5" + dayjs "^1.11.0" + echarts "^5.4.0" + echarts-wordcloud "^2.0.0" + lodash-es "^4.17.21" + resize-observer-polyfill "^1.5.1" + + "@music/ct-pc-paopaocaller@^1.2.7": + version "1.2.7" + resolved "http://rnpm.hz.netease.com/@music/ct-pc-paopaocaller/download/@music/ct-pc-paopaocaller-1.2.7.tgz#3428b68438ccf6fc5031bb73348a9ce046c361c7" + integrity sha1-NCi2hDjM9vxQMbtzNIqc4EbDYcc= + dependencies: + "@babel/runtime" "^7.15.3" + + "@music/design-tokens@^1.0.2": + version "1.0.2" + resolved "http://rnpm.hz.netease.com/@music/design-tokens/download/@music/design-tokens-1.0.2.tgz#80c9cebd5acede21dcb7512e1b77607a1a819500" + integrity sha1-gMnOvVrO3iHct1EuG3dgehqBlQA= + + "@music/encrypt-fetch@1.0.x || ^2.1.0 || ^3.0.1", "@music/encrypt-fetch@^3.4.3": + version "3.4.5" + resolved "http://rnpm.hz.netease.com/@music/encrypt-fetch/download/@music/encrypt-fetch-3.4.5.tgz#db3459d1dc94941a662caeb77740e3b002d143ff" + integrity sha1-2zRZ0dyUlBpmLK63d0DjsALRQ/8= + dependencies: + "@babel/runtime" "^7.15.3" + "@music/mobile-env" "^2.4.11" + "@music/network-fetch" "^2.1.1" + "@music/tl-ef-util" "0.x || ^1.0.0" + abortcontroller-polyfill "^1.7.3" + node-fetch "^2.3.0" + whatwg-fetch "^3.6.2" + + "@music/eslint-config-tango@^1.0.2": + version "1.0.2" + resolved "http://rnpm.hz.netease.com/@music/eslint-config-tango/download/@music/eslint-config-tango-1.0.2.tgz#0614192b69727689cb513eebfe04bbb5ae6f15cb" + integrity sha1-BhQZK2lydonLUT7r/gS7ta5vFcs= + dependencies: + eslint-config-ali "^14.0.2" + eslint-config-prettier "^8.6.0" + + "@music/icons@1.x", "@music/icons@^1.0.0", "@music/icons@^1.2.0", "@music/icons@^1.2.1": + version "1.2.1" + resolved "http://rnpm.hz.netease.com/@music/icons/download/@music/icons-1.2.1.tgz#5c73d06499ce626bd163f8d0af2b7c4af2e04e92" + integrity sha1-XHPQZJnOYmvRY/jQryt8SvLgTpI= + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons" "^4.8.0" + rc-util "^5.17.0" + + "@music/image@^1.0.1": + version "1.1.1" + resolved "http://rnpm.hz.netease.com/@music/image/download/@music/image-1.1.1.tgz#0b8acd1db5720dc8920e9f38cdf62fb1450d0c7d" + integrity sha1-C4rNHbVyDciSDp84zfYvsUUNDH0= + dependencies: + "@music/mobile-image" "^2.2.3" + + "@music/mobile-env@^2.4.11", "@music/mobile-env@^2.4.30", "@music/mobile-env@^2.4.7": + version "2.4.32" + resolved "http://rnpm.hz.netease.com/@music/mobile-env/download/@music/mobile-env-2.4.32.tgz#f5251910dcedf858a82427f5179ccb5650efd33d" + integrity sha1-9SUZENzt+FioJCf1F5zLVlDv0z0= + + "@music/mobile-i18n@^3.0.11": + version "3.0.11" + resolved "http://rnpm.hz.netease.com/@music/mobile-i18n/download/@music/mobile-i18n-3.0.11.tgz#e9bde01a971515e8302ea969ca2f9caabb4fad5f" + integrity sha1-6b3gGpcVFegwLqlpyi+cqrtPrV8= + dependencies: + "@music/tl-i18next-nodecache-backend" "0.1.0-beta.1" + i18next "^20.1.0" + i18next-chained-backend "^3.0.2" + i18next-http-backend "^1.3.1" + i18next-localstorage-backend "^3.1.3" + i18next-resources-to-backend "^1.0.0" + publish "^0.6.0" + react-i18next "^11.8.12" + + "@music/mobile-image@^2.2.3", "@music/mobile-image@^2.2.5": + version "2.2.6" + resolved "http://rnpm.hz.netease.com/@music/mobile-image/download/@music/mobile-image-2.2.6.tgz#5e26b7abb9c2eb9b363ff0384b5e3050ceb214e9" + integrity sha1-Xia3q7nC65s2P/A4S14wUM6yFOk= + dependencies: + "@music/mobile-url" "^4.0.0" + + "@music/mobile-log@^3.0.0": + version "3.2.2" + resolved "http://rnpm.hz.netease.com/@music/mobile-log/download/@music/mobile-log-3.2.2.tgz#daec16b283cbdb2fccc2d3a125e30a2cb31e4d8f" + integrity sha1-2uwWsoPL2y/MwtOhJeMKLLMeTY8= + dependencies: + "@music/encrypt-fetch" "1.0.x || ^2.1.0 || ^3.0.1" + + "@music/mobile-toast@^2.0.0", "@music/mobile-toast@^2.1.9": + version "2.1.13" + resolved "http://rnpm.hz.netease.com/@music/mobile-toast/download/@music/mobile-toast-2.1.13.tgz#94ce4fc71dfe263946bb5a2e6621a90f0e1d95ad" + integrity sha1-lM5Pxx3+JjlGu1ouZiGpDw4dla0= + dependencies: + "@music/mrcless" "^0.1.0" + react-transition-group "^4.4.5" + + "@music/mobile-upload@^1.1.5": + version "1.1.6" + resolved "http://rnpm.hz.netease.com/@music/mobile-upload/download/@music/mobile-upload-1.1.6.tgz#101488c2abb2bfc0feca0367ce8e11004b9603d0" + integrity sha1-EBSIwquyv8D+ygNnzo4RAEuWA9A= + dependencies: + "@music/mobile-image" "^2.2.5" + "@music/mobile-toast" "^2.0.0" + "@music/nos-uploader" "^2.8.4" + just-compare "^1.3.0" + omit.js "^1.0.2" + + "@music/mobile-url@^4.0.0": + version "4.0.6" + resolved "http://rnpm.hz.netease.com/@music/mobile-url/download/@music/mobile-url-4.0.6.tgz#dcdff721e1e8f54b5f8f67b2b5ca134a9e94273e" + integrity sha1-3N/3IeHo9Utfj2eytcoTSp6UJz4= + + "@music/mrcless@^0.1.0": + version "0.1.2" + resolved "http://rnpm.hz.netease.com/@music/mrcless/download/@music/mrcless-0.1.2.tgz#03a31b42677acdbfc392bbf3bd9e511f97bd9414" + integrity sha1-A6MbQmd6zb/DkrvzvZ5RH5e9lBQ= + + "@music/network-fetch@^2.1.1", "@music/network-fetch@^2.1.3": + version "2.1.3" + resolved "http://rnpm.hz.netease.com/@music/network-fetch/download/@music/network-fetch-2.1.3.tgz#28998723d24b61d134db5ae3dd3b3ad08fe5ded5" + integrity sha1-KJmHI9JLYdE021rj3Ts60I/l3tU= + dependencies: + "@babel/runtime" "^7.12.5" + "@music/mobile-env" "^2.4.7" + "@music/tl-ef-util" "0.x || ^1.0.0" + + "@music/nos-uploader@^2.8.4", "@music/nos-uploader@^2.8.5": + version "2.8.5" + resolved "http://rnpm.hz.netease.com/@music/nos-uploader/download/@music/nos-uploader-2.8.5.tgz#ad44b3778c827ba27265cc0f09448878f3f1bfe2" + integrity sha1-rUSzd4yCe6JyZcwPCUSIePPxv+I= + dependencies: + "@babel/runtime-corejs2" "^7.4.4" + "@music/mobile-log" "^3.0.0" + spark-md5 "^3.0.0" + unfetch "^4.1.0" + + "@music/one-theme-blue@^1.0.13": + version "1.0.13" + resolved "http://rnpm.hz.netease.com/@music/one-theme-blue/download/@music/one-theme-blue-1.0.13.tgz#0359db4e5cd89739a9fb1b46ad62e1e48f47ffbd" + integrity sha1-A1nbTlzYlzmp+xtGrWLh5I9H/70= + dependencies: + "@music/design-tokens" "^1.0.2" + antd "^4.22.3" + + "@music/one-theme-red@^1.0.14": + version "1.0.14" + resolved "http://rnpm.hz.netease.com/@music/one-theme-red/download/@music/one-theme-red-1.0.14.tgz#ac202e8a5fe30b987387d371af4091b2ec064a8f" + integrity sha1-rCAuil/jC5hzh9Nxr0CRsuwGSo8= + dependencies: + "@music/design-tokens" "^1.0.2" + antd "^4.22.3" + + "@music/one@^1.17.0", "@music/one@^1.19.6": + version "1.19.6" + resolved "http://rnpm.hz.netease.com/@music/one/download/@music/one-1.19.6.tgz#c1c97fe62678d9d98c7c050df830aca54b45de34" + integrity sha1-wcl/5iZ42dmMfAUN+DCspUtF3jQ= + dependencies: + "@babel/runtime" "^7.20.1" + "@music/ct-pc-paopaocaller" "^1.2.7" + "@music/icons" "^1.2.1" + "@music/nos-uploader" "^2.8.5" + "@music/one-theme-blue" "^1.0.13" + "@music/one-theme-red" "^1.0.14" + "@music/use-hooks" "^1.0.1" + ahooks "^3.7.2" + antd "^4.22.3" + classnames "^2.3.1" + coral-system "^1.0.4" + hoist-non-react-statics "^3.3.2" + lodash.debounce "^4.0.8" + moment "^2.29.4" + rc-upload "^4.3.4" + rc-util "^5.22.5" + react-color "^2.19.3" + react-is "^18.2.0" + styled-components "^5.3.5" + + "@music/popo@^0.3.0": + version "0.3.0" + resolved "http://rnpm.hz.netease.com/@music/popo/download/@music/popo-0.3.0.tgz#2ccf5e6597bb96261a0bf5a9c2c436e56b68da96" + integrity sha1-LM9eZZe7liYaC/WpwsQ25Wto2pY= + dependencies: + simple-git "^3.7.1" + urllib "^2.38.0" + + "@music/request@^1.7.3", "@music/request@^1.7.5": + version "1.7.5" + resolved "http://rnpm.hz.netease.com/@music/request/download/@music/request-1.7.5.tgz#63c0c858adfcc2b104c7d6a6e1a7776cb8820fb3" + integrity sha1-Y8DIWK38wrEEx9am4ad3bLiCD7M= + dependencies: + axios "^0.27.2" + axios-hooks "^3.0.1" + lru-cache "^5.1.1" + + "@music/tango-apps-context@^1.2.1": + version "1.2.1" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-context/download/@music/tango-apps-context-1.2.1.tgz#0f6d055014d8940007f1fe787235d7e438ea7a48" + integrity sha1-D20FUBTYlAAH8f54cjXX5Djqekg= + dependencies: + "@music/tango-apps-core" "^1.10.1" + "@music/tango-apps-shared" "^1.9.0" + mobx-react-lite "^4.0.2" + + "@music/tango-apps-core@^1.10.1": + version "1.10.1" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-core/download/@music/tango-apps-core-1.10.1.tgz#09be05cc7c198d21fd95ad364573d711925d789e" + integrity sha1-Cb4FzHwZjSH9la02RXPXEZJdeJ4= + dependencies: + "@babel/generator" "^7.21.3" + "@babel/parser" "^7.21.3" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" + "@music/tango-apps-shared" "^1.9.0" + "@types/babel__generator" "^7.6.4" + "@types/babel__traverse" "^7.18.3" + mobx "^6.9.0" + path-browserify "^1.0.1" + + "@music/tango-apps-designer@^1.10.0": + version "1.19.0" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-designer/download/@music/tango-apps-designer-1.19.0.tgz#03674f08b31dce6d7e4fbccfd1863d6f774d022e" + integrity sha1-A2dPCLMdzm1+T7zP0YY9b3dNAi4= + dependencies: + "@ant-design/icons" "^4.8.0" + "@music/request" "^1.7.3" + "@music/tango-apps-context" "^1.2.1" + "@music/tango-apps-core" "^1.10.1" + "@music/tango-apps-editor" "^1.0.12" + "@music/tango-apps-guide-form" "^1.6.23" + "@music/tango-apps-sandbox" "^1.6.11" + "@music/tango-apps-setting-form" "^1.9.2" + "@music/tango-apps-shared" "^1.9.0" + "@music/tango-apps-ui" "^1.8.0" + antd "^4.24.2" + cash-dom "^8.1.2" + classnames "^2.3.2" + coral-system "^1.0.5" + date-fns "^2.29.2" + lodash-es "^4.17.21" + semver "^7.3.8" + + "@music/tango-apps-editor@*", "@music/tango-apps-editor@^1.0.12": + version "1.0.12" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-editor/download/@music/tango-apps-editor-1.0.12.tgz#f78868c714c7789880ee7b846388ee6f6c8509d7" + integrity sha1-94hoxxTHeJiA7nuEY4jub2yFCdc= + dependencies: + "@monaco-editor/loader" "^1.3.1" + coral-system "^1.0.5" + react-monaco-editor-lite "^1.0.70" + + "@music/tango-apps-guide-form@*", "@music/tango-apps-guide-form@^1.6.23": + version "1.6.23" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-guide-form/download/@music/tango-apps-guide-form-1.6.23.tgz#08db83f04ad982792c635c58ec10585d0ba9fad6" + integrity sha1-CNuD8ErZgnksY1xY7BBYXQup+tY= + dependencies: + "@babel/generator" "^7.21.3" + "@babel/parser" "^7.21.3" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" + "@music/icons" "^1.2.0" + "@music/one" "^1.17.0" + "@music/request" "^1.7.3" + "@music/tango-apps-context" "^1.2.1" + "@music/tango-apps-core" "^1.10.1" + "@music/tango-apps-editor" "^1.0.12" + "@music/tango-apps-sandbox" "^1.6.11" + "@music/tango-apps-shared" "^1.9.0" + "@music/xform-react" "^3.2.37" + "@music/xtable-react" "^3.2.35" + coral-system "^1.0.5" + + "@music/tango-apps-sandbox@^1.6.11": + version "1.6.11" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-sandbox/download/@music/tango-apps-sandbox-1.6.11.tgz#d9434d96e60b451e906a14ddcca748747b64765a" + integrity sha1-2UNNluYLRR6QahTdzKdIdHtkdlo= + dependencies: + "@music/icons" "^1.2.1" + "@music/tango-apps-core" "^1.10.1" + "@music/tango-apps-shared" "^1.9.0" + crypto-js "^4.1.1" + lodash.isequal "4.5.0" + react-frame-component "^5.2.4" + + "@music/tango-apps-setting-form@*", "@music/tango-apps-setting-form@^1.9.2": + version "1.9.2" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-setting-form/download/@music/tango-apps-setting-form-1.9.2.tgz#159af35589ecc9709ed612bdacbd484d8052f677" + integrity sha1-FZrzVYnsyXCe1hK9rL1ITYBS9nc= + dependencies: + "@music/icons" "^1.2.0" + "@music/tango-apps-core" "^1.10.1" + "@music/tango-apps-editor" "^1.0.12" + "@music/tango-apps-shared" "^1.9.0" + "@music/tango-apps-ui" "^1.8.0" + antd "^4.24.2" + color "^4.2.3" + coral-system "^1.0.5" + cssjson "^2.1.3" + mobx "^6.9.0" + mobx-react-lite "^4.0.2" + moment "^2.29.3" + react-color "^2.19.3" + + "@music/tango-apps-shared@*", "@music/tango-apps-shared@^1.0.1", "@music/tango-apps-shared@^1.6.5", "@music/tango-apps-shared@^1.6.6", "@music/tango-apps-shared@^1.9.0": + version "1.9.0" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-shared/download/@music/tango-apps-shared-1.9.0.tgz#b52d17743a4b53d471a018926fd6d2c6b7f6ebdf" + integrity sha1-tS0XdDpLU9RxoBiSb9bSxrf2698= + dependencies: + hoist-non-react-statics "^3.3.2" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + + "@music/tango-apps-shared@^0.5.0": + version "0.5.1" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-shared/download/@music/tango-apps-shared-0.5.1.tgz#f545b64727465510a05db9fb94091377c65880c2" + integrity sha1-9UW2RydGVRCgXbn7lAkTd8ZYgMI= + dependencies: + hoist-non-react-statics "^3.3.2" + + "@music/tango-apps-ui@*", "@music/tango-apps-ui@^1.8.0": + version "1.8.0" + resolved "http://rnpm.hz.netease.com/@music/tango-apps-ui/download/@music/tango-apps-ui-1.8.0.tgz#ab302f72d92444f708b997212a251882c290ea7d" + integrity sha1-qzAvctkkRPcIuZchKiUYgsKQ6n0= + dependencies: + "@ant-design/icons" "^4.8.0" + "@codemirror/autocomplete" "6.4.2" + "@codemirror/lang-javascript" "^6.1.2" + "@codemirror/search" "^6.2.3" + "@music/tango-apps-shared" "^1.9.0" + "@uiw/react-codemirror" "^4.19.3" + antd "^4.24.2" + antd-easy-form "^1.1.3" + coral-system "^1.0.5" + react-json-view "^1.21.3" + + "@music/tango-boot@^1.13.3": + version "1.14.4" + resolved "http://rnpm.hz.netease.com/@music/tango-boot/download/@music/tango-boot-1.14.4.tgz#846cfd1e097f5a691849c430d748a719bb36e0b1" + integrity sha1-hGz9Hgl/WmkYScQw10inGbs24LE= + dependencies: + "@music/encrypt-fetch" "^3.4.3" + "@music/mobile-env" "^2.4.30" + "@music/mobile-i18n" "^3.0.11" + "@music/request" "^1.7.5" + "@music/tango-apps-shared" "^1.6.6" + "@music/tl-ef-middleware-host-patcher" "^1.0.5-beta.0" + "@risingstack/react-easy-state" "^6.3.0" + crypto-js "^4.1.1" + history "^4.10.1" + identity-obj-proxy "^3.0.0" + js-cookie "^3.0.1" + moment "^2.29.4" + react-error-boundary "^3.1.4" + react-router "^5.2.0" + react-router-config "^5.1.1" + + "@music/tango-cms@1.25.6": + version "1.25.6" + resolved "http://rnpm.hz.netease.com/@music/tango-cms/download/@music/tango-cms-1.25.6.tgz#61e447c5be140129a113d5ac75ca97180e19f925" + integrity sha1-YeRHxb4UASmhE9WsdcqXGA4Z+SU= + dependencies: + "@music/charts" "^1.8.8" + "@music/icons" "^1.2.1" + "@music/nos-uploader" "^2.8.5" + "@music/one" "^1.19.6" + "@music/tango-apps-shared" "^1.6.5" + "@music/xform-react" "^3.2.41" + "@music/xtable-react" "^3.2.45" + classnames "^2.3.2" + coral-system "^1.0.4" + lodash.isequal "^4.5.0" + react-json-view "^1.21.3" + + "@music/tl-ef-middleware-host-patcher@^1.0.5-beta.0": + version "1.0.5" + resolved "http://rnpm.hz.netease.com/@music/tl-ef-middleware-host-patcher/download/@music/tl-ef-middleware-host-patcher-1.0.5.tgz#3baad1793f81305714acf6fba8641bbc521478cf" + integrity sha1-O6rReT+BMFcUrPb7qGQbvFIUeM8= + dependencies: + "@babel/runtime" "^7.15.3" + "@music/network-fetch" "^2.1.3" + + "@music/tl-ef-util@0.x || ^1.0.0": + version "1.0.7" + resolved "http://rnpm.hz.netease.com/@music/tl-ef-util/download/@music/tl-ef-util-1.0.7.tgz#7f24d629bf0a33b87a09d3cba0c05f8b8da5f6ac" + integrity sha1-fyTWKb8KM7h6CdPLoMBfi42l9qw= + dependencies: + "@babel/runtime" "^7.15.3" + + "@music/tl-i18next-nodecache-backend@0.1.0-beta.1": + version "0.1.0-beta.1" + resolved "http://rnpm.hz.netease.com/@music/tl-i18next-nodecache-backend/download/@music/tl-i18next-nodecache-backend-0.1.0-beta.1.tgz#e91bb3f1180864305b6e497dd792e5a722203c1a" + integrity sha1-6Ruz8RgIZDBbbkl915LlpyIgPBo= + dependencies: + "@babel/runtime" "^7.14.6" + node-cache "^5.1.2" + + "@music/upload-pkg@^1.1.0": + version "1.1.0" + resolved "http://rnpm.hz.netease.com/@music/upload-pkg/download/@music/upload-pkg-1.1.0.tgz#54aac79a50475d4ed5c5f1535a838e61df891f27" + integrity sha1-VKrHmlBHXU7VxfFTWoOOYd+JHyc= + dependencies: + "@xgheaven/nos-node-sdk" "^0.2.5" + glob "^8.0.3" + urllib "^3.11.0" + + "@music/use-hooks@^1.0.1": + version "1.0.1" + resolved "http://rnpm.hz.netease.com/@music/use-hooks/download/@music/use-hooks-1.0.1.tgz#8c4f4181c04b9d9fd9c68926ddb8274ce4bcd1ac" + integrity sha1-jE9BgcBLnZ/Zxokm3bgnTOS80aw= + + "@music/xform-base@^3.2.45": + version "3.2.45" + resolved "http://rnpm.hz.netease.com/@music/xform-base/download/@music/xform-base-3.2.45.tgz#aab3c095ac89b490564abcfd2cd10c7bad0ffe87" + integrity sha1-qrPAlayJtJBWSrz9LNEMe60P/oc= + dependencies: + "@music/icons" "^1.0.0" + "@music/xform-core" "^3.2.38" + "@music/xform-provider" "^3.2.13" + "@music/xform-types" "^3.2.24" + ramda "^0.28.0" + react-dnd "^14.0.2" + react-dnd-html5-backend "^14.0.0" + + "@music/xform-core@^3.2.38": + version "3.2.38" + resolved "http://rnpm.hz.netease.com/@music/xform-core/download/@music/xform-core-3.2.38.tgz#53536bc88a427d715167a695f912a73206c7820e" + integrity sha1-U1NryIpCfXFRZ6aV+RKnMgbHgg4= + dependencies: + "@music/xform-types" "^3.2.24" + async-validator "^3.2.0" + events "^3.0.0" + expression-eval "^2.1.0" + isomorphic-fetch "^2.2.1" + ramda "^0.28.0" + + "@music/xform-provider@^3.2.13": + version "3.2.13" + resolved "http://rnpm.hz.netease.com/@music/xform-provider/download/@music/xform-provider-3.2.13.tgz#76cf632043abc74c6432ef192e779e946608aa8d" + integrity sha1-ds9jIEOrx0xkMu8ZLneelGYIqo0= + dependencies: + has-tostringtag "^1.0.0" + rc-util "^5.0.1" + + "@music/xform-react@^3.2.37", "@music/xform-react@^3.2.41": + version "3.2.50" + resolved "http://rnpm.hz.netease.com/@music/xform-react/download/@music/xform-react-3.2.50.tgz#a8a81fc933db6d70a4893963c2fc3d662015e31e" + integrity sha1-qKgfyTPbbXCkiTljwvw9ZiAV4x4= + dependencies: + "@music/icons" "^1.0.0" + "@music/image" "^1.0.1" + "@music/mobile-toast" "^2.1.9" + "@music/mobile-upload" "^1.1.5" + "@music/tango-apps-shared" "^0.5.0" + "@music/xform-base" "^3.2.45" + "@music/xform-provider" "^3.2.13" + "@music/xform-types" "^3.2.24" + react-dnd "^14.0.2" + react-dnd-html5-backend "^14.0.0" + + "@music/xform-types@^3.2.24": + version "3.2.24" + resolved "http://rnpm.hz.netease.com/@music/xform-types/download/@music/xform-types-3.2.24.tgz#badee73e958ed97bddaae89581f05b57be8797ce" + integrity sha1-ut7nPpWO2XvdquiVgfBbV76Hl84= + dependencies: + "@music/xform-provider" "^3.2.13" + async-validator "^3.2.0" + + "@music/xtable-components@^3.2.59": + version "3.2.59" + resolved "http://rnpm.hz.netease.com/@music/xtable-components/download/@music/xtable-components-3.2.59.tgz#1dd81759a01c561d5929bb5c49b810bb6b7ebd78" + integrity sha1-HdgXWaAcVh1ZKbtcSbgQu2t+vXg= + dependencies: + "@music/xtable-core" "^3.2.59" + "@music/xtable-provider" "^3.2.23" + "@music/xtable-types" "^3.2.56" + plyr "3.6.7" + + "@music/xtable-core@^3.2.59": + version "3.2.59" + resolved "http://rnpm.hz.netease.com/@music/xtable-core/download/@music/xtable-core-3.2.59.tgz#32cb9c2529ac5a40cceff22d1a6e1304c936a613" + integrity sha1-MsucJSmsWkDM7/ItGm4TBMk2phM= + dependencies: + "@music/xtable-types" "^3.2.56" + mobx "^6.3.6" + moment "^2.29.1" + + "@music/xtable-jsx@^3.2.59": + version "3.2.59" + resolved "http://rnpm.hz.netease.com/@music/xtable-jsx/download/@music/xtable-jsx-3.2.59.tgz#5a40bdbd709c3645875f9c6b3835bbceb77d8645" + integrity sha1-WkC9vXCcNkWHX5xrODW7zrd9hkU= + dependencies: + "@music/xtable-components" "^3.2.59" + "@music/xtable-core" "^3.2.59" + "@music/xtable-provider" "^3.2.23" + "@music/xtable-types" "^3.2.56" + classnames "^2.3.1" + lodash "^4.17.20" + mobx "^6.3.6" + mobx-react-lite "^3.2.2" + moment "^2.29.1" + react-sortable-hoc "^2.0.0" + + "@music/xtable-provider@^3.2.23": + version "3.2.23" + resolved "http://rnpm.hz.netease.com/@music/xtable-provider/download/@music/xtable-provider-3.2.23.tgz#63c70a893987805c8c18d088e5650da23063fe9e" + integrity sha1-Y8cKiTmHgFyMGNCI5WUNojBj/p4= + dependencies: + has-tostringtag "^1.0.0" + rc-util "^5.0.1" + + "@music/xtable-react@^3.2.35", "@music/xtable-react@^3.2.45": + version "3.2.59" + resolved "http://rnpm.hz.netease.com/@music/xtable-react/download/@music/xtable-react-3.2.59.tgz#f2ce7f0d2dd93f68ae76212f3fb14409707d8335" + integrity sha1-8s5/DS3ZP2iudiEvP7FECXB9gzU= + dependencies: + "@music/icons" "1.x" + "@music/xtable-components" "^3.2.59" + "@music/xtable-core" "^3.2.59" + "@music/xtable-jsx" "^3.2.59" + "@music/xtable-provider" "^3.2.23" + "@music/xtable-types" "^3.2.56" + moment "^2.24.0" + react-dnd "^14.0.2" + react-dnd-html5-backend "^14.0.0" + styled-components "^5.3.3" + + "@music/xtable-types@^3.2.56": + version "3.2.56" + resolved "http://rnpm.hz.netease.com/@music/xtable-types/download/@music/xtable-types-3.2.56.tgz#06c596bcc3d7fed1d440a228c87052f8be778d54" + integrity sha1-BsWWvMPX/tHUQKIoyHBS+L53jVQ= + dependencies: + "@music/xtable-provider" "^3.2.23" + + "@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + + "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + + "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + + "@npmcli/arborist@6.2.3": + version "6.2.3" + resolved "https://registry.npmmirror.com/@npmcli/arborist/-/arborist-6.2.3.tgz#31f8aed2588341864d3811151d929c01308f8e71" + integrity sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.0" + "@npmcli/installed-package-contents" "^2.0.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^5.0.0" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^3.0.0" + "@npmcli/query" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + bin-links "^4.0.1" + cacache "^17.0.4" + common-ancestor-path "^1.0.1" + hosted-git-info "^6.1.1" + json-parse-even-better-errors "^3.0.0" + json-stringify-nice "^1.1.4" + minimatch "^6.1.6" + nopt "^7.0.0" + npm-install-checks "^6.0.0" + npm-package-arg "^10.1.0" + npm-pick-manifest "^8.0.1" + npm-registry-fetch "^14.0.3" + npmlog "^7.0.1" + pacote "^15.0.8" + parse-conflict-json "^3.0.0" + proc-log "^3.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^1.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.1" + treeverse "^3.0.0" + walk-up-path "^1.0.0" + + "@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + + "@npmcli/fs@^3.1.0": + version "3.1.0" + resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== + dependencies: + semver "^7.3.5" + + "@npmcli/git@^3.0.0": + version "3.0.2" + resolved "https://registry.npmmirror.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== + dependencies: + "@npmcli/promise-spawn" "^3.0.0" + lru-cache "^7.4.4" + mkdirp "^1.0.4" + npm-pick-manifest "^7.0.0" + proc-log "^2.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + + "@npmcli/git@^4.0.0": + version "4.0.4" + resolved "https://registry.npmmirror.com/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" + integrity sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg== + dependencies: + "@npmcli/promise-spawn" "^6.0.0" + lru-cache "^7.4.4" + npm-pick-manifest "^8.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^3.0.0" + + "@npmcli/installed-package-contents@^1.0.7": + version "1.0.7" + resolved "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + + "@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": + version "2.0.2" + resolved "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" + integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + + "@npmcli/map-workspaces@^3.0.2": + version "3.0.3" + resolved "https://registry.npmmirror.com/@npmcli/map-workspaces/-/map-workspaces-3.0.3.tgz#476944b63cd1f65bf83c6fdc7f4ca7be56906b1f" + integrity sha512-HlCvFuTzw4UNoKyZdqiNrln+qMF71QJkxy2dsusV8QQdoa89e2TF4dATCzBxbl4zzRzdDoWWyP5ADVrNAH9cRQ== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^9.3.1" + minimatch "^7.4.2" + read-package-json-fast "^3.0.0" + + "@npmcli/metavuln-calculator@^5.0.0": + version "5.0.0" + resolved "https://registry.npmmirror.com/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.0.tgz#917c3be49ebed0b424b07f38060b929127e4c499" + integrity sha512-BBFQx4M12wiEuVwCgtX/Depx0B/+NHMwDWOlXT41/Pdy5W/1Fenk+hibUlMSrFWwASbX+fY90UbILAEIYH02/A== + dependencies: + cacache "^17.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^15.0.0" + semver "^7.3.5" + + "@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + + "@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + + "@npmcli/node-gyp@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== + + "@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + + "@npmcli/package-json@^3.0.0": + version "3.0.0" + resolved "https://registry.npmmirror.com/@npmcli/package-json/-/package-json-3.0.0.tgz#c9219a197e1be8dbf43c4ef8767a72277c0533b6" + integrity sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg== + dependencies: + json-parse-even-better-errors "^3.0.0" + + "@npmcli/promise-spawn@^3.0.0": + version "3.0.0" + resolved "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== + dependencies: + infer-owner "^1.0.4" + + "@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + version "6.0.2" + resolved "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" + integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== + dependencies: + which "^3.0.0" + + "@npmcli/query@^3.0.0": + version "3.0.0" + resolved "https://registry.npmmirror.com/@npmcli/query/-/query-3.0.0.tgz#51a0dfb85811e04f244171f164b6bc83b36113a7" + integrity sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA== + dependencies: + postcss-selector-parser "^6.0.10" + + "@npmcli/run-script@4.1.7": + version "4.1.7" + resolved "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" + integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + + "@npmcli/run-script@^4.1.0": + version "4.2.1" + resolved "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + + "@npmcli/run-script@^6.0.0": + version "6.0.0" + resolved "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-6.0.0.tgz#f89e322c729e26ae29db6cc8cc76559074aac208" + integrity sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^3.0.0" + + "@nrwl/cli@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/cli/-/cli-15.8.7.tgz#1de7ba802de24edac64e8cb4cac1459a3f403505" + integrity sha512-G1NEy4jGuZJ/7KjhLQNOe11XmoTgwJS82FW8Tbo4iceq2ItSEbe7bkA8xTSK/AzUixZIMimztb9Oyxw/n1ajGQ== + dependencies: + nx "15.8.7" + + "@nrwl/devkit@>=15.5.2 < 16": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/devkit/-/devkit-15.8.7.tgz#98e881e993c1314a20c050926df1466154782e58" + integrity sha512-A99nZrA5KN9wRn2uYX2vKByA+t2XEGoZBR5TU/bpXbPYrh92qAHkIJ8ke3ImGQOlzk4iIaZ5Me0k7k1p9Zx4wA== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tmp "~0.2.1" + tslib "^2.3.0" + + "@nrwl/nx-darwin-arm64@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.8.7.tgz#1fed566b5206afd710309079644782997ccb7895" + integrity sha512-+cu8J337gRxUHjz2TGwS/2Oh3yw8d3/T6SoBfvee1DY72VQaeYd8UTz0doOhDtmc/zowvRu7ZVsW0ytNB0jIXQ== + + "@nrwl/nx-darwin-x64@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.8.7.tgz#7aaee9f56fa526e7049fa5a9829fa72044b35055" + integrity sha512-VqHJEP0wgFu1MU0Bo1vKZ5/s7ThRfYkX8SyGUxjVTzR02CrsjC4rNxFoKD8Cc4YkUn44U/F78toGf+i2gRcjSQ== + + "@nrwl/nx-linux-arm-gnueabihf@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.8.7.tgz#379a77ea46e0f741c487eeedd3389eafab26dcae" + integrity sha512-4F/8awwqPTt7zKQolvjBNrcR1wYicPjGchLOdaqnfMxn/iRRUdh0hD11mEP5zHNv9gZs/nOIvhdBUErNjFkplQ== + + "@nrwl/nx-linux-arm64-gnu@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.8.7.tgz#201a41c0c8531de94169faa48bd9a49bed04ec4b" + integrity sha512-3ZTSZx02Vv5emQOpaDROIcLtQucoXAe73zGKYDTXB95mxbOPSjjQJ8Rtx+BeqWq9JQoZZyRcD0qnBkTTy1aLRg== + + "@nrwl/nx-linux-arm64-musl@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.8.7.tgz#f6bbf2e7a1941952c25387a36be6cfa88079975d" + integrity sha512-SZxTomiHxAh8El+swbmGSGcaA0vGbHb/rmhFAixo19INu1wBJfD6hjkVJt17h6PyEO7BIYPOpRia6Poxnyv8hA== + + "@nrwl/nx-linux-x64-gnu@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.8.7.tgz#76a88784858224a720c5a28e40ad513704f45722" + integrity sha512-BlNC6Zz1/x6CFbBFTVrgRGMOPqb7zWh5cOjBVNpoBXYTEth1UXb2r1U+gpuQ4xdUqG+uXoWhy6BHJjqBIjzLJA== + + "@nrwl/nx-linux-x64-musl@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.8.7.tgz#dd906423fa129d0c55633ebe80572bdd6be4d57f" + integrity sha512-FNYX/IKy8SUbw6bJpvwZrup2YQBYmSJwP6Rw76Vf7c32XHk7uA6AjiPWMIrZCSndXcry8fnwXvR+J2Dnyo82nQ== + + "@nrwl/nx-win32-arm64-msvc@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.8.7.tgz#145e415950d8ff507dcfbd7879f9c37477e7a620" + integrity sha512-sZALEzazjPAeLlw6IbFWsMidCZ4ZM3GKWZZ6rsAqG2y7I9t4nlUPH/y/Isl9MuLBvrBCBXbVnD20wh6EhtuwTw== + + "@nrwl/nx-win32-x64-msvc@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.8.7.tgz#66aa3cda4b9ae7b676d2282fbac129ce7a3c15d0" + integrity sha512-VMdDptI2rqkLQRCvertF29QeA/V/MnFtHbsmVzMCEv5EUfrkHbA5LLxV66LLfngmkDT1FHktffztlsMpbxvhRw== + + "@nrwl/tao@15.8.7": + version "15.8.7" + resolved "https://registry.npmmirror.com/@nrwl/tao/-/tao-15.8.7.tgz#ea0bd4bc1784a2578dfb7cfb93f42d98504344cb" + integrity sha512-wA7QIEh0VwWcyo32Y/xSCTwnQTGcZupe933nResXv8mAb36W8MoR5SXRx+Wdd8fJ1eWlm2tuotIrslhN+lYx/Q== + dependencies: + nx "15.8.7" + + "@nx-js/observer-util@^4.2.2": + version "4.2.2" + resolved "https://registry.npmmirror.com/@nx-js/observer-util/-/observer-util-4.2.2.tgz#faea1bc61936653486d1b5dec7485220991e628d" + integrity sha512-9OayX1xkdGjdnsDiO2YdaYJ6aMyCF7/NY4QWVgIgjSAZJ4OX2fD766Ts79hEzBscenQy2DCaSoY8VkguIMB1ZA== + + "@octokit/auth-token@^3.0.0": + version "3.0.3" + resolved "https://registry.npmmirror.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" + integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== + dependencies: + "@octokit/types" "^9.0.0" + + "@octokit/core@^4.0.0": + version "4.2.0" + resolved "https://registry.npmmirror.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648" + integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + + "@octokit/endpoint@^7.0.0": + version "7.0.5" + resolved "https://registry.npmmirror.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" + integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== + dependencies: + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + + "@octokit/graphql@^5.0.0": + version "5.0.5" + resolved "https://registry.npmmirror.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2" + integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ== + dependencies: + "@octokit/request" "^6.0.0" + "@octokit/types" "^9.0.0" + universal-user-agent "^6.0.0" + + "@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + + "@octokit/openapi-types@^14.0.0": + version "14.0.0" + resolved "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" + integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== + + "@octokit/openapi-types@^16.0.0": + version "16.0.0" + resolved "https://registry.npmmirror.com/@octokit/openapi-types/-/openapi-types-16.0.0.tgz#d92838a6cd9fb4639ca875ddb3437f1045cc625e" + integrity sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA== + + "@octokit/plugin-enterprise-rest@6.0.1": + version "6.0.1" + resolved "https://registry.npmmirror.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + + "@octokit/plugin-paginate-rest@^3.0.0": + version "3.1.0" + resolved "https://registry.npmmirror.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" + integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== + dependencies: + "@octokit/types" "^6.41.0" + + "@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.npmmirror.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + + "@octokit/plugin-rest-endpoint-methods@^6.0.0": + version "6.8.1" + resolved "https://registry.npmmirror.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1" + integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg== + dependencies: + "@octokit/types" "^8.1.1" + deprecation "^2.3.1" + + "@octokit/request-error@^3.0.0": + version "3.0.3" + resolved "https://registry.npmmirror.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== + dependencies: + "@octokit/types" "^9.0.0" + deprecation "^2.0.0" + once "^1.4.0" + + "@octokit/request@^6.0.0": + version "6.2.3" + resolved "https://registry.npmmirror.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4" + integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA== + dependencies: + "@octokit/endpoint" "^7.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + + "@octokit/rest@19.0.3": + version "19.0.3" + resolved "https://registry.npmmirror.com/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" + integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== + dependencies: + "@octokit/core" "^4.0.0" + "@octokit/plugin-paginate-rest" "^3.0.0" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^6.0.0" + + "@octokit/types@^6.41.0": + version "6.41.0" + resolved "https://registry.npmmirror.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== + dependencies: + "@octokit/openapi-types" "^12.11.0" + + "@octokit/types@^8.1.1": + version "8.2.1" + resolved "https://registry.npmmirror.com/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" + integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw== + dependencies: + "@octokit/openapi-types" "^14.0.0" + + "@octokit/types@^9.0.0": + version "9.0.0" + resolved "https://registry.npmmirror.com/@octokit/types/-/types-9.0.0.tgz#6050db04ddf4188ec92d60e4da1a2ce0633ff635" + integrity sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw== + dependencies: + "@octokit/openapi-types" "^16.0.0" + + "@parcel/watcher@2.0.4": + version "2.0.4" + resolved "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== + dependencies: + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" + + "@phenomnomnominal/tsquery@4.1.1": + version "4.1.1" + resolved "https://registry.npmmirror.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" + integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== + dependencies: + esquery "^1.0.1" + + "@pkgr/utils@^2.3.1": + version "2.3.1" + resolved "https://registry.npmmirror.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" + integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== + dependencies: + cross-spawn "^7.0.3" + is-glob "^4.0.3" + open "^8.4.0" + picocolors "^1.0.0" + tiny-glob "^0.2.9" + tslib "^2.4.0" + + "@rc-component/portal@^1.0.0-6", "@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.2": + version "1.1.0" + resolved "https://registry.npmmirror.com/@rc-component/portal/-/portal-1.1.0.tgz#6b94450d2c2b00d50b141bd7a0be23bd96503dbe" + integrity sha512-tbXM9SB1r5FOuZjRCljERFByFiEUcMmCWMXLog/NmgCzlAzreXyf23Vei3ZpSMxSMavzPnhCovfZjZdmxS3d1w== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + + "@react-dnd/asap@^4.0.0": + version "4.0.1" + resolved "https://registry.npmmirror.com/@react-dnd/asap/-/asap-4.0.1.tgz#5291850a6b58ce6f2da25352a64f1b0674871aab" + integrity sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg== + + "@react-dnd/invariant@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@react-dnd/invariant/-/invariant-2.0.0.tgz#09d2e81cd39e0e767d7da62df9325860f24e517e" + integrity sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw== + + "@react-dnd/shallowequal@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz#a3031eb54129f2c66b2753f8404266ec7bf67f0a" + integrity sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg== + + "@risingstack/react-easy-state@^6.3.0": + version "6.3.0" + resolved "https://registry.npmmirror.com/@risingstack/react-easy-state/-/react-easy-state-6.3.0.tgz#3590031f7382c5c6c7866790ba7a72e557a12407" + integrity sha512-AGLrzvwloZL7dgagwRkxJaq7bcDsOGdHrCpHZIlMIxcFLdFr5IpD2/kcmTlC34H682pvfIl1lzNxBw72la10aA== + dependencies: + "@nx-js/observer-util" "^4.2.2" + + "@sigstore/protobuf-specs@^0.1.0": + version "0.1.0" + resolved "https://registry.npmmirror.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" + integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== + + "@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + + "@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + + "@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + + "@storybook/addon-actions@7.0.6", "@storybook/addon-actions@^7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-actions/-/addon-actions-7.0.6.tgz#96f37c687769f282d4746de07eda8a305d4b21ad" + integrity sha512-H592lkj06bJMX4uwmZI3AVpRFPQ8nkM5j+eo+JQdv0QX9lLZWKnhrGkGDTC/QMSnXMdgHooq0ce9PdGaDvUm1Q== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + dequal "^2.0.2" + lodash "^4.17.21" + polished "^4.2.2" + prop-types "^15.7.2" + react-inspector "^6.0.0" + telejson "^7.0.3" + ts-dedent "^2.0.0" + uuid-browser "^3.1.0" + + "@storybook/addon-backgrounds@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.6.tgz#197173bffb0be6a64d46d436e931fee77086e8c1" + integrity sha512-jOmZq19xS8Ge5TEc49jrO7Qbmxg+6vmCwA04s1OApzmugEcscgtzBvplbw+FeXbSSjT6MM1c7u8XYVioDrzTXw== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + memoizerific "^1.11.3" + ts-dedent "^2.0.0" + + "@storybook/addon-controls@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-controls/-/addon-controls-7.0.6.tgz#c5c502067d189f0cc7f32c071c3a8ff58d837d16" + integrity sha512-yNaJ42CJxlPMKV9mpkuaiXrQXnjWhsgLASpZcZsE5+KyAqcS/iue9UWO+M/u5zt2/zb4w8BW4GysmvBKl0VDKQ== + dependencies: + "@storybook/blocks" "7.0.6" + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-common" "7.0.6" + "@storybook/manager-api" "7.0.6" + "@storybook/node-logger" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + lodash "^4.17.21" + ts-dedent "^2.0.0" + + "@storybook/addon-docs@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-docs/-/addon-docs-7.0.6.tgz#41273f1a0b2d8c543731aa1f4162a31cf35908fa" + integrity sha512-l5m2sGch9vexy4O0Oe6akyTbaV0+yh9Ihm4ez8FtZkDy8UTtPsKeZ4cdpkg7Lpwa4kYVMV6i2R3xI07/kwhqGg== + dependencies: + "@babel/core" "^7.20.2" + "@babel/plugin-transform-react-jsx" "^7.19.0" + "@jest/transform" "^29.3.1" + "@mdx-js/react" "^2.1.5" + "@storybook/blocks" "7.0.6" + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/csf-plugin" "7.0.6" + "@storybook/csf-tools" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/mdx2-csf" "^1.0.0" + "@storybook/node-logger" "7.0.6" + "@storybook/postinstall" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/react-dom-shim" "7.0.6" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + fs-extra "^11.1.0" + remark-external-links "^8.0.0" + remark-slug "^6.0.0" + ts-dedent "^2.0.0" + + "@storybook/addon-essentials@^7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-essentials/-/addon-essentials-7.0.6.tgz#6c97df75a166120294ced57dc2bef41894b3d2df" + integrity sha512-RLe+osvJ620njDiinPOlCdFAYckOg4PuE/OFFKYL+ityfKcGknYPZdtV8bknfdO3jSFCVx6zOpUv5KE6u4CgWg== + dependencies: + "@storybook/addon-actions" "7.0.6" + "@storybook/addon-backgrounds" "7.0.6" + "@storybook/addon-controls" "7.0.6" + "@storybook/addon-docs" "7.0.6" + "@storybook/addon-highlight" "7.0.6" + "@storybook/addon-measure" "7.0.6" + "@storybook/addon-outline" "7.0.6" + "@storybook/addon-toolbars" "7.0.6" + "@storybook/addon-viewport" "7.0.6" + "@storybook/core-common" "7.0.6" + "@storybook/manager-api" "7.0.6" + "@storybook/node-logger" "7.0.6" + "@storybook/preview-api" "7.0.6" + ts-dedent "^2.0.0" + + "@storybook/addon-highlight@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-highlight/-/addon-highlight-7.0.6.tgz#fbb5b728fe46c3dd2622edc933a9dbecf4dca283" + integrity sha512-weM26CUku1+urbnefNUYxIKrc8xXvpLXHZsGzuxoYyOUCR25F09IUjVutOfgoVXqTqPUj1XWqVkG8PLQNs5vBQ== + dependencies: + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.6" + + "@storybook/addon-links@^7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-links/-/addon-links-7.0.6.tgz#8ae4990893a823711b14c07dbd84bfc6bdd6b730" + integrity sha512-KgaxvlWMJoT+yV4h6yElv3uPNSD/vhpgNO/2Br6KHW0MlB1MlqbrtTH8qJ9wUesJSLiw2O3d6npnsefHTtQiGw== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/csf" "^0.1.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/router" "7.0.6" + "@storybook/types" "7.0.6" + prop-types "^15.7.2" + ts-dedent "^2.0.0" + + "@storybook/addon-measure@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-measure/-/addon-measure-7.0.6.tgz#b5caa50ce2335b5a9446ea333474cb03c8c842c1" + integrity sha512-mtd9tQOlNzxdDJvE0pP7/CMsm3l5skVr5G6wrkzHzhRqknfcj0hPdJUcA1P2PuxgejHBBQ32ZWZ6PubUtFXujQ== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/types" "7.0.6" + + "@storybook/addon-outline@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-outline/-/addon-outline-7.0.6.tgz#f1f255e04c8b44d235e110eb060a12eded296375" + integrity sha512-UYvL7aRdrn57gwp9O+xykky+BV3KPIZ415Fdb5HRuxfWA/3llWBslwswWXX5A8mAbIeaFZk+C4xIskZgRw1+mg== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/types" "7.0.6" + ts-dedent "^2.0.0" + + "@storybook/addon-toolbars@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.6.tgz#6eba9e59fb74fc74b01685efc1fa049cf8eb9793" + integrity sha512-FzybNbJW9GQ6XCe7g2zyOXnJXay971VEoYhRqDPiFQEjBvkRiKca1mRKgdjQt6o5Mw7OzbaLunjR2Xvl3GhE0w== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/theming" "7.0.6" + + "@storybook/addon-viewport@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/addon-viewport/-/addon-viewport-7.0.6.tgz#d3009f560bc629bc182a28dc0ac440e205a8850a" + integrity sha512-5GGAJeWJEplqYAL5x7GQkXw23n2MELhO6nnCV+Jd3d9qs0Aq2VSTEsD0MGTNef/SymZjYm/iOCNOVgbqIF9t+Q== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/theming" "7.0.6" + memoizerific "^1.11.3" + prop-types "^15.7.2" + + "@storybook/blocks@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/blocks/-/blocks-7.0.6.tgz#e546356d465e117815e3c1342f88b057c824827f" + integrity sha512-02B9sY8qrp6DCgyRWZEEd1X/+r7eaTXLOXlikqRmah5XMqtGpEasPXN4ETzzZKKRbSapkKfqxzsp9ZXfqXTNKQ== + dependencies: + "@storybook/channels" "7.0.6" + "@storybook/client-logger" "7.0.6" + "@storybook/components" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/csf" "^0.1.0" + "@storybook/docs-tools" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + "@types/lodash" "^4.14.167" + color-convert "^2.0.1" + dequal "^2.0.2" + lodash "^4.17.21" + markdown-to-jsx "^7.1.8" + memoizerific "^1.11.3" + polished "^4.2.2" + react-colorful "^5.1.2" + telejson "^7.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + + "@storybook/channel-postmessage@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.6.tgz#46f2887579ea7065480c127a55d48a7d1a935614" + integrity sha512-xBsh/+85GS4bJ08r7z1iRn26EI6hGmMgNpjpFztRigMhsq5SkD9FJb+Nh9bbaHm+yPOCqJcaHQ2aQpuJNT8dHA== + dependencies: + "@storybook/channels" "7.0.6" + "@storybook/client-logger" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/global" "^5.0.0" + qs "^6.10.0" + telejson "^7.0.3" + + "@storybook/channels@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/channels/-/channels-7.0.6.tgz#c025eeb45072a89b82e111bea021b09f4cc80b96" + integrity sha512-+34cVmrXZ3lb1s5tDK+OWd5HLtEPSUMas0VKFJ0k9LBpFlVl9aiCZBJRvSYmWL7beauUfa+HSmJgjlD6228ChQ== + + "@storybook/client-logger@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/client-logger/-/client-logger-7.0.6.tgz#2e4a419b498efaf9a4eca69abc2c879d45a764bb" + integrity sha512-TC/E5BBkY+WNldNw5p5Ffr9x4UgMe48GmC50ikBpQFk6og1B7XpFGMMbj40EBB0R5cpZkQNEVQh4OvunEygNzg== + dependencies: + "@storybook/global" "^5.0.0" + + "@storybook/components@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/components/-/components-7.0.6.tgz#b4b3042042dd0d5a77910c78a5b131016f01d316" + integrity sha512-SiHkSgYR8CcAGrWLof85FImcPIb+ApRW6K3LVcyinctJzOQCWLgh0poKUQ5och3CjSxQbM1G4S1ZXrAfZdU9Cg== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/csf" "^0.1.0" + "@storybook/global" "^5.0.0" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + memoizerific "^1.11.3" + use-resize-observer "^9.1.0" + util-deprecate "^1.0.2" + + "@storybook/core-client@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/core-client/-/core-client-7.0.6.tgz#c36f05c5f0b31de6112980933325c32dc4a9607e" + integrity sha512-XF6m6Yr+6AjYxaAU5/1Nor5tjn0IRNXU85xUgll8JkhlYDsPmXwolQRb2lfArbCuXE72E2CcOz9KCqo7oNE3OA== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/preview-api" "7.0.6" + + "@storybook/core-common@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/core-common/-/core-common-7.0.6.tgz#dfb40ca70e048d333865e9a3a3af5d895b69d530" + integrity sha512-vnrv7Wl2yqfl0BLda/57Ii2OgeSO5mVWgvy9WUER3xdEX6obLgEKqhq08U+dkp0pX8YEyjQgfe+rqyanEspLDQ== + dependencies: + "@storybook/node-logger" "7.0.6" + "@storybook/types" "7.0.6" + "@types/node" "^16.0.0" + "@types/pretty-hrtime" "^1.0.0" + chalk "^4.1.0" + esbuild "^0.17.0" + esbuild-register "^3.4.0" + file-system-cache "^2.0.0" + find-up "^5.0.0" + fs-extra "^11.1.0" + glob "^8.1.0" + glob-promise "^6.0.2" + handlebars "^4.7.7" + lazy-universal-dotenv "^4.0.0" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + ts-dedent "^2.0.0" + + "@storybook/core-events@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/core-events/-/core-events-7.0.6.tgz#f3b4876cb9003a6bbdbd9602d017e2b37ec86f78" + integrity sha512-kGrtjlYtjd4iTVk+Phb4CymZaVkB+MGscKAgcO8gfgJ/Q/gq8HQLVZSIzeoCDcDSHOGlBzbg2WVtdHIHhCKlOQ== + + "@storybook/csf-plugin@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/csf-plugin/-/csf-plugin-7.0.6.tgz#969a94325fddd507e99c0cfc868eb3962566416a" + integrity sha512-3NnqKcR2JQwvmT/aX1dCNNk7XS2hm9iP8lCwZxYT9KVIqDymA5mzEBMCH6y+eRYCmaCOAD9ITN+5xT4XoRMmSQ== + dependencies: + "@storybook/csf-tools" "7.0.6" + unplugin "^0.10.2" + + "@storybook/csf-tools@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/csf-tools/-/csf-tools-7.0.6.tgz#c6789306b004fba1a8e0d1548e31540259a0f23d" + integrity sha512-xKOjuAlFuUOWO6JmhcEqUGTSGds9hbGSLYg0bh2BueWRvqhT3kvHqE4OKWmEfhfl4UDxIKbfEbJOxxVNni14gg== + dependencies: + "@babel/generator" "~7.21.1" + "@babel/parser" "~7.21.2" + "@babel/traverse" "~7.21.2" + "@babel/types" "~7.21.2" + "@storybook/csf" "^0.1.0" + "@storybook/types" "7.0.6" + fs-extra "^11.1.0" + recast "^0.23.1" + ts-dedent "^2.0.0" + + "@storybook/csf@^0.1.0": + version "0.1.0" + resolved "https://registry.npmmirror.com/@storybook/csf/-/csf-0.1.0.tgz#62315bf9704f3aa4e0d4d909b9033833774ddfbe" + integrity sha512-uk+jMXCZ8t38jSTHk2o5btI+aV2Ksbvl6DoOv3r6VaCM1KZqeuMwtwywIQdflkA8/6q/dKT8z8L+g8hC4GC3VQ== + dependencies: + type-fest "^2.19.0" + + "@storybook/docs-tools@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/docs-tools/-/docs-tools-7.0.6.tgz#a2ec77d0d006ed554630306cb4b13ce79b25ce6e" + integrity sha512-A4zLn/lliVZwKwkiaiAXsyjeVfoAyixkDSBGYK+hGp6VVWVhYh1+TiWUZXQElnrh/xukxPTPSI/iuW+FbUUpfw== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/core-common" "7.0.6" + "@storybook/preview-api" "7.0.6" + "@storybook/types" "7.0.6" + "@types/doctrine" "^0.0.3" + doctrine "^3.0.0" + lodash "^4.17.21" + + "@storybook/global@^5.0.0": + version "5.0.0" + resolved "https://registry.npmmirror.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" + integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== + + "@storybook/manager-api@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/manager-api/-/manager-api-7.0.6.tgz#7a1539ff0d6d3fbd7527ff5e7357898abf092d14" + integrity sha512-u942CGr/CIJwyeZvLRofPL714YRXVToJXmiyOdFSyGYcC9EQWRRrTX0zg4ZrzvllD4aZe8HXIemqlLrRB+Bu+g== + dependencies: + "@storybook/channels" "7.0.6" + "@storybook/client-logger" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/csf" "^0.1.0" + "@storybook/global" "^5.0.0" + "@storybook/router" "7.0.6" + "@storybook/theming" "7.0.6" + "@storybook/types" "7.0.6" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + semver "^7.3.7" + store2 "^2.14.2" + telejson "^7.0.3" + ts-dedent "^2.0.0" + + "@storybook/mdx2-csf@^1.0.0": + version "1.0.0" + resolved "https://registry.npmmirror.com/@storybook/mdx2-csf/-/mdx2-csf-1.0.0.tgz#ce4b2e44c9082bf382db835eef611b0097b7d771" + integrity sha512-dBAnEL4HfxxJmv7LdEYUoZlQbWj9APZNIbOaq0tgF8XkxiIbzqvgB0jhL/9UOrysSDbQWBiCRTu2wOVxedGfmw== + + "@storybook/node-logger@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/node-logger/-/node-logger-7.0.6.tgz#112f792776395d99d6145cddc718f6bb7af445e2" + integrity sha512-719jP38S72w+dPqIxM9X8+voTmLAkseMktbTlPDJtMKd1br3NveHCpaJkZPCvqlYbZrqzkF1pAFwWVkQyCxbAA== + dependencies: + "@types/npmlog" "^4.1.2" + chalk "^4.1.0" + npmlog "^5.0.1" + pretty-hrtime "^1.0.3" + + "@storybook/postinstall@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/postinstall/-/postinstall-7.0.6.tgz#9aa1d5f679fdb29f20820b5d08e255bf624811d6" + integrity sha512-NDAA2I2LqDKXqnCMgnNNpwU87rNYmf5tjLg0MK9NFR79zSdjPryy+64oBWoNjGdub342Y9fyc3gTV7OIQdvH0Q== + + "@storybook/preview-api@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/preview-api/-/preview-api-7.0.6.tgz#2f12a0035243496e8777cb8122bc0b2db5820d16" + integrity sha512-uNsedNyiEccBV2EDUC/xcKTbmiNCYuVHbgOoWTmBz0ZqFo9bX0jxkpyYWHEhJM79qqVqmrpiQ5jbS8QKn8TIxQ== + dependencies: + "@storybook/channel-postmessage" "7.0.6" + "@storybook/channels" "7.0.6" + "@storybook/client-logger" "7.0.6" + "@storybook/core-events" "7.0.6" + "@storybook/csf" "^0.1.0" + "@storybook/global" "^5.0.0" + "@storybook/types" "7.0.6" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + + "@storybook/react-dom-shim@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/react-dom-shim/-/react-dom-shim-7.0.6.tgz#c7baca7a09938d79f108cb70b748ab379e90774d" + integrity sha512-pmoyspsehnaSJGYXDXK4tJTyDRiWYsb5HDwmT/ZlB5iS0PEP2vB5ZAW0M6MZPCNq+rcyIhRzWpylgccJ8OJquQ== + + "@storybook/react@^7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/react/-/react-7.0.6.tgz#62475faa178b8668baa7c95159bc5dc5fadd3569" + integrity sha512-9+FTRLspx5lZi1vWamwMRla4lJh6mygv6e01qxaav0pvyyG5nAloFLWYkfrf5Y8nWFpJxHT0YXt3hPjzgl1wHA== + dependencies: + "@storybook/client-logger" "7.0.6" + "@storybook/core-client" "7.0.6" + "@storybook/docs-tools" "7.0.6" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.6" + "@storybook/react-dom-shim" "7.0.6" + "@storybook/types" "7.0.6" + "@types/escodegen" "^0.0.6" + "@types/estree" "^0.0.51" + "@types/node" "^16.0.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + escodegen "^2.0.0" + html-tags "^3.1.0" + lodash "^4.17.21" + prop-types "^15.7.2" + react-element-to-jsx-string "^15.0.0" + ts-dedent "^2.0.0" + type-fest "^2.19.0" + util-deprecate "^1.0.2" + + "@storybook/router@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/router/-/router-7.0.6.tgz#051db34924b9b248a93455fbdd8b8f7f20c09543" + integrity sha512-JdqNMxybgugQc/qZ69YeFn81wvLGGGOTVfCbimE5RJbTu0BPH7vtfsrhhP1muumYBizrpNgkueYMfqmaz91zJw== + dependencies: + "@storybook/client-logger" "7.0.6" + memoizerific "^1.11.3" + qs "^6.10.0" + + "@storybook/theming@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/theming/-/theming-7.0.6.tgz#b42c1840c12a1c0198c704ce746992223ffa4e8b" + integrity sha512-EVN3cA9Z2odkPdUgKNTJTEa5i1H2EJzGDAh/b3GLDQgIPOBD6/ynQIB+e2TmJUFflIyRTuDZJrhcf33U6J9Pww== + dependencies: + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@storybook/client-logger" "7.0.6" + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + + "@storybook/types@7.0.6": + version "7.0.6" + resolved "https://registry.npmmirror.com/@storybook/types/-/types-7.0.6.tgz#3bdc0f4ade0c21548a3b6423b64c8ae1e797ba35" + integrity sha512-dFASQxzvldU2Nx/eJG+oL4wCchUWAKOmOSYJYhKgtGpx99oXOiWUyC0SgCpTveBJ7AppoiseyasQ9Gd/Ccycdw== + dependencies: + "@storybook/channels" "7.0.6" + "@types/babel__core" "^7.0.0" + "@types/express" "^4.7.0" + file-system-cache "^2.0.0" + + "@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + + "@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + + "@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + + "@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + + "@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + + "@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + + "@tufjs/models@1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@tufjs/models/-/models-1.0.1.tgz#cc8bb0478188b4b6e58d5528668212724aac87ac" + integrity sha512-AY0VoG/AXdlSOocuREfPoEW4SNhOPp/7fw6mpAxfVIny1uZ+0fEtMoCi7NhELSlqQIRLMu7RgfKhkxT+AJ+EXg== + dependencies: + minimatch "^7.4.2" + + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.20.0" + resolved "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + + "@types/babel__generator@*", "@types/babel__generator@^7.6.4": + version "7.6.4" + resolved "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + + "@types/babel__template@*": + version "7.4.1" + resolved "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + + "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6", "@types/babel__traverse@^7.18.3": + version "7.18.3" + resolved "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== + dependencies: + "@babel/types" "^7.3.0" + + "@types/body-parser@*": + version "1.19.2" + resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + + "@types/color-convert@*": + version "2.0.0" + resolved "https://registry.npmmirror.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22" + integrity sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ== + dependencies: + "@types/color-name" "*" + + "@types/color-name@*": + version "1.1.1" + resolved "https://registry.npmmirror.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + + "@types/color@^3.0.3": + version "3.0.3" + resolved "https://registry.npmmirror.com/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" + integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== + dependencies: + "@types/color-convert" "*" + + "@types/connect@*": + version "3.4.35" + resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + + "@types/crypto-js@^4.1.1": + version "4.1.1" + resolved "https://registry.npmmirror.com/@types/crypto-js/-/crypto-js-4.1.1.tgz#602859584cecc91894eb23a4892f38cfa927890d" + integrity sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA== + + "@types/doctrine@^0.0.3": + version "0.0.3" + resolved "https://registry.npmmirror.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" + integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== + + "@types/escodegen@^0.0.6": + version "0.0.6" + resolved "https://registry.npmmirror.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" + integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== + + "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + + "@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + + "@types/express@^4.7.0": + version "4.17.17" + resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + + "@types/glob@^8.0.0": + version "8.1.0" + resolved "https://registry.npmmirror.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== + dependencies: + "@types/minimatch" "^5.1.2" + "@types/node" "*" + + "@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + + "@types/history@*": + version "5.0.0" + resolved "https://registry.npmmirror.com/@types/history/-/history-5.0.0.tgz#29f919f0c8e302763798118f45b19cab4a886f14" + integrity sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ== + dependencies: + history "*" + + "@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.npmmirror.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + + "@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.npmmirror.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + + "@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmmirror.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + + "@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.npmmirror.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + + "@types/jest@^29.2.4": + version "29.5.0" + resolved "https://registry.npmmirror.com/@types/jest/-/jest-29.5.0.tgz#337b90bbcfe42158f39c2fb5619ad044bbb518ac" + integrity sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + + "@types/js-cookie@^2.x.x": + version "2.2.7" + resolved "https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" + integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== + + "@types/jsdom@^20.0.0": + version "20.0.1" + resolved "https://registry.npmmirror.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + + "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + + "@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + + "@types/lodash-es@^4.17.5": + version "4.17.7" + resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.7.tgz#22edcae9f44aff08546e71db8925f05b33c7cc40" + integrity sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ== + dependencies: + "@types/lodash" "*" + + "@types/lodash.get@^4.4.7": + version "4.4.7" + resolved "https://registry.npmmirror.com/@types/lodash.get/-/lodash.get-4.4.7.tgz#1ea63d8b94709f6bc9e231f252b31440abe312cf" + integrity sha512-af34Mj+KdDeuzsJBxc/XeTtOx0SZHZNLd+hdrn+PcKGQs0EG2TJTzQAOTCZTgDJCArahlCzLWSy8c2w59JRz7Q== + dependencies: + "@types/lodash" "*" + + "@types/lodash.isequal@4.5.6": + version "4.5.6" + resolved "https://registry.npmmirror.com/@types/lodash.isequal/-/lodash.isequal-4.5.6.tgz#ff42a1b8e20caa59a97e446a77dc57db923bc02b" + integrity sha512-Ww4UGSe3DmtvLLJm2F16hDwEQSv7U0Rr8SujLUA2wHI2D2dm8kPu6Et+/y303LfjTIwSBKXB/YTUcAKpem/XEg== + dependencies: + "@types/lodash" "*" + + "@types/lodash.set@^4.3.7": + version "4.3.7" + resolved "https://registry.npmmirror.com/@types/lodash.set/-/lodash.set-4.3.7.tgz#784fccea3fbef4d0949d1897a780f592da700942" + integrity sha512-bS5Wkg/nrT82YUfkNYPSccFrNZRL+irl7Yt4iM6OTSQ0VZJED2oUIVm15NkNtUAQ8SRhCe+axqERUV6MJgkeEg== + dependencies: + "@types/lodash" "*" + + "@types/lodash@*", "@types/lodash@^4.14.167": + version "4.14.191" + resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + + "@types/mdx@^2.0.0": + version "2.0.4" + resolved "https://registry.npmmirror.com/@types/mdx/-/mdx-2.0.4.tgz#d1cad61ccc803b3c248c3d9990a2a6880bef537f" + integrity sha512-qCYrNdpKwN6YO6FVnx+ulfqifKlE3lQGsNhvDaW9Oxzyob/cRLBJWow8GHBBD4NxQ7BVvtsATgLsX0vZAWmtrg== + + "@types/mime@*": + version "3.0.1" + resolved "https://registry.npmmirror.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + + "@types/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + + "@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + + "@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + + "@types/node@*": + version "18.15.5" + resolved "https://registry.npmmirror.com/@types/node/-/node-18.15.5.tgz#3af577099a99c61479149b716183e70b5239324a" + integrity sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew== + + "@types/node@^16.0.0": + version "16.18.24" + resolved "https://registry.npmmirror.com/@types/node/-/node-16.18.24.tgz#f21925dd56cd3467b4e1e0c5071d0f2af5e9a316" + integrity sha512-zvSN2Esek1aeLdKDYuntKAYjti9Z2oT4I8bfkLLhIxHlv3dwZ5vvATxOc31820iYm4hQRCwjUgDpwSMFjfTUnw== + + "@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + + "@types/npmlog@^4.1.2": + version "4.1.4" + resolved "https://registry.npmmirror.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" + integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== + + "@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + + "@types/prettier@^2.1.5": + version "2.7.2" + resolved "https://registry.npmmirror.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + + "@types/pretty-hrtime@^1.0.0": + version "1.0.1" + resolved "https://registry.npmmirror.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" + integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== + + "@types/prop-types@*": + version "15.7.5" + resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + + "@types/qs@*", "@types/qs@^6.9.5": + version "6.9.7" + resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + + "@types/range-parser@*": + version "1.2.4" + resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + + "@types/react-color@^3.0.6": + version "3.0.6" + resolved "https://registry.npmmirror.com/@types/react-color/-/react-color-3.0.6.tgz#602fed023802b2424e7cd6ff3594ccd3d5055f9a" + integrity sha512-OzPIO5AyRmLA7PlOyISlgabpYUa3En74LP8mTMa0veCA719SvYQov4WLMsHvCgXP+L+KI9yGhYnqZafVGG0P4w== + dependencies: + "@types/react" "*" + "@types/reactcss" "*" + + "@types/react-dom@18.0.11": + version "18.0.11" + resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" + integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== + dependencies: + "@types/react" "*" + + "@types/react-dom@^16.9.8": + version "16.9.18" + resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-16.9.18.tgz#1fda8b84370b1339d639a797a84c16d5a195b419" + integrity sha512-lmNARUX3+rNF/nmoAFqasG0jAA7q6MeGZK/fdeLwY3kAA4NPgHHrG5bNQe2B5xmD4B+x6Z6h0rEJQ7MEEgQxsw== + dependencies: + "@types/react" "^16" + + "@types/react-router-config@5.0.2": + version "5.0.2" + resolved "https://registry.npmmirror.com/@types/react-router-config/-/react-router-config-5.0.2.tgz#4d3b52e71ed363a1976a12321e67b09a99ad6d10" + integrity sha512-WOSetDV3YPxbkVJAdv/bqExJjmcdCi/vpCJh3NfQOy1X15vHMSiMioXIcGekXDJJYhqGUMDo9e337mh508foAA== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-router" "*" + + "@types/react-router-config@^5.0.2": + version "5.0.6" + resolved "https://registry.npmmirror.com/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451" + integrity sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + + "@types/react-router-dom@5.1.7": + version "5.1.7" + resolved "https://registry.npmmirror.com/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271" + integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-router" "*" + + "@types/react-router@*": + version "5.1.20" + resolved "https://registry.npmmirror.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + + "@types/react-router@5.1.12": + version "5.1.12" + resolved "https://registry.npmmirror.com/@types/react-router/-/react-router-5.1.12.tgz#0f300e09468e7aed86e18241c90238c18c377e51" + integrity sha512-0bhXQwHYfMeJlCh7mGhc0VJTRm0Gk+Z8T00aiP4702mDUuLs9SMhnd2DitpjWFjdOecx2UXtICK14H9iMnziGA== + dependencies: + "@types/history" "*" + "@types/react" "*" + + "@types/react@*": + version "18.0.28" + resolved "https://registry.npmmirror.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" + integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + + "@types/react@18.0.29": + version "18.0.29" + resolved "https://registry.npmmirror.com/@types/react/-/react-18.0.29.tgz#4cead505172c0020c5b51940199e31fc6ff2f63a" + integrity sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + + "@types/react@>=16": + version "18.0.38" + resolved "https://registry.npmmirror.com/@types/react/-/react-18.0.38.tgz#02a23bef8848b360a0d1dceef4432c15c21c600c" + integrity sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + + "@types/react@^16", "@types/react@^16.9.43": + version "16.14.35" + resolved "https://registry.npmmirror.com/@types/react/-/react-16.14.35.tgz#9d3cf047d85aca8006c4776693124a5be90ee429" + integrity sha512-NUEiwmSS1XXtmBcsm1NyRRPYjoZF2YTE89/5QiLt5mlGffYK9FQqOKuOLuXNrjPQV04oQgaZG+Yq02ZfHoFyyg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + + "@types/reactcss@*": + version "1.2.6" + resolved "https://registry.npmmirror.com/@types/reactcss/-/reactcss-1.2.6.tgz#133c1e7e896f2726370d1d5a26bf06a30a038bcc" + integrity sha512-qaIzpCuXNWomGR1Xq8SCFTtF4v8V27Y6f+b9+bzHiv087MylI/nTCqqdChNeWS7tslgROmYB7yeiruWX7WnqNg== + dependencies: + "@types/react" "*" + + "@types/scheduler@*": + version "0.16.2" + resolved "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + + "@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + + "@types/serve-static@*": + version "1.15.1" + resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + dependencies: + "@types/mime" "*" + "@types/node" "*" + + "@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.npmmirror.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + + "@types/styled-components@^5.1.25": + version "5.1.26" + resolved "https://registry.npmmirror.com/@types/styled-components/-/styled-components-5.1.26.tgz#5627e6812ee96d755028a98dae61d28e57c233af" + integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + + "@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.npmmirror.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + + "@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + + "@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.npmmirror.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + + "@types/yargs@^17.0.8": + version "17.0.23" + resolved "https://registry.npmmirror.com/@types/yargs/-/yargs-17.0.23.tgz#a7db3a2062c95ca1a5e0d5d5ddb6521cbc649e35" + integrity sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ== + dependencies: + "@types/yargs-parser" "*" + + "@typescript-eslint/eslint-plugin@^5.53.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz#e4fbb4d6dd8dab3e733485c1a44a02189ae75364" + integrity sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.56.0" + "@typescript-eslint/type-utils" "5.56.0" + "@typescript-eslint/utils" "5.56.0" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + + "@typescript-eslint/parser@^5.53.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.56.0.tgz#42eafb44b639ef1dbd54a3dbe628c446ca753ea6" + integrity sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg== + dependencies: + "@typescript-eslint/scope-manager" "5.56.0" + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/typescript-estree" "5.56.0" + debug "^4.3.4" + + "@typescript-eslint/scope-manager@5.56.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz#62b4055088903b5254fa20403010e1c16d6ab725" + integrity sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw== + dependencies: + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/visitor-keys" "5.56.0" + + "@typescript-eslint/type-utils@5.56.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz#e6f004a072f09c42e263dc50e98c70b41a509685" + integrity sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A== + dependencies: + "@typescript-eslint/typescript-estree" "5.56.0" + "@typescript-eslint/utils" "5.56.0" + debug "^4.3.4" + tsutils "^3.21.0" + + "@typescript-eslint/types@5.56.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.56.0.tgz#b03f0bfd6fa2afff4e67c5795930aff398cbd834" + integrity sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w== + + "@typescript-eslint/typescript-estree@5.56.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz#48342aa2344649a03321e74cab9ccecb9af086c3" + integrity sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg== + dependencies: + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/visitor-keys" "5.56.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + + "@typescript-eslint/utils@5.56.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.56.0.tgz#db64705409b9a15546053fb4deb2888b37df1f41" + integrity sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.56.0" + "@typescript-eslint/types" "5.56.0" + "@typescript-eslint/typescript-estree" "5.56.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + + "@typescript-eslint/visitor-keys@5.56.0": + version "5.56.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz#f19eb297d972417eb13cb69b35b3213e13cc214f" + integrity sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q== + dependencies: + "@typescript-eslint/types" "5.56.0" + eslint-visitor-keys "^3.3.0" + + "@uiw/codemirror-extensions-basic-setup@4.19.9": + version "4.19.9" + resolved "https://registry.npmmirror.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.19.9.tgz#9c14901c7165bba9ef9a06d9c7a80d025e9c1ad7" + integrity sha512-O4yAgVpD3Pon4t4+lwZ2MTGg2TeU/Jv8YzKS9ap4fP/WMTVrKmpdq+DOafbhZSlhmU0XGfQPPJ4WX6rtZgx3Rw== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + + "@uiw/react-codemirror@^4.19.3": + version "4.19.9" + resolved "https://registry.npmmirror.com/@uiw/react-codemirror/-/react-codemirror-4.19.9.tgz#c999e35eb2739ff15031a358b675393576909474" + integrity sha512-U+A1fSfELMFFs5a+ZOPwCJKZMYaMy6QHOfNOOV7WhSveM7GYHT970GjTfs2dn1LlvhebwyK9ei0rCXZdsI9n9Q== + dependencies: + "@babel/runtime" "^7.18.6" + "@codemirror/commands" "^6.1.0" + "@codemirror/state" "^6.1.1" + "@codemirror/theme-one-dark" "^6.0.0" + "@uiw/codemirror-extensions-basic-setup" "4.19.9" + codemirror "^6.0.0" + + "@umijs/ast@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/ast/-/ast-3.5.38.tgz#3dffbbb3d6ab92d34ebae82764f2d878b81a3afe" + integrity sha512-BqRu6DjHFD7Re6ZDXC4ke0vMEHB0i4LbSxnpHSHg6Dj2qbkjAnNlYcvxHrKYzXuGEcn15SjtbWIBcqGrZTpN7g== + dependencies: + "@umijs/utils" "3.5.38" + + "@umijs/babel-plugin-auto-css-modules@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/babel-plugin-auto-css-modules/-/babel-plugin-auto-css-modules-3.5.38.tgz#3eef4df2413bed4a465595c98a260d5f24ce43da" + integrity sha512-dAzqyrlVXC3L1SQoL6pb95qzXgWRNta7LWS3o0jFleCpK+NyHpXLNEignuy0+Ekyz+wEUXlUCYfR1IEVXeovpQ== + dependencies: + "@umijs/utils" "3.5.38" + + "@umijs/babel-plugin-import-to-await-require@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/babel-plugin-import-to-await-require/-/babel-plugin-import-to-await-require-3.5.38.tgz#4f1f4656f52148ee5c9831c8ba61f31689602bf6" + integrity sha512-WcYl+HcfFbX5woFWm7iqlFfJsEOG3a+T6lCdGTgrIDhgjmZonPe8oGORB24URZnpADEJ8Zhd6rvoA625SIvMsQ== + dependencies: + "@umijs/utils" "3.5.38" + + "@umijs/babel-plugin-lock-core-js-3@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/babel-plugin-lock-core-js-3/-/babel-plugin-lock-core-js-3-3.5.38.tgz#9be6b0407f0fcf085243ef224107386b215d1590" + integrity sha512-JGZC7jKq67s6+xOSQWQoRtHabo9wa4Pf+cMw50a0PMT6QKDVDNvW+wcQ0mC4vRQwO+wR9A749croUtyqAjXL5w== + dependencies: + "@umijs/utils" "3.5.38" + core-js "3.6.5" + + "@umijs/babel-plugin-no-anonymous-default-export@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/babel-plugin-no-anonymous-default-export/-/babel-plugin-no-anonymous-default-export-3.5.38.tgz#fdb82395d5ebff5837246b47ca071b94c5b02120" + integrity sha512-5RfKt+5UDaqOZASeHM1jLlUS2uBh/6Fzbfh9X2dE9Mo906AqC5dPN6NWWeQi+POLZr3LtWfE8RBBGxo44xUQLQ== + dependencies: + "@umijs/utils" "3.5.38" + + "@umijs/babel-preset-umi@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/babel-preset-umi/-/babel-preset-umi-3.5.38.tgz#358ea9293f74d24e5bd1ef5ebb460280510d3331" + integrity sha512-96NcgMnCzjZ6LhMH9BbQmk/7hXgsKe4WHeoiTvt0GibZf/gd0DAW+It38OnOnJuyJ/iXeTiN0haYe4HxRw3BRg== + dependencies: + "@babel/runtime" "7.18.6" + "@umijs/babel-plugin-auto-css-modules" "3.5.38" + "@umijs/babel-plugin-import-to-await-require" "3.5.38" + "@umijs/babel-plugin-lock-core-js-3" "3.5.38" + "@umijs/babel-plugin-no-anonymous-default-export" "3.5.38" + "@umijs/deps" "3.5.38" + "@umijs/utils" "3.5.38" + + "@umijs/bundler-utils@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/bundler-utils/-/bundler-utils-3.5.38.tgz#3a5a1ea9120518b1576e385fb6f89ada0310be5c" + integrity sha512-1EmuejpnR9U05IFT9bLhb29frf4yXZaXimFdAlpZhBlc40IKVb62TbbI1+pJ+hrquhvYfoKhD9ID8lVw8kkFYw== + dependencies: + "@umijs/babel-preset-umi" "3.5.38" + "@umijs/types" "3.5.38" + "@umijs/utils" "3.5.38" + + "@umijs/bundler-webpack@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/bundler-webpack/-/bundler-webpack-3.5.38.tgz#fd2449c4c5f849d3b7db3dcae64979afc1b50275" + integrity sha512-ywc0Vi9HB0oXS9lBnB4CJ5GwE3JF7ZbjnB4UJ14cpLq1fb0C3p52Z3SlSYI6AU3Jz770bZR6G/j3KsvXOojAzA== + dependencies: + "@umijs/bundler-utils" "3.5.38" + "@umijs/case-sensitive-paths-webpack-plugin" "^1.0.1" + "@umijs/deps" "3.5.38" + "@umijs/types" "3.5.38" + "@umijs/utils" "3.5.38" + jest-worker "26.6.2" + node-libs-browser "2.2.1" + normalize-url "1.9.1" + postcss "7.0.32" + postcss-flexbugs-fixes "4.2.1" + postcss-loader "3.0.0" + postcss-preset-env "6.7.0" + postcss-safe-parser "4.0.2" + terser "5.14.2" + webpack-chain "6.5.1" + + "@umijs/case-sensitive-paths-webpack-plugin@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@umijs/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-1.0.1.tgz#02655299f52912289f2df28fbeaea636e748c1df" + integrity sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q== + + "@umijs/core@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/core/-/core-3.5.38.tgz#079d05ca7f586fe09be43d43197913d5efc29c75" + integrity sha512-Bz7gsd2OPmD3GTq7lDk2q12D/N5ZY4EQyY6+mJaWiuzIwhKpWJpC1x1BV7QB2MeIEJPp3YHuMp+EXds4uWynBQ== + dependencies: + "@umijs/ast" "3.5.38" + "@umijs/babel-preset-umi" "3.5.38" + "@umijs/deps" "3.5.38" + "@umijs/utils" "3.5.38" + + "@umijs/deps@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/deps/-/deps-3.5.38.tgz#94994a436bef6f2024d0f52d0fa190d7701f7399" + integrity sha512-y/b87W6CjOpDinBtk1z8ndGlh1l1uYVgrBlORZDiq1OjYS88sY2SmP5y3xGO9SiZGXyHSmRqJaxFfT8VvjQN1Q== + dependencies: + "@bloomberg/record-tuple-polyfill" "0.0.3" + chokidar "3.5.1" + clipboardy "2.3.0" + esbuild "0.12.15" + jest-worker "24.9.0" + prettier "2.2.1" + regenerate-unicode-properties "10.0.1" + + "@umijs/preset-built-in@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/preset-built-in/-/preset-built-in-3.5.38.tgz#8dbec32c76c19ad3f7f6d16d857e2bc622d2f91f" + integrity sha512-QoXHMmZm0S3zKCbJ1DDfaage0QF4zjnCjNIBzULFpFDUN7tZ4E69LXkqjFu4po9f+FokBxj1tn9ZB9wcpJwDRg== + dependencies: + "@types/react-router-config" "5.0.2" + "@umijs/babel-preset-umi" "3.5.38" + "@umijs/bundler-webpack" "3.5.38" + "@umijs/core" "3.5.38" + "@umijs/deps" "3.5.38" + "@umijs/renderer-mpa" "3.5.38" + "@umijs/renderer-react" "3.5.38" + "@umijs/runtime" "3.5.38" + "@umijs/server" "3.5.38" + "@umijs/types" "3.5.38" + "@umijs/utils" "3.5.38" + ansi-html "^0.0.9" + core-js "3.6.5" + core-js-pure "^3.8.1" + error-stack-parser "^2.0.6" + es-module-lexer "0.7.1" + es5-imcompatible-versions "^0.1.62" + history-with-query "4.10.4" + html-entities "^2.1.0" + mime "1.4.1" + react-refresh "0.10.0" + react-router "5.2.0" + react-router-config "5.1.1" + react-router-dom "5.2.0" + regenerator-runtime "0.13.5" + schema-utils "^3.0.0" + + "@umijs/renderer-mpa@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/renderer-mpa/-/renderer-mpa-3.5.38.tgz#ebae27ab2baea4d4faf7c2af8364c3471bf9a7c1" + integrity sha512-zYnl4HdUdYCZZ9glHT6a234egr5fN6J3WSkiWrs+GBGEP+u3EAdyfaKeJ8rk/RxNMIEp37SsrTnsgRFwmwZnsg== + dependencies: + "@types/react" "^16.9.43" + "@types/react-dom" "^16.9.8" + "@umijs/runtime" "3.5.38" + + "@umijs/renderer-react@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/renderer-react/-/renderer-react-3.5.38.tgz#0add8e28d224691c0b443800e1d2f136f83cf3b8" + integrity sha512-bsBYphb5h2X0M876YEvHPcGMQroU/AxcotUji0BmILXOEmugX/2LCb9EQcWv/oSzED+J646e1HZ+3dU8I8oMPA== + dependencies: + "@types/react" "^16.9.43" + "@types/react-dom" "^16.9.8" + "@types/react-router-config" "^5.0.2" + "@umijs/runtime" "3.5.38" + react-router-config "5.1.1" + + "@umijs/runtime@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/runtime/-/runtime-3.5.38.tgz#1ea4eda00a6ba8ac8a3636a6a069bdebec000dd1" + integrity sha512-zulgJehVnZ9QJVRRMdyZ/8Ga2IOuEjiLxFEQTJ885dTWC9GjOL2zCB7NfLt/93McWQeDP/6OjSTRQxMFWr2aRQ== + dependencies: + "@types/react-router" "5.1.12" + "@types/react-router-dom" "5.1.7" + history-with-query "4.10.4" + react-router "5.2.0" + react-router-dom "5.2.0" + use-subscription "1.5.1" + + "@umijs/server@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/server/-/server-3.5.38.tgz#4d91ac4f7ad260ec9d966a8caec7653a66f007c3" + integrity sha512-rPfFwG6//bzupMBc5Mab3zqwA5X0pfngcv2CUv6iv8e8aRMVBILurXtXx2f6E1B6apaWDIrHlEiR4StEMJgcIA== + dependencies: + "@umijs/core" "3.5.38" + "@umijs/deps" "3.5.38" + "@umijs/utils" "3.5.38" + + "@umijs/types@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/types/-/types-3.5.38.tgz#974209c65cb26bb663529c39104b694ded19d3f7" + integrity sha512-r0uMJUs7/zZsgcyZtuGGeloeCZLNw6DTC894nQoXAgLwJQl9cWQzUu/3JamHupc6OFgsecOo6hu+pWyOdbyg7w== + dependencies: + "@umijs/babel-preset-umi" "3.5.38" + "@umijs/core" "3.5.38" + "@umijs/deps" "3.5.38" + "@umijs/renderer-react" "3.5.38" + "@umijs/server" "3.5.38" + "@umijs/utils" "3.5.38" + webpack-chain "6.5.1" + + "@umijs/utils@3.5.38": + version "3.5.38" + resolved "https://registry.npmmirror.com/@umijs/utils/-/utils-3.5.38.tgz#8f39d85da7c531a73b1b00600a326253ea814243" + integrity sha512-+FTHqPAd/oDLe3G4h7JEb3sQwzHBTgkC6q3PIxesoedkxFG6a5KWbW9A23TjUHYZ+oKo7wYAuYDVj09ns3D+hw== + dependencies: + "@umijs/babel-preset-umi" "3.5.38" + "@umijs/deps" "3.5.38" + + "@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + + "@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + + "@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + + "@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + + "@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + + "@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + + "@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + + "@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + + "@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + + "@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + + "@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + + "@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + + "@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + + "@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + + "@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + + "@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + + "@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + + "@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + + "@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== + + "@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.npmmirror.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== + dependencies: + envinfo "^7.7.3" + + "@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.npmmirror.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== + + "@xgheaven/nos-node-sdk@^0.2.5": + version "0.2.5" + resolved "https://registry.npmmirror.com/@xgheaven/nos-node-sdk/-/nos-node-sdk-0.2.5.tgz#501cf859c3c1bb48a88f187faafc6f9d09258b28" + integrity sha512-9ca8d0Eg9pmHaelBRaXuPkPreH2hnznPfLtJ3PG7BzHI7ac/AoY6rEwzAufUrPJtrJplAyILtRw6t0KmmLKr9A== + dependencies: + date-fns "^1.29.0" + fast-xml-parser "^3.12.0" + mime "^2.3.1" + node-fetch "^2.2.0" + ramda "^0.25.0" + ramda-adjunct "^2.9.0" + + "@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + + "@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + + "@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.npmmirror.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + + "@yarnpkg/parsers@^3.0.0-rc.18": + version "3.0.0-rc.40" + resolved "https://registry.npmmirror.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.40.tgz#972af4bb01d797ad20e12de8126ea2276ab8fdea" + integrity sha512-sKbi5XhHKXCjzb5m0ftGuQuODM2iUXEsrCSl8MkKexNWHepCmU3IPaGTPC5gHZy4sOvsb9JqTLaZEez+kDzG+Q== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + + "@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.npmmirror.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + + JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + + abab@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + + abbrev@1, abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + + abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + + abbrev@~1.0.9: + version "1.0.9" + resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + + abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + + abortcontroller-polyfill@^1.7.3: + version "1.7.5" + resolved "https://registry.npmmirror.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + + acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + + acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + + acorn-walk@^7.2.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + + acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.2.0: + version "8.2.0" + resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + + acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + + acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + + acorn@^8.1.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.8.0, acorn@^8.8.1: + version "8.8.2" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + + add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + + agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + + agentkeepalive@^4.2.1: + version "4.3.0" + resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + dependencies: + debug "^4.1.0" + depd "^2.0.0" + humanize-ms "^1.2.1" + + aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + + ahooks-v3-count@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/ahooks-v3-count/-/ahooks-v3-count-1.0.0.tgz#ddeb392e009ad6e748905b3cbf63a9fd8262ca80" + integrity sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ== + + ahooks@^3.7.2: + version "3.7.5" + resolved "https://registry.npmmirror.com/ahooks/-/ahooks-3.7.5.tgz#fe450bbe1b25edaa5915363583abc32845245a92" + integrity sha512-RWkJYK5xj9ZXROj9jABRDqdpTBimkY1tlyeJQ8Ci7MAl1sC5xzSzwO20ydk6BjtdbWt56DPCYZhq4lGu3O2Zwg== + dependencies: + "@types/js-cookie" "^2.x.x" + ahooks-v3-count "^1.0.0" + dayjs "^1.9.1" + intersection-observer "^0.12.0" + js-cookie "^2.x.x" + lodash "^4.17.21" + resize-observer-polyfill "^1.5.1" + screenfull "^5.0.0" + tslib "^2.4.1" + + ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + + ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + + ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.npmmirror.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + integrity sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ== + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + + ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + + ajv@^8.11.0: + version "8.12.0" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + + ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + + ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + + ansi-html@^0.0.9: + version "0.0.9" + resolved "https://registry.npmmirror.com/ansi-html/-/ansi-html-0.0.9.tgz#6512d02342ae2cc68131952644a129cb734cd3f0" + integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== + + ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + + ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + + ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + + ansi-sequence-parser@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz#4d790f31236ac20366b23b3916b789e1bde39aed" + integrity sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ== + + ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + + ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + + ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + + ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + + ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + + ansi@^0.3.0, ansi@~0.3.0, ansi@~0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" + integrity sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A== + + ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.npmmirror.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + + ansistyles@~0.1.3: + version "0.1.3" + resolved "https://registry.npmmirror.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" + integrity sha512-6QWEyvMgIXX0eO972y7YPBLSBsq7UWKFAoNNTLGaOJ9bstcEL9sCbcjf96dVfNDdUsRoGOK82vWFJlKApXds7g== + + antd-easy-form@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/antd-easy-form/-/antd-easy-form-1.1.3.tgz#84fa26f05310d8d34e80b617801e88097da57a6d" + integrity sha512-jkTzV9qP8ECbSqwrU0/VxuFPsmBnHWCCLlFu3HA26/jQNXtBTKEuS5c26LGfCXwpuf/Z1YBtA6qWlVESASIUBQ== + dependencies: + "@ant-design/icons" "^4.8.0" + react-is "^18.2.0" + + antd@^4.22.3, antd@^4.24.2: + version "4.24.8" + resolved "https://registry.npmmirror.com/antd/-/antd-4.24.8.tgz#22f34de6857556868780dfa5fe7b374b0b71b517" + integrity sha512-wrNy2Hi27uM3948okG3n2GwzQKBFUn1Qn5mn2I/ALcR28rC6cTjHYOuA248Zl9ECzz3jo4TY2R0SIa+5GZ/zGA== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons" "^4.7.0" + "@ant-design/react-slick" "~0.29.1" + "@babel/runtime" "^7.18.3" + "@ctrl/tinycolor" "^3.4.0" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.21" + moment "^2.29.2" + rc-cascader "~3.7.0" + rc-checkbox "~2.3.0" + rc-collapse "~3.4.2" + rc-dialog "~9.0.2" + rc-drawer "~6.1.0" + rc-dropdown "~4.0.0" + rc-field-form "~1.27.0" + rc-image "~5.13.0" + rc-input "~0.1.4" + rc-input-number "~7.3.9" + rc-mentions "~1.13.1" + rc-menu "~9.8.0" + rc-motion "^2.6.1" + rc-notification "~4.6.0" + rc-pagination "~3.2.0" + rc-picker "~2.7.0" + rc-progress "~3.4.1" + rc-rate "~2.9.0" + rc-resize-observer "^1.2.0" + rc-segmented "~2.1.0" + rc-select "~14.1.13" + rc-slider "~10.0.0" + rc-steps "~5.0.0-alpha.2" + rc-switch "~3.2.0" + rc-table "~7.26.0" + rc-tabs "~12.5.6" + rc-textarea "~0.4.5" + rc-tooltip "~5.2.0" + rc-tree "~5.7.0" + rc-tree-select "~5.5.0" + rc-trigger "^5.2.10" + rc-upload "~4.3.0" + rc-util "^5.22.5" + scroll-into-view-if-needed "^2.2.25" + + any-promise@^1.0.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + + anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + + anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + + app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" + integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== + + aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + + "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + + arch@^2.1.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + + archy@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + + are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + + are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + + are-we-there-yet@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" + integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== + dependencies: + delegates "^1.0.0" + readable-stream "^4.1.0" + + are-we-there-yet@~1.0.0: + version "1.0.6" + resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz#a2d28c93102aa6cc96245a26cb954de06ec53f0c" + integrity sha512-Zfw6bteqM9gQXZ1BIWOgM8xEwMrUGoyL8nW13+O+OOgNX3YhuDN1GDgg1NzdTlmm3j+9sHy7uBZ12r+z9lXnZQ== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + + are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + + arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + + argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + + argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + + arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + + arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + + arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + + array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + + array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + + array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + + array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + + array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + + array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + + array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + + array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + + array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmmirror.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + + array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + + arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + + arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + + asap@^2.0.0, asap@~2.0.3: + version "2.0.6" + resolved "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + + asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + + asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + + assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + + assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + integrity sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw== + + assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + + assert@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + + assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + + ast-types@^0.13.2: + version "0.13.4" + resolved "https://registry.npmmirror.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + + ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.npmmirror.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + + astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + + async-each@^1.0.1: + version "1.0.6" + resolved "https://registry.npmmirror.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== + + async-some@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/async-some/-/async-some-1.0.2.tgz#4d8a81620d5958791b5b98f802d3207776e95509" + integrity sha512-VbEsqdl4ztEqzb3Cgpk9L81Q4eyMl3XFdA0i+12Qmyw/bNx4aDAJqmIMKXh1mKGJ2IaPvGvN682YKZDaJMLUdA== + dependencies: + dezalgo "^1.0.2" + + async-validator@^3.2.0: + version "3.5.2" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" + integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== + + async-validator@^4.1.0: + version "4.2.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + + async@^2.0.1, async@^2.6.4: + version "2.6.4" + resolved "https://registry.npmmirror.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + + async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + + asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + + at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + + atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + + autoprefixer@^9.6.1: + version "9.8.8" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + + available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + + aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + integrity sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw== + + aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + + aws4@^1.2.1, aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + + axios-hooks@^3.0.1: + version "3.1.5" + resolved "https://registry.npmmirror.com/axios-hooks/-/axios-hooks-3.1.5.tgz#f1747244379c209567a5f2b73b4b5c59d7199bf2" + integrity sha512-mU4WZ9c6YiOTxgTIKbswoHvb/b9fWXa2FxNFKI/hVcfD9Qemz1r9KLfRSVZf1GZg8nFry7oTM5gxNmPSn5PG0Q== + dependencies: + "@babel/runtime" "7.18.9" + dequal "2.0.3" + lru-cache "6.0.0" + + axios@^0.27.2: + version "0.27.2" + resolved "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + + axios@^1.0.0: + version "1.3.4" + resolved "https://registry.npmmirror.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024" + integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + + babel-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" + integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== + dependencies: + "@jest/transform" "^29.5.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + + babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmmirror.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + + babel-plugin-jest-hoist@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + + babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + + babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + + babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + + "babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.7: + version "2.0.7" + resolved "https://registry.npmmirror.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + + babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.npmmirror.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + + babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + + babel-preset-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== + dependencies: + babel-plugin-jest-hoist "^29.5.0" + babel-preset-current-node-syntax "^1.0.0" + + babel-runtime@^6.23.0: + version "6.26.0" + resolved "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + + balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + + base16@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== + + base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + + base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + 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" + + basic-auth@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + + bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + + before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.npmmirror.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== + + big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + + bin-links@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/bin-links/-/bin-links-4.0.1.tgz#afeb0549e642f61ff889b58ea2f8dca78fb9d8d3" + integrity sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + + binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + + binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + + bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + + bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + + bl@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + integrity sha512-uVVYHEQk+OuWvCi5U+iquVXvvGCWXKawjwELIR2XMLsqfV/e2sGDClVBs8OlGIgGsStPRY/Es311YKYIlYCWAg== + dependencies: + readable-stream "~2.0.5" + + block-stream@*, block-stream@0.0.9: + version "0.0.9" + resolved "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ== + dependencies: + inherits "~2.0.0" + + bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + + bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + + boom@2.x.x: + version "2.10.1" + resolved "https://registry.npmmirror.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + integrity sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q== + dependencies: + hoek "2.x.x" + + brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + + brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + + braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + 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" + + braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + + brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + + browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + + browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + + browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + + browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + + browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + + browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + + browserslist@^4.12.0, browserslist@^4.21.3, browserslist@^4.21.5, browserslist@^4.6.4: + version "4.21.5" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + + bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + + buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + + buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + integrity sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g== + + buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + + buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + + buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + + buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + + builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== + + builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + + builtins@0.0.7: + version "0.0.7" + resolved "https://registry.npmmirror.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a" + integrity sha512-T8uCGKc0/2aLVt6omt8JxDRBoWEMkku+wFesxnhxnt4NygVZG99zqxo7ciK8eebszceKamGoUiLdkXCgGQyrQw== + + builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + + builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.npmmirror.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + + busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + + byte-size@7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== + + bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + + cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + + cacache@^16.0.0, cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.npmmirror.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + + cacache@^17.0.0, cacache@^17.0.4: + version "17.0.5" + resolved "https://registry.npmmirror.com/cacache/-/cacache-17.0.5.tgz#6dbec26c11f1f6a2b558bc11ed3316577c339ebc" + integrity sha512-Y/PRQevNSsjAPWykl9aeGz8Pr+OI6BYM9fYDNMvOkuUiG9IhG4LEmaYrZZZvioMUEQ+cBCxT0v8wrnCURccyKA== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^9.3.1" + lru-cache "^7.7.1" + minipass "^4.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + + cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + 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-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + + caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + + caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + + callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + + callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + + camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + + camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + + camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + + camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + + caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001449: + version "1.0.30001469" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz#3dd505430c8522fdc9f94b4a19518e330f5c945a" + integrity sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== + + caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.npmmirror.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + integrity sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ== + + caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + + cash-dom@^8.1.2: + version "8.1.4" + resolved "https://registry.npmmirror.com/cash-dom/-/cash-dom-8.1.4.tgz#445c2a509cffa8b1c99094634418b4b439d57718" + integrity sha512-bFLMk+r3lv+sDwxlAFfRlMxpRls7zMnSQePVpNouwnpm9G4MbLYZZtIUG2urUgfmIaKlc/hqG8o7yZg3+nFKRA== + + chalk@4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + + chalk@5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" + integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== + + chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + + chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + + chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + + chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + + char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + + char-spinner@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" + integrity sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g== + + chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + + chmodr@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/chmodr/-/chmodr-1.0.2.tgz#04662b932d0f02ec66deaa2b0ea42811968e3eb9" + integrity sha512-oHosCxCZpaI/Db320r8M5SHHZuVfnFJVwkSGkI81QLnnVg25pDw//NgD4fy1WvvydhZNi2G+jrbNSprRkfbRYA== + + chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + + chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + + chokidar@^3.4.1, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + + chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + + chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + + chownr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + integrity sha512-cKnqUJAC8G6cuN1DiRRTifu+s1BlAQNtalzGphFEV0pl0p46dsxJD4l1AOlyKJeLZOFzo3c34R7F3djxaCu8Kw== + + chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + + ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + + ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + + cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + + class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + + classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + + clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + + cli-cursor@3.1.0, cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + + cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + + cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + + cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + + cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + + cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + + clipboardy@2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + + cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + + cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + + clone-deep@4.0.1, clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + + clone@2.x: + version "2.1.2" + resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + + clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + + cmd-shim@5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== + dependencies: + mkdirp-infer-owner "^2.0.0" + + cmd-shim@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" + integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== + + cmd-shim@~2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + integrity sha512-NLt0ntM0kvuSNrToO0RTFiNRHdioWsLW+OgDAEVDvIivsYwR+AjlzvLaMJ2Z+SNRpV3vdsDrHp1WI00eetDYzw== + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + + co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + + code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + + codemirror@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29" + integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + + collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + + collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + + color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + + color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + + color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + + color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + + color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + + color-support@^1.1.2, color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + + color@^4.2.3: + version "4.2.3" + resolved "https://registry.npmmirror.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + + colorette@^2.0.14, colorette@^2.0.19: + version "2.0.19" + resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + + columnify@1.6.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + + columnify@~1.5.4: + version "1.5.4" + resolved "https://registry.npmmirror.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha512-rFl+iXVT1nhLQPfGDw+3WcS8rmm7XsLKUmhsGE3ihzzpIikeGrTaZPIRKYWeLsLBypsHzjXIvYEltVUZS84XxQ== + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + + combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + + commander@^10.0.0: + version "10.0.0" + resolved "https://registry.npmmirror.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" + integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== + + commander@^2.20.0, commander@^2.9.0: + version "2.20.3" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + + commander@^7.0.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + + common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + + commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + + compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + + component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + + compute-scroll-into-view@^1.0.20: + version "1.0.20" + resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" + integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== + + concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + + concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + + concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + + config-chain@1.1.12: + version "1.1.12" + resolved "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + + config-chain@~1.1.10: + version "1.1.13" + resolved "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + + console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + + console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + + constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + + content-type@^1.0.2: + version "1.0.5" + resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + + conventional-changelog-angular@5.0.12: + version "5.0.12" + resolved "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + + conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12: + version "5.0.13" + resolved "https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + + conventional-changelog-atom@^2.0.8: + version "2.0.8" + resolved "https://registry.npmmirror.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" + integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== + dependencies: + q "^1.5.1" + + conventional-changelog-cli@^2.2.2: + version "2.2.2" + resolved "https://registry.npmmirror.com/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz#9a7746cede92c6a8f27dc46692efaadfbed60daa" + integrity sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA== + dependencies: + add-stream "^1.0.0" + conventional-changelog "^3.1.24" + lodash "^4.17.15" + meow "^8.0.0" + tempfile "^3.0.0" + + conventional-changelog-codemirror@^2.0.8: + version "2.0.8" + resolved "https://registry.npmmirror.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc" + integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw== + dependencies: + q "^1.5.1" + + conventional-changelog-conventionalcommits@^4.5.0: + version "4.6.3" + resolved "https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz#0765490f56424b46f6cb4db9135902d6e5a36dc2" + integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== + dependencies: + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" + + conventional-changelog-conventionalcommits@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz#41bdce54eb65a848a4a3ffdca93e92fa22b64a86" + integrity sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw== + dependencies: + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" + + conventional-changelog-core@4.2.4, conventional-changelog-core@^4.2.1: + version "4.2.4" + resolved "https://registry.npmmirror.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + + conventional-changelog-ember@^2.0.9: + version "2.0.9" + resolved "https://registry.npmmirror.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962" + integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A== + dependencies: + q "^1.5.1" + + conventional-changelog-eslint@^3.0.9: + version "3.0.9" + resolved "https://registry.npmmirror.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb" + integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA== + dependencies: + q "^1.5.1" + + conventional-changelog-express@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8" + integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ== + dependencies: + q "^1.5.1" + + conventional-changelog-jquery@^3.0.11: + version "3.0.11" + resolved "https://registry.npmmirror.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf" + integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw== + dependencies: + q "^1.5.1" + + conventional-changelog-jshint@^2.0.9: + version "2.0.9" + resolved "https://registry.npmmirror.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff" + integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + + conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.npmmirror.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + + conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmmirror.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + + conventional-changelog@^3.1.24: + version "3.1.25" + resolved "https://registry.npmmirror.com/conventional-changelog/-/conventional-changelog-3.1.25.tgz#3e227a37d15684f5aa1fb52222a6e9e2536ccaff" + integrity sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ== + dependencies: + conventional-changelog-angular "^5.0.12" + conventional-changelog-atom "^2.0.8" + conventional-changelog-codemirror "^2.0.8" + conventional-changelog-conventionalcommits "^4.5.0" + conventional-changelog-core "^4.2.1" + conventional-changelog-ember "^2.0.9" + conventional-changelog-eslint "^3.0.9" + conventional-changelog-express "^2.0.6" + conventional-changelog-jquery "^3.0.11" + conventional-changelog-jshint "^2.0.9" + conventional-changelog-preset-loader "^2.3.4" + + conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.npmmirror.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + + conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.2: + version "3.2.4" + resolved "https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + + conventional-recommended-bump@6.1.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + + convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + + convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + + copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + + copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + + copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + + copy-to-clipboard@^3.2.0: + version "3.3.3" + resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + + copy-to@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" + integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== + + copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + + coral-system@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/coral-system/-/coral-system-1.0.4.tgz#26d9bba7c44bce477feb067c7e541e7224c97b35" + integrity sha512-Qy6H4PNAoWsr6IdermB7ZbMU7yTg57OkNgfklrXXI/OgOuUpnEcmnrP7ybQGb5XhDBwKWnCxGW6inurSBCJRRw== + dependencies: + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/memoize" "^0.8.0" + csstype "^3.1.1" + lodash "^4.17.21" + + coral-system@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/coral-system/-/coral-system-1.0.5.tgz#df67a93a09382146f6af78b463f2bd8e981e397a" + integrity sha512-sTiDSqScovVue/tWEL3NqJPyrBk2DiYxKBnbvKFHbiQhjO9geA3l7eOxCqdynM1VdhrhGiz+hwAFuqpJibQB5Q== + dependencies: + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/memoize" "^0.8.0" + csstype "^3.1.1" + lodash "^4.17.21" + + core-js-compat@^3.25.1: + version "3.29.1" + resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.29.1.tgz#15c0fb812ea27c973c18d425099afa50b934b41b" + integrity sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA== + dependencies: + browserslist "^4.21.5" + + core-js-pure@^3.8.1: + version "3.29.1" + resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.29.1.tgz#1be6ca2b8772f6b4df7fc4621743286e676c6162" + integrity sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg== + + core-js@3.6.5: + version "3.6.5" + resolved "https://registry.npmmirror.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + + core-js@^2.4.0, core-js@^2.6.12: + version "2.6.12" + resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + + core-js@^3.10.1: + version "3.29.1" + resolved "https://registry.npmmirror.com/core-js/-/core-js-3.29.1.tgz#40ff3b41588b091aaed19ca1aa5cb111803fa9a6" + integrity sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw== + + core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + + core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + + corser@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== + + cosmiconfig-typescript-loader@^4.0.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz#c4259ce474c9df0f32274ed162c0447c951ef073" + integrity sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q== + + cosmiconfig@7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + + cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + + cosmiconfig@^8.0.0: + version "8.1.3" + resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" + integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== + dependencies: + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + + create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + + create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + + create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + + create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + + crelt@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94" + integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== + + cross-fetch@3.1.5, cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + + cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + + cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + + cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.npmmirror.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + integrity sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog== + dependencies: + boom "2.x.x" + + crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + + crypto-js@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + + crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + + css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + + css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + + css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.npmmirror.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + + css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + + css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + + cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + + cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + + cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + + cssjson@^2.1.3: + version "2.1.3" + resolved "https://registry.npmmirror.com/cssjson/-/cssjson-2.1.3.tgz#b855aa06c5979df16bf6375a14a455e415660169" + integrity sha512-VKzsSbYW4gwfS6Fg+z1mEII+cvurP/Vr7G3cDLEkvR0tcQD20LpF/ljOOFVVT9XYkOFo4TQWRcB/mSmbrKsXxA== + + cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + + cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + + cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + + csstype@^3.0.2, csstype@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + + custom-event-polyfill@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz#9bc993ddda937c1a30ccd335614c6c58c4f87aee" + integrity sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w== + + cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== + + dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + + dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + + data-uri-to-buffer@3: + version "3.0.1" + resolved "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + + data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + + date-fns@2.x, date-fns@^2.29.2: + version "2.29.3" + resolved "https://registry.npmmirror.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + + date-fns@^1.29.0: + version "1.30.1" + resolved "https://registry.npmmirror.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + + dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + + dayjs@1.x, dayjs@^1.11.0, dayjs@^1.9.1: + version "1.11.7" + resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + + debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + + debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + + debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + + debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== + + decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + + decamelize@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + + decimal.js@^10.4.2: + version "10.4.3" + resolved "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + + decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + + dedent@0.7.0, dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + + deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + + deepmerge@^1.5.2: + version "1.5.2" + resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + + deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + + default-user-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6" + integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw== + dependencies: + os-name "~1.0.3" + + defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + + define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + + define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + + define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + + define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + + define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + + degenerator@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" + integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== + dependencies: + ast-types "^0.13.2" + escodegen "^1.8.1" + esprima "^4.0.0" + vm2 "^3.9.8" + + del@^6.0.0: + version "6.1.1" + resolved "https://registry.npmmirror.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + + delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + + delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + + depd@2.0.0, depd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + + deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + + dequal@2.0.3, dequal@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + + des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + + destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + + detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + + detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + + dezalgo@^1.0.0, dezalgo@^1.0.1, dezalgo@^1.0.2, dezalgo@~1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + + diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + + diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + + diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + + digest-header@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz#60227a57b55e5f0b023055a875111a247662189d" + integrity sha512-sRTuakZ2PkOUCuAaVv+SLjhr/hRf8ldZP0XnGEQ69RFGxmll5fVaMsnRXWKKK4XsUTnJf8+eRPSFNgE/lWa9wQ== + dependencies: + utility "^1.17.0" + + dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + + dnd-core@14.0.1: + version "14.0.1" + resolved "https://registry.npmmirror.com/dnd-core/-/dnd-core-14.0.1.tgz#76d000e41c494983210fb20a48b835f81a203c2e" + integrity sha512-+PVS2VPTgKFPYWo3vAFEA8WPbTf7/xo43TifH9G8S1KqnrQu0o77A3unrF5yOugy4mIz7K5wAVFHUcha7wsz6A== + dependencies: + "@react-dnd/asap" "^4.0.0" + "@react-dnd/invariant" "^2.0.0" + redux "^4.1.1" + + doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + + doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + + dom-align@^1.7.0: + version "1.12.4" + resolved "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" + integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== + + dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + + domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + + domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + + dot-prop@6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + + dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + + dotenv-expand@^10.0.0: + version "10.0.0" + resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + + dotenv@^16.0.0: + version "16.0.3" + resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + + dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.npmmirror.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + + duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + + duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + + eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + + ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + + echarts-wordcloud@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz#c3de6fe267044f6c3343e4ff0e05eedb01c05096" + integrity sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ== + + echarts@^5.4.0: + version "5.4.1" + resolved "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz#d7f65a584d78beff62568d878b16151b3381811c" + integrity sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ== + dependencies: + tslib "2.3.0" + zrender "5.4.1" + + editor@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + integrity sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw== + + ee-first@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + + ejs@^3.1.7: + version "3.1.9" + resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + + electron-to-chromium@^1.4.284: + version "1.4.334" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.334.tgz#eacdcb1145534202d569610c5915b63a3fec0eb9" + integrity sha512-laZ1odk+TRen6q0GeyQx/JEkpD3iSZT7ewopCpKqg9bTjP1l8XRfU3Bg20CFjNPZkp5+NDBl3iqd4o/kPO+Vew== + + elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + + emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmmirror.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + + emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + + emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + + emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + + encoding@^0.1.11, encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + + end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + + enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + + enhanced-resolve@^5.10.0, enhanced-resolve@^5.7.0: + version "5.12.0" + resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + + enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + + entities@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + + env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + + envinfo@^7.7.3, envinfo@^7.7.4: + version "7.8.1" + resolved "https://registry.npmmirror.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + + err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + + errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + + error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + + error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + + es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + + es-module-lexer@0.7.1: + version "0.7.1" + resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d" + integrity sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw== + + es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + + es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + + es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + + es5-imcompatible-versions@^0.1.62: + version "0.1.81" + resolved "https://registry.npmmirror.com/es5-imcompatible-versions/-/es5-imcompatible-versions-0.1.81.tgz#fd91743f9403c08bfc921de10134031d97131ae0" + integrity sha512-tZhNVWOMR8wiRbjZjNsnfNhDXOu7vH6zpMroArhpC/r3vAAjR4L8FESdc2hcvkk0LIgB66hz+ExhshfDCa2yrQ== + + es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== + + esbuild-register@^3.4.0: + version "3.4.2" + resolved "https://registry.npmmirror.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" + integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== + dependencies: + debug "^4.3.4" + + esbuild@0.12.15: + version "0.12.15" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.12.15.tgz#9d99cf39aeb2188265c5983e983e236829f08af0" + integrity sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw== + + esbuild@^0.17.0: + version "0.17.18" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" + integrity sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w== + optionalDependencies: + "@esbuild/android-arm" "0.17.18" + "@esbuild/android-arm64" "0.17.18" + "@esbuild/android-x64" "0.17.18" + "@esbuild/darwin-arm64" "0.17.18" + "@esbuild/darwin-x64" "0.17.18" + "@esbuild/freebsd-arm64" "0.17.18" + "@esbuild/freebsd-x64" "0.17.18" + "@esbuild/linux-arm" "0.17.18" + "@esbuild/linux-arm64" "0.17.18" + "@esbuild/linux-ia32" "0.17.18" + "@esbuild/linux-loong64" "0.17.18" + "@esbuild/linux-mips64el" "0.17.18" + "@esbuild/linux-ppc64" "0.17.18" + "@esbuild/linux-riscv64" "0.17.18" + "@esbuild/linux-s390x" "0.17.18" + "@esbuild/linux-x64" "0.17.18" + "@esbuild/netbsd-x64" "0.17.18" + "@esbuild/openbsd-x64" "0.17.18" + "@esbuild/sunos-x64" "0.17.18" + "@esbuild/win32-arm64" "0.17.18" + "@esbuild/win32-ia32" "0.17.18" + "@esbuild/win32-x64" "0.17.18" + + escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + + escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + + escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + + escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + + escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + + escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + + eslint-config-ali@^14.0.2: + version "14.0.2" + resolved "https://registry.npmmirror.com/eslint-config-ali/-/eslint-config-ali-14.0.2.tgz#da032e7a99070bdaa2022fa6822d8065ad380b22" + integrity sha512-SyNnCNNT519UI5HRAu2saQf33krtXuLjv4wM6pv3aVQ2bY3AmBkgkSZ7Za/bkxmZoxCHxHRGnm0JVDYP1wnYFA== + + eslint-config-prettier@^8.6.0: + version "8.8.0" + resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" + integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== + + eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + + eslint-import-resolver-typescript@^3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz#db5ed9e906651b7a59dd84870aaef0e78c663a05" + integrity sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.10.0" + get-tsconfig "^4.2.0" + globby "^13.1.2" + is-core-module "^2.10.0" + is-glob "^4.0.3" + synckit "^0.8.4" + + eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + + eslint-plugin-import@^2.27.5: + version "2.27.5" + resolved "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + + eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + + eslint-plugin-react@^7.32.2: + version "7.32.2" + resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + + eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + + eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + + eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + + eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + + eslint@^8.29.0: + version "8.36.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" + integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.1" + "@eslint/js" "8.36.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.5.0" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + + espree@^9.5.0: + version "9.5.0" + resolved "https://registry.npmmirror.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" + integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + + esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + + esquery@^1.0.1, esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + + esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + + estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + + estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + + esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + + event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + + eventemitter3@^4.0.0, eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + + events@^3.0.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + + execa@5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + + execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + + execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + + execa@^7.0.0: + version "7.1.1" + resolved "https://registry.npmmirror.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" + integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + + exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + + expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + 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" + + expect@^29.0.0, expect@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + dependencies: + "@jest/expect-utils" "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + + expression-eval@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/expression-eval/-/expression-eval-2.1.0.tgz#422915caa46140a7c5b5f248650dea8bf8236e62" + integrity sha512-FUJO/Akvl/JOWkvlqZaqbkhsEWlCJWDeZG4tzX96UH68D9FeRgYgtb55C2qtqbORC0Q6x5419EDjWu4IT9kQfg== + dependencies: + jsep "^0.3.0" + + extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + + extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + + extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + + external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + + extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + 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" + + extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + + extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + + fast-glob@3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + + fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + + fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + + fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + + fast-plist@^0.1.2: + version "0.1.3" + resolved "https://registry.npmmirror.com/fast-plist/-/fast-plist-0.1.3.tgz#328cd9335e93a2479ac90814a1302437574ea925" + integrity sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A== + + fast-xml-parser@^3.12.0: + version "3.21.1" + resolved "https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz#152a1d51d445380f7046b304672dd55d15c9e736" + integrity sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg== + dependencies: + strnum "^1.0.4" + + fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + + fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + + fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + + fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + + fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + + fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.4" + resolved "https://registry.npmmirror.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + + figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + + figures@3.2.0, figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + + file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + + file-system-cache@^2.0.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/file-system-cache/-/file-system-cache-2.1.1.tgz#25bb4019f7d62b458f4bed45452b638e41f6412b" + integrity sha512-vgZ1uDsK29DM4pptUOv47zdJO2tYM5M/ERyAE9Jk0QBN6e64Md+a+xJSOp68dCCDH4niFMVD8nC8n8A5ic0bmg== + dependencies: + fs-extra "^11.1.0" + ramda "^0.28.0" + + file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + + file-uri-to-path@2: + version "2.0.0" + resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" + integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== + + file-url@3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" + integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== + + filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + + fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + + fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + + filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + + find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + + find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + + find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + + find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + + find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + + flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + + flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + + flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + + flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + + flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + + flux@^4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/flux/-/flux-4.0.3.tgz#573b504a24982c4768fdfb59d8d2ea5637d72ee7" + integrity sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw== + dependencies: + fbemitter "^3.0.0" + fbjs "^3.0.1" + + follow-redirects@^1.0.0, follow-redirects@^1.14.9, follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + + for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + + for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + + forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + + form-data-encoder@^1.7.2: + version "1.7.2" + resolved "https://registry.npmmirror.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" + integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== + + form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + + form-data@~1.0.0-rc4: + version "1.0.1" + resolved "https://registry.npmmirror.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + integrity sha512-M4Yhq2mLogpCtpUmfopFlTTuIe6mSCTgKvnlMhDj3NcgVhA1uS20jT0n+xunKPzpmL5w2erSVtp+SKiJf1TlWg== + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + + form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.npmmirror.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + integrity sha512-8HWGSLAPr+AG0hBpsqi5Ob8HrLStN/LWeqhpFl14d7FJgHK48TmgLoALPz69XSUR65YJzDfLUX/BM8+MLJLghQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + + form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + + formdata-node@^4.3.3: + version "4.4.1" + resolved "https://registry.npmmirror.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" + integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.3" + + formstream@^1.1.0, formstream@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/formstream/-/formstream-1.2.0.tgz#6948dfa0d1c64bffe93029abf30326fe7504dc41" + integrity sha512-ef4F+FQLnQLly1/AZ5OGNgGzzlOmp+T7+L/TaXASJ1GrETrpZb78/Mz7z+1Ra5FX3nLZE0WIOInGOoa81LxWew== + dependencies: + destroy "^1.0.4" + mime "^2.5.2" + pause-stream "~0.0.11" + + fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + + from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + + fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + + fs-extra@9.1.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + + fs-extra@^11.0.0, fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + + fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + + fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + + fs-minipass@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-3.0.1.tgz#853809af15b6d03e27638d1ab6432e6b378b085d" + integrity sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw== + dependencies: + minipass "^4.0.0" + + fs-vacuum@~1.2.9: + version "1.2.10" + resolved "https://registry.npmmirror.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + integrity sha512-bwbv1FcWYwxN1F08I1THN8nS4Qe/pGq0gM8dy1J34vpxxp3qgZKJPPaqex36RyZO0sD2J+2ocnbwC2d/OjYICQ== + dependencies: + graceful-fs "^4.1.2" + path-is-inside "^1.0.1" + rimraf "^2.5.2" + + fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.8: + version "1.0.10" + resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + + fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + + fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + + fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + + fstream-ignore@^1.0.0: + version "1.0.5" + resolved "https://registry.npmmirror.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + integrity sha512-VVRuOs41VUqptEGiR0N5ZoWEcfGvbGRqLINyZAhHRnF3DH5wrqjNkYr3VbRoZnI41BZgO7zIVdiobc13TVI1ow== + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + + fstream-npm@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/fstream-npm/-/fstream-npm-1.1.1.tgz#6b9175db6239a83d8209e232426c494dbb29690c" + integrity sha512-zKZuzxog3e6wPg22PC1UoI+efTOCtngC2b6qAZpUZu3t9oB3A+MuLIUosVPPFVmq6+WZsHZ3h1bhGazc4E9a7Q== + dependencies: + fstream-ignore "^1.0.0" + inherits "2" + + fstream@^1.0.0, fstream@^1.0.12, fstream@~1.0.10: + version "1.0.12" + resolved "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + + ftp@^0.3.10: + version "0.3.10" + resolved "https://registry.npmmirror.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + + function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + + function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + + functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + + gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + + gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.npmmirror.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + + gauge@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/gauge/-/gauge-5.0.0.tgz#e270ca9d97dae84abf64e5277ef1ebddc7dd1e2f" + integrity sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + + gauge@~1.2.0, gauge@~1.2.5: + version "1.2.7" + resolved "https://registry.npmmirror.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" + integrity sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA== + dependencies: + ansi "^0.3.0" + has-unicode "^2.0.0" + lodash.pad "^4.1.0" + lodash.padend "^4.1.0" + lodash.padstart "^4.1.0" + + gauge@~2.6.0: + version "2.6.0" + resolved "https://registry.npmmirror.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" + integrity sha512-YFArj4ApymqXBC2KORLBtKc2CIc1r+ycx786XYEkEF4++1rBGhTD7QHOSWYYGCx50Op+WuboEk9xQa+wNmzuLA== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + + gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + + generate-function@^2.0.0: + version "2.3.1" + resolved "https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== + dependencies: + is-property "^1.0.2" + + generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ== + dependencies: + is-property "^1.0.0" + + gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + + get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + + get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + + get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + + get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.npmmirror.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + + get-port@5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + + get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + + get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + + get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + + get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + + get-tsconfig@^4.2.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.4.0.tgz#64eee64596668a81b8fce18403f94f245ee0d4e5" + integrity sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ== + + get-uri@3: + version "3.0.2" + resolved "https://registry.npmmirror.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" + integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== + dependencies: + "@tootallnate/once" "1" + data-uri-to-buffer "3" + debug "4" + file-uri-to-path "2" + fs-extra "^8.1.0" + ftp "^0.3.10" + + get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + + getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + + git-raw-commits@^2.0.0, git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + + git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + + git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + + git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + dependencies: + is-ssh "^1.4.0" + parse-url "^8.1.0" + + git-url-parse@13.1.0: + version "13.1.0" + resolved "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== + dependencies: + git-up "^7.0.0" + + gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + + github-slugger@^1.0.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== + + github-url-from-git@~1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/github-url-from-git/-/github-url-from-git-1.4.0.tgz#285e6b520819001bde128674704379e4ff03e0de" + integrity sha512-Vd1uAwEIbUaaYodSvEZRgMOdLUvY7+kZ+PuJNPVBXldTuVcHFtcLENvl2Ds9KKO9q6Ld2o+eVmA/wabaN3/2mQ== + + github-url-from-username-repo@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz#7dd79330d2abe69c10c2cef79714c97215791dfa" + integrity sha512-Tj8CQqRoFVTglGdQ8FQmfq8gOOoOYZX7tnOKP8jq8Hdz2OTDhxvtlkLAbrqMYZ7X/YdaYQoUG1IBWxISBfqZ+Q== + + glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + + glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + + glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + + glob-promise@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-promise/-/glob-promise-6.0.2.tgz#7c7f2a223e3aaa8f7bd7ff5f24d0ab2352724b31" + integrity sha512-Ni2aDyD1ekD6x8/+K4hDriRDbzzfuK4yKpqSymJ4P7IxbtARiOOuU+k40kbHM0sLIlbf1Qh0qdMkAHMZYE6XJQ== + dependencies: + "@types/glob" "^8.0.0" + + glob@7.1.4: + version "7.1.4" + resolved "https://registry.npmmirror.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + 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@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + + glob@^8.0.1, glob@^8.0.3, glob@^8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + + glob@^9.2.0, glob@^9.3.0, glob@^9.3.1: + version "9.3.2" + resolved "https://registry.npmmirror.com/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda" + integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA== + dependencies: + fs.realpath "^1.0.0" + minimatch "^7.4.1" + minipass "^4.2.4" + path-scurry "^1.6.1" + + glob@~7.0.6: + version "7.0.6" + resolved "https://registry.npmmirror.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + integrity sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + + global-dirs@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== + dependencies: + ini "^1.3.4" + + globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + + globals@^13.19.0: + version "13.20.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + + globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + + globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + + globby@11.1.0, globby@^11.0.1, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + + globby@^13.1.2: + version "13.1.3" + resolved "https://registry.npmmirror.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" + integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + + globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + + gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + + graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + + graceful-fs@~4.1.6: + version "4.1.15" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + + grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + + handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + + har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + integrity sha512-f8xf2GOR6Rgwc9FPTLNzgwB+JQ2/zMauYXSWmX5YV5acex6VomT0ocSuwR7BfXo5MpHi+jL+saaux2fwsGJDKQ== + + har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + + har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + integrity sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA== + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + + har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + integrity sha512-5Gbp6RAftMYYV3UEI4c4Vv3+a4dQ7taVyvHt+/L6kRt+f4HX1GweAk5UDWN0SvdVnRBzGQ6OG89pGaD9uSFnVw== + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + + har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + + hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + + harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.npmmirror.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + + has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + + has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + + has-color@^0.1.7: + version "0.1.7" + resolved "https://registry.npmmirror.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + integrity sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw== + + has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + + has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + + has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + + has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + + has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + + has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + + has-unicode@2.0.1, has-unicode@^2.0.0, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + + has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + + has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + + has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + + has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + + has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + + hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + + hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + + hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + integrity sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg== + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + + he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + + history-with-query@4.10.4: + version "4.10.4" + resolved "https://registry.npmmirror.com/history-with-query/-/history-with-query-4.10.4.tgz#8161ff3c5044e29dfaeb73e7587eb3d4c1a8090e" + integrity sha512-JnskQK8X+PbRFHSdDAExhoJyhLnlLZL+UuHQuQhys+Se9/ukRDRBWU4JVTjsiIfbv1fcEmR3oqKW56OYmk5M5w== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + query-string "^6.11.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + + history@*: + version "5.3.0" + resolved "https://registry.npmmirror.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== + dependencies: + "@babel/runtime" "^7.7.6" + + history@^4.10.1, history@^4.9.0: + version "4.10.1" + resolved "https://registry.npmmirror.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@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" + + hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + + hoek@2.x.x: + version "2.16.3" + resolved "https://registry.npmmirror.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + integrity sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ== + + hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + + hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@^2.4.2: + version "2.8.9" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + + hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + + hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + + hosted-git-info@^5.0.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + + hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: + version "6.1.1" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== + dependencies: + lru-cache "^7.5.1" + + hosted-git-info@~2.1.5: + version "2.1.5" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + integrity sha512-5sLwVGWIA8493A2PzG/py8s+uBrYqrwmLp6C6U5+Gpw5Ll49OOigsuD4LKbUTExbgedTNPvPb/0GV5ohHYYNBg== + + html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + + html-entities@^2.1.0: + version "2.3.3" + resolved "https://registry.npmmirror.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== + + html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + + html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + + html-tags@^3.1.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== + + http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + + http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + + http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + + http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + + http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + + http-server@^14.1.0: + version "14.1.1" + resolved "https://registry.npmmirror.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" + integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== + dependencies: + basic-auth "^2.0.1" + chalk "^4.1.2" + corser "^2.0.1" + he "^1.2.0" + html-encoding-sniffer "^3.0.0" + http-proxy "^1.18.1" + mime "^1.6.0" + minimist "^1.2.6" + opener "^1.5.1" + portfinder "^1.0.28" + secure-compare "3.0.1" + union "~0.5.0" + url-join "^4.0.1" + + http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + integrity sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg== + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + + http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + + https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + + https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + + human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + + human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.npmmirror.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + + humanize-ms@^1.2.0, humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + + husky@^8.0.1: + version "8.0.3" + resolved "https://registry.npmmirror.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== + + i18next-chained-backend@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/i18next-chained-backend/-/i18next-chained-backend-3.1.0.tgz#b37d2980598deb8ec5656eba0df8fe15d3d62f1f" + integrity sha512-ltWy0fPMrtXjq0rSLo7s4ZF92LGvVsO47hhV3czaZXzMzhpFva6LVKMyDT7x82R8vAyB7VAeyGLBvMiW4W543A== + dependencies: + "@babel/runtime" "^7.18.9" + + i18next-http-backend@^1.3.1: + version "1.4.5" + resolved "https://registry.npmmirror.com/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz#4803eb071eb6ffb147c36bdd42ba6f64b3198ac2" + integrity sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w== + dependencies: + cross-fetch "3.1.5" + + i18next-localstorage-backend@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/i18next-localstorage-backend/-/i18next-localstorage-backend-3.1.3.tgz#5eaad25a515bdadebeb13e1486acfa6fa1686cbe" + integrity sha512-tx8dxQTEsTnRC654IrXPFr94c3NH7bIVHGKHnGvbgefpLz13/uFT5ITsmhqhg/gOza0TIj8e5jTsGnQytIhh+A== + dependencies: + "@babel/runtime" "^7.14.6" + + i18next-resources-to-backend@^1.0.0: + version "1.1.3" + resolved "https://registry.npmmirror.com/i18next-resources-to-backend/-/i18next-resources-to-backend-1.1.3.tgz#bb6a47be1f65feaecc7a4e989b2a48864374e6a5" + integrity sha512-iDJITrMHoKLUa3B2wippgH62yM4f4wCEofeTj55rML9i7QrMDGKdr8FGCnSNNxRQzvW4546Qx6v2/xY3dAhvUA== + dependencies: + "@babel/runtime" "^7.20.6" + + i18next@^20.1.0: + version "20.6.1" + resolved "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz#535e5f6e5baeb685c7d25df70db63bf3cc0aa345" + integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A== + dependencies: + "@babel/runtime" "^7.12.0" + + iconv-lite@0.4.24, iconv-lite@^0.4.15, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + + iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + + identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + + ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + + iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== + + ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + + ignore-walk@^6.0.0: + version "6.0.2" + resolved "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-6.0.2.tgz#c48f48397cf8ef6174fcc28aa5f8c1de6203d389" + integrity sha512-ezmQ1Dg2b3jVZh2Dh+ar6Eu2MqNSTkyb32HU2MAQQQX9tKM3q/UQ/9lf03lQ5hW+fOeoMnwxwkleZ0xcNp0/qg== + dependencies: + minimatch "^7.4.2" + + ignore@^5.0.4, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + + image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + + import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== + dependencies: + import-from "^2.1.0" + + import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + + import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + + import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== + dependencies: + resolve-from "^3.0.0" + + import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + + imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + + indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + + indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== + + infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + + inflight@^1.0.4, inflight@~1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + + inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + + inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== + + inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + + ini@^1.3.2, ini@^1.3.4, ini@~1.3.4: + version "1.3.8" + resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + + init-package-json@3.0.2, init-package-json@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== + dependencies: + npm-package-arg "^9.0.1" + promzard "^0.3.0" + read "^1.0.7" + read-package-json "^5.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + + init-package-json@~1.9.4: + version "1.9.6" + resolved "https://registry.npmmirror.com/init-package-json/-/init-package-json-1.9.6.tgz#789fc2b74466a4952b9ea77c0575bc78ebd60a61" + integrity sha512-ocaj90F9qTLDpkhhy+ZemKVexbybm2S0fo65/v13KJDI75kyB7eb8ShhRkxZrbGzzS9833A+o5Bus8aFdQEfOg== + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + + inquirer@8.2.4: + version "8.2.4" + resolved "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + + inquirer@^8.2.4: + version "8.2.5" + resolved "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + + internal-slot@^1.0.3, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + + interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + + intersection-observer@^0.12.0: + version "0.12.2" + resolved "https://registry.npmmirror.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375" + integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== + + invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + + ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + + ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + + is-absolute-url@^3.0.0: + version "3.0.3" + resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + + is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + + is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + + is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + + is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + + is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + + is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + + is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + + is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + + is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + + is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + + is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha512-C2wz7Juo5pUZTFQVer9c+9b4qw3I5T/CHQxQyhVu7BJel6C22FmsLIWsdseYyOw6xz9Pqy9eJWSkQ7+3iN1HVw== + dependencies: + builtin-modules "^1.0.0" + + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + + is-ci@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + + is-core-module@^2.10.0, is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + + is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + + is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + + is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + + is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + + is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + + is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + + is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + + is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + + is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + + is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + + is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + + is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + + is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + + is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + + is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + + is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + + is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + + is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + + is-my-ip-valid@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz#f7220d1146257c98672e6fba097a9f3f2d348442" + integrity sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg== + + is-my-json-valid@^2.12.4: + version "2.20.6" + resolved "https://registry.npmmirror.com/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz#a9d89e56a36493c77bda1440d69ae0dc46a08387" + integrity sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw== + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^5.0.0" + xtend "^4.0.0" + + is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + + is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + + is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + + is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + + is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + + is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + + is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + + is-path-inside@^3.0.2, is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + + is-plain-object@5.0.0, is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + + is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + + is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + + is-property@^1.0.0, is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== + + is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + + is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + + is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== + dependencies: + protocols "^2.0.1" + + is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + + is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + + is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + + is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + + is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + + is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + + is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" + + is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + + is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + + is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + + is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + + is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + + is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + + is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + + is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + + isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + + isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + + isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + + isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + + isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA== + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + + isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + + istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + + istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + + istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + + istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + + jake@^10.8.5: + version "10.8.5" + resolved "https://registry.npmmirror.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + + javascript-stringify@^2.0.1: + version "2.1.0" + resolved "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" + integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== + + jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + + jest-circus@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" + integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.5.0" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + p-limit "^3.1.0" + pretty-format "^29.5.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + + jest-cli@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" + integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== + dependencies: + "@jest/core" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + prompts "^2.0.1" + yargs "^17.3.1" + + jest-config@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" + integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.5.0" + "@jest/types" "^29.5.0" + babel-jest "^29.5.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.5.0" + jest-environment-node "^29.5.0" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-runner "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + + jest-diff@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + + jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== + dependencies: + detect-newline "^3.0.0" + + jest-each@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" + integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== + dependencies: + "@jest/types" "^29.5.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.5.0" + pretty-format "^29.5.0" + + jest-environment-jsdom@^29.1.1: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz#cfe86ebaf1453f3297b5ff3470fbe94739c960cb" + integrity sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + jest-mock "^29.5.0" + jest-util "^29.5.0" + jsdom "^20.0.0" + + jest-environment-node@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" + integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + jest-util "^29.5.0" + + jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + + jest-haste-map@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== + dependencies: + "@jest/types" "^29.5.0" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + jest-worker "^29.5.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + + jest-leak-detector@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" + integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + + jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + + jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + + jest-mock@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" + integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-util "^29.5.0" + + jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + + jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + + jest-resolve-dependencies@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" + integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.5.0" + + jest-resolve@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" + integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.5.0" + jest-validate "^29.5.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + + jest-runner@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" + integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/environment" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.5.0" + jest-haste-map "^29.5.0" + jest-leak-detector "^29.5.0" + jest-message-util "^29.5.0" + jest-resolve "^29.5.0" + jest-runtime "^29.5.0" + jest-util "^29.5.0" + jest-watcher "^29.5.0" + jest-worker "^29.5.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + + jest-runtime@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" + integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/globals" "^29.5.0" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + strip-bom "^4.0.0" + + jest-snapshot@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" + integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.5.0" + graceful-fs "^4.2.9" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + natural-compare "^1.4.0" + pretty-format "^29.5.0" + semver "^7.3.5" + + jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + + jest-validate@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" + integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== + dependencies: + "@jest/types" "^29.5.0" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.5.0" + + jest-watcher@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" + integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== + dependencies: + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.5.0" + string-length "^4.0.1" + + jest-worker@24.9.0: + version "24.9.0" + resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + + jest-worker@26.6.2: + version "26.6.2" + resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + + jest-worker@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + + jest@^29.1.1: + version "29.5.0" + resolved "https://registry.npmmirror.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" + integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== + dependencies: + "@jest/core" "^29.5.0" + "@jest/types" "^29.5.0" + import-local "^3.0.2" + jest-cli "^29.5.0" + + js-cookie@^2.x.x: + version "2.2.1" + resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + + js-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414" + integrity sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw== + + js-sdsl@^4.1.4: + version "4.3.0" + resolved "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" + integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== + + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + + js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + + js-yaml@^3.10.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + + jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + + jsdom@^20.0.0: + version "20.0.3" + resolved "https://registry.npmmirror.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" + + jsep@^0.3.0: + version "0.3.5" + resolved "https://registry.npmmirror.com/jsep/-/jsep-0.3.5.tgz#3fd79ebd92f6f434e4857d5272aaeef7d948264d" + integrity sha512-AoRLBDc6JNnKjNcmonituEABS5bcfqDhQAWWXNTFrqu6nVXBpBAGfcoTGZMFlIrh9FjmE1CQyX9CTNwZrXMMDA== + + jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + + jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + + json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + + json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + + json-parse-even-better-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" + integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== + + json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + + json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + + json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + + json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + + json-stable-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== + dependencies: + jsonify "^0.0.1" + + json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + + json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + + json5@^1.0.1, json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + + json5@^2.1.2, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + + jsonc-parser@3.2.0, jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + + jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + + jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + + jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + + jsonparse@^1.2.0, jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + + jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmmirror.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + + jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + + "jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.3" + resolved "https://registry.npmmirror.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + + just-compare@^1.3.0: + version "1.5.1" + resolved "https://registry.npmmirror.com/just-compare/-/just-compare-1.5.1.tgz#aed7e93e6bae9c3b69d79aea7805684132a0c0c5" + integrity sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw== + + just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + + just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.npmmirror.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + + kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + + kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + + kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + + kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + + klona@^2.0.4: + version "2.0.6" + resolved "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + + lazy-universal-dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" + integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== + dependencies: + app-root-dir "^1.0.2" + dotenv "^16.0.0" + dotenv-expand "^10.0.0" + + lerna@^6.6.1: + version "6.6.1" + resolved "https://registry.npmmirror.com/lerna/-/lerna-6.6.1.tgz#4897171aed64e244a2d0f9000eef5c5b228f9332" + integrity sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA== + dependencies: + "@lerna/child-process" "6.6.1" + "@lerna/create" "6.6.1" + "@lerna/legacy-package-management" "6.6.1" + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-angular "5.0.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + envinfo "^7.7.4" + execa "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + import-local "^3.0.2" + init-package-json "3.0.2" + inquirer "^8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + js-yaml "^4.1.0" + libnpmaccess "6.0.3" + libnpmpublish "6.0.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.3" + npmlog "^6.0.2" + nx ">=15.5.2 < 16" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "13.6.2" + pify "5.0.0" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + typescript "^3 || ^4" + upath "^2.0.1" + uuid "8.3.2" + validate-npm-package-license "3.0.4" + validate-npm-package-name "4.0.0" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + yargs-parser "20.2.4" + + less-loader@^7.3.0: + version "7.3.0" + resolved "https://registry.npmmirror.com/less-loader/-/less-loader-7.3.0.tgz#f9d6d36d18739d642067a05fb5bd70c8c61317e5" + integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + + less@^4.1.2: + version "4.1.3" + resolved "https://registry.npmmirror.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + + leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + + levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + + levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + + libnpmaccess@6.0.3: + version "6.0.3" + resolved "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-6.0.3.tgz#473cc3e4aadb2bc713419d92e45d23b070d8cded" + integrity sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg== + dependencies: + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + + libnpmpublish@6.0.4: + version "6.0.4" + resolved "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-6.0.4.tgz#adb41ec6b0c307d6f603746a4d929dcefb8f1a0b" + integrity sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg== + dependencies: + normalize-package-data "^4.0.0" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + semver "^7.3.7" + ssri "^9.0.0" + + lilconfig@2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + + lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + + lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + + lint-staged@^13.1.0: + version "13.2.0" + resolved "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.0.tgz#b7abaf79c91cd36d824f17b23a4ce5209206126a" + integrity sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw== + dependencies: + chalk "5.2.0" + cli-truncate "^3.1.0" + commander "^10.0.0" + debug "^4.3.4" + execa "^7.0.0" + lilconfig "2.1.0" + listr2 "^5.0.7" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.3" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.2.1" + + listr2@^5.0.7: + version "5.0.8" + resolved "https://registry.npmmirror.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" + integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.19" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.8.0" + through "^2.3.8" + wrap-ansi "^7.0.0" + + load-json-file@6.2.0: + version "6.2.0" + resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + + load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + + loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + + loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.4.2" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + + loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + + loadjs@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/loadjs/-/loadjs-4.2.0.tgz#2a0336376397a6a43edf98c9ec3229ddd5abb6f6" + integrity sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA== + + locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + + locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + + locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + + locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + + lockfile@~1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + + lodash-es@^4.17.15, lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + + lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + + lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== + + lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + + lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.npmmirror.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== + + lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + + lodash.isequal@4.5.0, lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + + lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + + lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + + lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + + lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + + lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + + lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + + lodash.pad@^4.1.0: + version "4.5.1" + resolved "https://registry.npmmirror.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== + + lodash.padend@^4.1.0: + version "4.6.1" + resolved "https://registry.npmmirror.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== + + lodash.padstart@^4.1.0: + version "4.6.1" + resolved "https://registry.npmmirror.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== + + lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.npmmirror.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== + + lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + + lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + + lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + + lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.npmmirror.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + + lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + + log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + + log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + + lru-cache@6.0.0, lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + + lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + + lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + + lru-cache@~4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + integrity sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw== + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + + lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.npmmirror.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + + make-dir@3.1.0, make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + + make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + + make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + + make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.2.1" + resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + + make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1: + version "11.0.3" + resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz#ed83dd3685b97f75607156d2721848f6eca561b9" + integrity sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^4.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + + makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + + map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + + map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + + map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + + map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== + + map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + + markdown-to-jsx@^7.1.8: + version "7.2.0" + resolved "https://registry.npmmirror.com/markdown-to-jsx/-/markdown-to-jsx-7.2.0.tgz#e7b46b65955f6a04d48a753acd55874a14bdda4b" + integrity sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg== + + marked@^4.2.12: + version "4.2.12" + resolved "https://registry.npmmirror.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5" + integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw== + + material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.npmmirror.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + + md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + + mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" + + mdast-util-to-string@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + + memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.npmmirror.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== + dependencies: + map-or-similar "^1.5.0" + + memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + + memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + + meow@^8.0.0: + version "8.1.2" + resolved "https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + + merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + + merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + + micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + 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" + + micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + + miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + + mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + + mime-types@^2.1.11, mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.7: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + + mime@1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + + mime@^1.4.1, mime@^1.6.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + + mime@^2.3.1, mime@^2.5.2: + version "2.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + + mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + + mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + + min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + + mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.npmmirror.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + + mini-css-extract-plugin@^1.6.2: + version "1.6.2" + resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8" + integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + webpack-sources "^1.1.0" + + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + + minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + + minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + + minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + + minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + + minimatch@^6.1.6: + version "6.2.0" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== + dependencies: + brace-expansion "^2.0.1" + + minimatch@^7.1.3: + version "7.4.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.2.tgz#157e847d79ca671054253b840656720cb733f10f" + integrity sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA== + dependencies: + brace-expansion "^2.0.1" + + minimatch@^7.4.1, minimatch@^7.4.2: + version "7.4.3" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.3.tgz#012cbf110a65134bb354ae9773b55256cdb045a2" + integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A== + dependencies: + brace-expansion "^2.0.1" + + minimatch@~3.0.3: + version "3.0.8" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== + dependencies: + brace-expansion "^1.1.7" + + minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + + minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + + minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + + minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + + minipass-fetch@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-3.0.1.tgz#bae3789f668d82ffae3ea47edc6b78b8283b3656" + integrity sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw== + dependencies: + minipass "^4.0.0" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + + minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + + minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + + minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + + minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + + minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + + minipass@^4.0.0, minipass@^4.0.2, minipass@^4.2.4: + version "4.2.5" + resolved "https://registry.npmmirror.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" + integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== + + minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + + mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + + mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + + mkdirp-infer-owner@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== + dependencies: + chownr "^2.0.0" + infer-owner "^1.0.4" + mkdirp "^1.0.3" + + "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + + mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + + mobx-react-lite@^3.2.2: + version "3.4.3" + resolved "https://registry.npmmirror.com/mobx-react-lite/-/mobx-react-lite-3.4.3.tgz#3a4c22c30bfaa8b1b2aa48d12b2ba811c0947ab7" + integrity sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg== + + mobx-react-lite@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/mobx-react-lite/-/mobx-react-lite-4.0.2.tgz#bf4df238d17491cddb1021a49f79f8af50ed4260" + integrity sha512-5o7for7/5QLpgzKvA3ZjrO8TmfkZgVcSjwYalGlW6OkK/fCxmVlwbFeoWJQzWbkWSxlcaatTO0j4riAUvWoqMg== + dependencies: + use-sync-external-store "^1.2.0" + + mobx@^6.3.6: + version "6.8.0" + resolved "https://registry.npmmirror.com/mobx/-/mobx-6.8.0.tgz#59051755fdb5c8a9f3f2e0a9b6abaf86bab7f843" + integrity sha512-+o/DrHa4zykFMSKfS8Z+CPSEg5LW9tSNGTuN8o6MF1GKxlfkSHSeJn5UtgxvPkGgaouplnrLXCF+duAsmm6FHQ== + + mobx@^6.9.0: + version "6.9.0" + resolved "https://registry.npmmirror.com/mobx/-/mobx-6.9.0.tgz#8a894c26417c05bed2cf7499322e589ee9787397" + integrity sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ== + + modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + + moment@^2.24.0, moment@^2.29.1, moment@^2.29.2, moment@^2.29.3, moment@^2.29.4: + version "2.29.4" + resolved "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + + monaco-editor-textmate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/monaco-editor-textmate/-/monaco-editor-textmate-3.0.0.tgz#a90517380d5e52304aef780eebeab9f687ab9b67" + integrity sha512-4BK3ual4WllRpiQBDcBO8NKdbk4ukdBtnl23cRYvu1eNWOWKYOBM0rYac50HvFClSbtd5GMezLPjkaim0iM7sw== + + monaco-editor@^0.30.1: + version "0.30.1" + resolved "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.30.1.tgz#47f8d18a0aa2264fc5654581741ab8d7bec01689" + integrity sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg== + + monaco-textmate@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/monaco-textmate/-/monaco-textmate-3.0.1.tgz#b6d26d266aa12edaff7069dae0d6e3747cba5cd7" + integrity sha512-ZxxY3OsqUczYP1sGqo97tu+CJmMBwuSW+dL0WEBdDhOZ5G1zntw72hvBc68ZQAirosWvbDKgN1dL5k173QtFww== + dependencies: + fast-plist "^0.1.2" + + move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + + ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + + ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + + ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + + multimatch@5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + + mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + + mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + + nan@^2.12.1: + version "2.17.0" + resolved "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + + nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + 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" + + natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + + natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + + needle@^3.1.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + + negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + + neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + + netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + + nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + + node-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + + node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + + node-domexception@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + + node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + + node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + + node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + + node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + + node-gyp@^9.0.0: + version "9.3.1" + resolved "https://registry.npmmirror.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" + integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + + node-gyp@~3.6.0: + version "3.6.3" + resolved "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.6.3.tgz#369fcb09146ae2167f25d8d23d8b49cc1a110d8d" + integrity sha512-7789TDMqJpv5iHxn1cAESCBEC/sBHAFxAvgXAcvzWenEWl0qf6E2Kk/Xwdl5ZclktUJzxJPVa27OMkBvaHKqCQ== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request ">=2.9.0 <2.82.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + + node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + + node-libs-browser@2.2.1, node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + + node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + + node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.npmmirror.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + integrity sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA== + + noms@0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + + "nopt@2 || 3", nopt@3.x.x, nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + + nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + + nopt@^7.0.0: + version "7.1.0" + resolved "https://registry.npmmirror.com/nopt/-/nopt-7.1.0.tgz#91f6a3366182176e72ecab93a09c19b63b485f28" + integrity sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q== + dependencies: + abbrev "^2.0.0" + + normalize-git-url@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" + integrity sha512-UEmKT33ssKLLoLCsFJ4Si4fmNQsedNwivXpuNTR4V1I97jU9WZlicTV1xn5QAG5itE5B3Z9zhl8OItP6wIGkRA== + + normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0, "normalize-package-data@~1.0.1 || ^2.0.0": + version "2.5.0" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + + normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + + normalize-package-data@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== + dependencies: + hosted-git-info "^5.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + + normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + + normalize-package-data@~2.3.5: + version "2.3.8" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + integrity sha512-tRXZ2ujyDLIynwO6Dw81AvuedQ6tLgfdD5GCvT4K6yOFgYeanngGfW+eeqd9msmRgUuiZxd5kwrQrb2nsncOZw== + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + + normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + + normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + + normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + + normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + + npm-bundled@^1.1.1, npm-bundled@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + + npm-bundled@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" + integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== + dependencies: + npm-normalize-package-bin "^2.0.0" + + npm-bundled@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" + integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + + npm-cache-filename@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + integrity sha512-5v2y1KG06izpGvZJDSBR5q1Ej+NaPDO05yAAWBJE6+3eiId0R176Gz3Qc2vEmJnE+VGul84g6Qpq8fXzD82/JA== + + npm-install-checks@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" + integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== + dependencies: + semver "^7.1.1" + + npm-install-checks@^6.0.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-6.1.0.tgz#7221210d9d746a40c37bf6c9b6c7a39f85e92998" + integrity sha512-udSGENih/5xKh3Ex+L0PtZcOt0Pa+6ppDLnpG5D49/EhMja3LupaY9E/DtJTxyFBwE09ot7Fc+H4DywnZNWTVA== + dependencies: + semver "^7.1.1" + + npm-install-checks@~1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-1.0.7.tgz#6d91aeda0ac96801f1ed7aadee116a6c0a086a57" + integrity sha512-IyaSpkt3NMXaXezbnHxwEZ6HBWpQFlKBUZ0ZEoUCyq3LoAaZEWJ2mchhJPauuvevhkvi8SNW67FiWZLpUhJ82w== + dependencies: + npmlog "0.1 || 1 || 2" + semver "^2.3.0 || 3.x || 4 || 5" + + npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + + npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + + npm-normalize-package-bin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz#6097436adb4ef09e2628b59a7882576fe53ce485" + integrity sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q== + + npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + + npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: + version "10.1.0" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + + "npm-package-arg@^3.0.0 || ^4.0.0", npm-package-arg@^4.1.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-4.2.1.tgz#593303fdea85f7c422775f17f9eb7670f680e3ec" + integrity sha512-JhzqcxLL3ydxlmtqh2uDALGZp1KZLSXKM9rj/0ZQ9pPIjR+BX4vSUsx5amSZMrPvymS17qoHbkqQANMdSQHFFQ== + dependencies: + hosted-git-info "^2.1.5" + semver "^5.1.0" + + "npm-package-arg@^4.0.0 || ^5.0.0": + version "5.1.2" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" + integrity sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA== + dependencies: + hosted-git-info "^2.4.2" + osenv "^0.1.4" + semver "^5.1.0" + validate-npm-package-name "^3.0.0" + + npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: + version "9.1.2" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + + npm-package-arg@~4.1.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-4.1.1.tgz#86d9dca985b4c5e5d59772dfd5de6919998a495a" + integrity sha512-sKJDnYGLVs+x2ITFUtVB7kk70F4atWShCs55uhrrt2oP1hRMdYLWIzBGUSDSsT4ZASPcdhr8xRQ2r9JY6ouq7Q== + dependencies: + hosted-git-info "^2.1.4" + semver "4 || 5" + + npm-packlist@5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" + integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^1.1.2" + npm-normalize-package-bin "^1.0.1" + + npm-packlist@^5.1.0: + version "5.1.3" + resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^2.0.0" + npm-normalize-package-bin "^2.0.0" + + npm-packlist@^7.0.0: + version "7.0.4" + resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" + integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== + dependencies: + ignore-walk "^6.0.0" + + npm-pick-manifest@^7.0.0: + version "7.0.2" + resolved "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== + dependencies: + npm-install-checks "^5.0.0" + npm-normalize-package-bin "^2.0.0" + npm-package-arg "^9.0.0" + semver "^7.3.5" + + npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: + version "8.0.1" + resolved "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" + integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" + semver "^7.3.5" + + npm-registry-client@~7.2.1: + version "7.2.1" + resolved "https://registry.npmmirror.com/npm-registry-client/-/npm-registry-client-7.2.1.tgz#c792266b088cc313f8525e7e35248626c723db75" + integrity sha512-igXKTHWr0ipuL+pKNRBV2p2H4xqfnpVtYiWQmTKfq5/eFmZxKh9U+PyoqdKzqyvPTFLNQVqMGy5W5GjOr1Ukeg== + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + optionalDependencies: + npmlog "~2.0.0 || ~3.1.0" + + npm-registry-fetch@14.0.3, npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3: + version "14.0.3" + resolved "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz#8545e321c2b36d2c6fe6e009e77e9f0e527f547b" + integrity sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^4.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + + npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1: + version "13.3.1" + resolved "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== + dependencies: + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" + + npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + + npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + + npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + + npm-user-validate@~0.1.5: + version "0.1.5" + resolved "https://registry.npmmirror.com/npm-user-validate/-/npm-user-validate-0.1.5.tgz#52465d50c2d20294a57125b996baedbf56c5004b" + integrity sha512-86IbFCunHe+6drSd71Aafs8H8xg55lHE9O1/6VS4s+OsBh53xEtQNY1lspkgoaO2b3hhfvDW2FA0eS47inrs1w== + + npm@2.x.x: + version "2.15.12" + resolved "https://registry.npmmirror.com/npm/-/npm-2.15.12.tgz#df7c3ed5a277c3f9d4b5d819b05311d10a200ae6" + integrity sha512-WMoAJ518W0vHjWy1abYnTeyG9YQpSoYGPxAx7d0C0L7U7Jo44bZsrvTjccmDohCJGxpasdKfqsKsl6o/RUPx6A== + dependencies: + abbrev "~1.0.9" + ansi "~0.3.1" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + archy "~1.0.0" + async-some "~1.0.2" + block-stream "0.0.9" + char-spinner "~1.0.1" + chmodr "~1.0.2" + chownr "~1.0.1" + cmd-shim "~2.0.2" + columnify "~1.5.4" + config-chain "~1.1.10" + dezalgo "~1.0.3" + editor "~1.0.0" + fs-vacuum "~1.2.9" + fs-write-stream-atomic "~1.0.8" + fstream "~1.0.10" + fstream-npm "~1.1.1" + github-url-from-git "~1.4.0" + github-url-from-username-repo "~1.0.2" + glob "~7.0.6" + graceful-fs "~4.1.6" + hosted-git-info "~2.1.5" + inflight "~1.0.4" + inherits "~2.0.3" + ini "~1.3.4" + init-package-json "~1.9.4" + lockfile "~1.0.1" + lru-cache "~4.0.1" + minimatch "~3.0.3" + mkdirp "~0.5.1" + node-gyp "~3.6.0" + nopt "~3.0.6" + normalize-git-url "~3.0.2" + normalize-package-data "~2.3.5" + npm-cache-filename "~1.0.2" + npm-install-checks "~1.0.7" + npm-package-arg "~4.1.0" + npm-registry-client "~7.2.1" + npm-user-validate "~0.1.5" + npmlog "~2.0.4" + once "~1.4.0" + opener "~1.4.1" + osenv "~0.1.3" + path-is-inside "~1.0.0" + read "~1.0.7" + read-installed "~4.0.3" + read-package-json "~2.0.4" + readable-stream "~2.1.5" + realize-package-specifier "~3.0.1" + request "~2.74.0" + retry "~0.10.0" + rimraf "~2.5.4" + semver "~5.1.0" + sha "~2.0.1" + slide "~1.1.6" + sorted-object "~2.0.0" + spdx-license-ids "~1.2.2" + strip-ansi "~3.0.1" + tar "~2.2.1" + text-table "~0.2.0" + uid-number "0.0.6" + umask "~1.1.0" + validate-npm-package-license "~3.0.1" + validate-npm-package-name "~2.2.2" + which "~1.2.11" + wrappy "~1.0.2" + write-file-atomic "~1.1.4" + + "npmlog@0 || 1 || 2 || 3 || 4": + version "4.1.2" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + + "npmlog@0.1 || 1 || 2", npmlog@~2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" + integrity sha512-DaL6RTb8Qh4tMe2ttPT1qWccETy2Vi5/8p+htMpLBeXJTr2CAqnF5WQtSP2eFpvaNbhLZ5uilDb98mRm4Q+lZQ== + dependencies: + ansi "~0.3.1" + are-we-there-yet "~1.1.2" + gauge "~1.2.5" + + npmlog@1.x.x: + version "1.2.1" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-1.2.1.tgz#28e7be619609b53f7ad1dd300a10d64d716268b6" + integrity sha512-1J5KqSRvESP6XbjPaXt2H6qDzgizLTM7x0y1cXIjP2PpvdCqyNC7TO3cPRKsuYlElbi/DwkzRRdG2zpmE0IktQ== + dependencies: + ansi "~0.3.0" + are-we-there-yet "~1.0.0" + gauge "~1.2.0" + + npmlog@6.0.2, npmlog@^6.0.0, npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + + npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + + npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== + dependencies: + are-we-there-yet "^4.0.0" + console-control-strings "^1.1.0" + gauge "^5.0.0" + set-blocking "^2.0.0" + + "npmlog@~2.0.0 || ~3.1.0": + version "3.1.2" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-3.1.2.tgz#2d46fa874337af9498a2f12bb43d8d0be4a36873" + integrity sha512-M9EjtMS6UQU5jVhfdCBmvPup0/i7QIoDy38ERfX/sLpzr5gida2uCtvf0pE586OB7+/NQx7KZvwwomGRyHQXwA== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.6.0" + set-blocking "~2.0.0" + + num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== + + number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + + nwsapi@^2.2.2: + version "2.2.2" + resolved "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== + + nx@15.8.7, "nx@>=15.5.2 < 16": + version "15.8.7" + resolved "https://registry.npmmirror.com/nx/-/nx-15.8.7.tgz#a89156244f6f94407d7603375ae2f52733c7aff4" + integrity sha512-u6p/1gU20WU61orxK7hcXBsVspPHy3X66XVAAakkYcaOBlsJhJrR7Og191qIyjEkqEWmcekiDQVw3D6XfagL4Q== + dependencies: + "@nrwl/cli" "15.8.7" + "@nrwl/tao" "15.8.7" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nrwl/nx-darwin-arm64" "15.8.7" + "@nrwl/nx-darwin-x64" "15.8.7" + "@nrwl/nx-linux-arm-gnueabihf" "15.8.7" + "@nrwl/nx-linux-arm64-gnu" "15.8.7" + "@nrwl/nx-linux-arm64-musl" "15.8.7" + "@nrwl/nx-linux-x64-gnu" "15.8.7" + "@nrwl/nx-linux-x64-musl" "15.8.7" + "@nrwl/nx-win32-arm64-msvc" "15.8.7" + "@nrwl/nx-win32-x64-msvc" "15.8.7" + + oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg== + + oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + + object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + + object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + + object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + + object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + + object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + + object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + + object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + + object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmmirror.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + + object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + + object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + + object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + + object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + + omit.js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858" + integrity sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ== + dependencies: + babel-runtime "^6.23.0" + + once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + + onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + + onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + + onigasm@^2.2.5: + version "2.2.5" + resolved "https://registry.npmmirror.com/onigasm/-/onigasm-2.2.5.tgz#cc4d2a79a0fa0b64caec1f4c7ea367585a676892" + integrity sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA== + dependencies: + lru-cache "^5.1.1" + + open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + + opener@^1.5.1: + version "1.5.2" + resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + + opener@~1.4.1: + version "1.4.3" + resolved "https://registry.npmmirror.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + integrity sha512-4Im9TrPJcjAYyGR5gBe3yZnBzw5n3Bfh1ceHHGNOpMurINKc6RdSIPXMyon4BZacJbJc36lLkhipioGbWh5pwg== + + optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + + optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + + ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + + os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + + os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + + os-name@~1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" + integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew== + dependencies: + osx-release "^1.0.0" + win-release "^1.0.0" + + os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + + osenv@0, osenv@^0.1.4, osenv@~0.1.3: + version "0.1.5" + resolved "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + + osx-release@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c" + integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A== + dependencies: + minimist "^1.1.0" + + p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + + p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + + p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + + p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + + p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + + p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + + p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + + p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + + p-map-series@2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== + + p-map@4.0.0, p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + + p-pipe@3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + + p-queue@6.6.2: + version "6.6.2" + resolved "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + + p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + + p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + + p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + + p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + + p-waterfall@2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== + dependencies: + p-reduce "^2.0.0" + + pac-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" + integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + get-uri "3" + http-proxy-agent "^4.0.1" + https-proxy-agent "5" + pac-resolver "^5.0.0" + raw-body "^2.2.0" + socks-proxy-agent "5" + + pac-resolver@^5.0.0: + version "5.0.1" + resolved "https://registry.npmmirror.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" + integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== + dependencies: + degenerator "^3.0.2" + ip "^1.1.5" + netmask "^2.0.2" + + pacote@13.6.2, pacote@^13.6.1: + version "13.6.2" + resolved "https://registry.npmmirror.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== + dependencies: + "@npmcli/git" "^3.0.0" + "@npmcli/installed-package-contents" "^1.0.7" + "@npmcli/promise-spawn" "^3.0.0" + "@npmcli/run-script" "^4.1.0" + cacache "^16.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.6" + mkdirp "^1.0.4" + npm-package-arg "^9.0.0" + npm-packlist "^5.1.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.1" + proc-log "^2.0.0" + promise-retry "^2.0.1" + read-package-json "^5.0.0" + read-package-json-fast "^2.0.3" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + + pacote@^15.0.0, pacote@^15.0.8: + version "15.1.1" + resolved "https://registry.npmmirror.com/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" + integrity sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^4.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.0.0" + ssri "^10.0.0" + tar "^6.1.11" + + pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + + parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + + parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + + parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + + parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + + parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + + parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + + parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + + parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== + dependencies: + protocols "^2.0.0" + + parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + dependencies: + parse-path "^7.0.0" + + parse5@^7.0.0, parse5@^7.1.1: + version "7.1.2" + resolved "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + + pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + + path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + + path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + + path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + + path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + + path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + + path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + + path-is-inside@^1.0.1, path-is-inside@~1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + + path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + + path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + + path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + + path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + + path-scurry@^1.6.1: + version "1.6.3" + resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.6.3.tgz#4eba7183d64ef88b63c7d330bddc3ba279dc6c40" + integrity sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g== + dependencies: + lru-cache "^7.14.1" + minipass "^4.0.2" + + path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + + path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + + path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + + pause-stream@~0.0.11: + version "0.0.11" + resolved "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + + pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + + performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg== + + performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + + picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + + picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + + pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + + pify@5.0.0, pify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + + pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + + pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + + pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + + pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + + pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + + pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + + pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + + pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + + pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + + plyr@3.6.7: + version "3.6.7" + resolved "https://registry.npmmirror.com/plyr/-/plyr-3.6.7.tgz#af8aceb30aeaf34bbcb8f13e2c71100f4752e4b1" + integrity sha512-jKuxZk3iMu7F2gDT7QlaIvODPdMbwhKl0jiF/L8tKhhZ+nXcXw24GjycYZllQSTIMOdiB8Cma22oaGjOl9EtzA== + dependencies: + core-js "^3.10.1" + custom-event-polyfill "^1.0.7" + loadjs "^4.2.0" + rangetouch "^2.0.1" + url-polyfill "^1.1.12" + + polished@^4.2.2: + version "4.2.2" + resolved "https://registry.npmmirror.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== + dependencies: + "@babel/runtime" "^7.17.8" + + portfinder@^1.0.28: + version "1.0.32" + resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + dependencies: + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" + + posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + + postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + + postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + + postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.npmmirror.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + + postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.npmmirror.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + + postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.npmmirror.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + + postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + + postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + + postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + + postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-flexbugs-fixes@4.2.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + + postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + + postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + + postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + + postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + + postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.npmmirror.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + + postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + + postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + + postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + + postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + + postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.npmmirror.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + + postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + + postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + + postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + + postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.npmmirror.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + + postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + + postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + + postcss-safe-parser@4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + + postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + + postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + + postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + + postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2: + version "6.0.11" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + + postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + + postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + + postcss@7.0.32: + version "7.0.32" + resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + + postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + + prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + + prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + + prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + + prettier@2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== + + prettier@^2.8.7: + version "2.8.7" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" + integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== + + pretty-format@29.4.3: + version "29.4.3" + resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" + integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + + pretty-format@^29.0.0, pretty-format@^29.5.0: + version "29.5.0" + resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + + pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + + proc-log@^2.0.0, proc-log@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== + + proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + + process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== + + process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + + process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + + progress-bar-webpack-plugin@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-2.1.0.tgz#f7f8c8c461f40b87a8ff168443f494289b07ee65" + integrity sha512-UtlZbnxpYk1wufEWfhIjRn2U52zlY38uvnzFhs8rRxJxC1hSqw88JNR2Mbpqq9Kix8L1nGb3uQ+/1BiUWbigAg== + dependencies: + chalk "^3.0.0" + progress "^2.0.3" + + progress@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + + promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + + promise-call-limit@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/promise-call-limit/-/promise-call-limit-1.0.1.tgz#4bdee03aeb85674385ca934da7114e9bcd3c6e24" + integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q== + + promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + + promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + + promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmmirror.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + + prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + + promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== + dependencies: + read "1" + + prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + + proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + + protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + + proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" + integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== + dependencies: + agent-base "^6.0.0" + debug "4" + http-proxy-agent "^4.0.0" + https-proxy-agent "^5.0.0" + lru-cache "^5.1.1" + pac-proxy-agent "^5.0.0" + proxy-from-env "^1.0.0" + socks-proxy-agent "^5.0.0" + + proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + + prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + + pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + + psl@^1.1.28, psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + + public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + + publish@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/publish/-/publish-0.6.0.tgz#ca124c8b9603ee1c7f739f35c12fcefbc3776f68" + integrity sha512-eP+7Jvysc11/mG2pCHewDYn10UJsJV3CzgYnu4EHufs/ksTNVM3R/jPC4sZmNxJKdNJmFBw5Uuy2Az+19PJR8w== + dependencies: + nopt "3.x.x" + npm "2.x.x" + npmlog "1.x.x" + semver "4.x.x" + + pump@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + + pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + + pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + + punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + + punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + + punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + + pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== + + pure-rand@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" + integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== + + q@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + + qs@^6.10.0, qs@^6.4.0: + version "6.11.1" + resolved "https://registry.npmmirror.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + dependencies: + side-channel "^1.0.4" + + qs@~6.2.0: + version "6.2.4" + resolved "https://registry.npmmirror.com/qs/-/qs-6.2.4.tgz#d90821bb8537cecc140e6c34f54ec76e54b39b22" + integrity sha512-E57gmgKXqDda+qWTkUJgIwgJICK7zgMfqZZopTRKZ6mY9gzLlmJN9EpXNnDrTxXFlOM/a+I28kJkF/60rqgnYw== + + qs@~6.4.0: + version "6.4.1" + resolved "https://registry.npmmirror.com/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6" + integrity sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ== + + qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + + query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + + query-string@^6.11.0: + version "6.14.1" + resolved "https://registry.npmmirror.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + + querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + + querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + + querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + + queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + + quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + + ramda-adjunct@^2.9.0: + version "2.36.0" + resolved "https://registry.npmmirror.com/ramda-adjunct/-/ramda-adjunct-2.36.0.tgz#3c8b722afa645014894736189a09af87c6707d27" + integrity sha512-8w+/Hx73oByS+vo+BfAPOG3HYL2ay6O5fjrJpR7NFxMoFWksKz6vSOtvjqdfMM6MfAimHizq9tpdI0OD4xbKog== + + ramda@^0.25.0: + version "0.25.0" + resolved "https://registry.npmmirror.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" + integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== + + ramda@^0.28.0: + version "0.28.0" + resolved "https://registry.npmmirror.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" + integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== + + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + + randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + + rangetouch@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/rangetouch/-/rangetouch-2.0.1.tgz#c01105110fd3afca2adcb1a580692837d883cb70" + integrity sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA== + + raw-body@^2.2.0: + version "2.5.2" + resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + + rc-align@^4.0.0: + version "4.0.15" + resolved "https://registry.npmmirror.com/rc-align/-/rc-align-4.0.15.tgz#2bbd665cf85dfd0b0244c5a752b07565e9098577" + integrity sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + dom-align "^1.7.0" + rc-util "^5.26.0" + resize-observer-polyfill "^1.5.1" + + rc-cascader@~3.7.0: + version "3.7.0" + resolved "https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.7.0.tgz#98134df578ce1cca22be8fb4319b04df4f3dca36" + integrity sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A== + dependencies: + "@babel/runtime" "^7.12.5" + array-tree-filter "^2.1.0" + classnames "^2.3.1" + rc-select "~14.1.0" + rc-tree "~5.7.0" + rc-util "^5.6.1" + + rc-checkbox@~2.3.0: + version "2.3.2" + resolved "https://registry.npmmirror.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + + rc-collapse@~3.4.2: + version "3.4.2" + resolved "https://registry.npmmirror.com/rc-collapse/-/rc-collapse-3.4.2.tgz#1310be7ad4cd0dcfc622c45f6c3b5ffdee403ad7" + integrity sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.2.1" + shallowequal "^1.1.0" + + rc-dialog@~9.0.0, rc-dialog@~9.0.2: + version "9.0.2" + resolved "https://registry.npmmirror.com/rc-dialog/-/rc-dialog-9.0.2.tgz#aadfebdeba145f256c1fac9b9f509f893cdbb5b8" + integrity sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-8" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" + + rc-drawer@~6.1.0: + version "6.1.4" + resolved "https://registry.npmmirror.com/rc-drawer/-/rc-drawer-6.1.4.tgz#6c1e7df38f92390c8ace0c92a6866574329c1ce3" + integrity sha512-tuRk2Hzecczt4zSH09ZQkAPzvi28HxvTgsTJtqUHgPPezhE+UBypyNls1hLVehD8fpFbsA12flophT2rKT/W8Q== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-6" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.21.2" + + rc-dropdown@~4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/rc-dropdown/-/rc-dropdown-4.0.1.tgz#f65d9d3d89750241057db59d5a75e43cd4576b68" + integrity sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.6" + rc-trigger "^5.3.1" + rc-util "^5.17.0" + + rc-field-form@~1.27.0: + version "1.27.4" + resolved "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-1.27.4.tgz#53600714af5b28c226c70d34867a8c52ccd64d44" + integrity sha512-PQColQnZimGKArnOh8V2907+VzDCXcqtFvHgevDLtqWc/P7YASb/FqntSmdS8q3VND5SHX3Y1vgMIzY22/f/0Q== + dependencies: + "@babel/runtime" "^7.18.0" + async-validator "^4.1.0" + rc-util "^5.8.0" + + rc-image@~5.13.0: + version "5.13.0" + resolved "https://registry.npmmirror.com/rc-image/-/rc-image-5.13.0.tgz#1ed9b852a40b5eff34786ba7d2f0e9d26eeab874" + integrity sha512-iZTOmw5eWo2+gcrJMMcnd7SsxVHl3w5xlyCgsULUdJhJbnuI8i/AL0tVOsE7aLn9VfOh1qgDT3mC2G75/c7mqg== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/portal" "^1.0.2" + classnames "^2.2.6" + rc-dialog "~9.0.0" + rc-motion "^2.6.2" + rc-util "^5.0.6" + + rc-input-number@~7.3.9: + version "7.3.11" + resolved "https://registry.npmmirror.com/rc-input-number/-/rc-input-number-7.3.11.tgz#c7089705a220e1a59ba974fabf89693e00dd2442" + integrity sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.23.0" + + rc-input@~0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/rc-input/-/rc-input-0.1.4.tgz#45cb4ba209ae6cc835a2acb8629d4f8f0cb347e0" + integrity sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + + rc-mentions@~1.13.1: + version "1.13.1" + resolved "https://registry.npmmirror.com/rc-mentions/-/rc-mentions-1.13.1.tgz#c884b70e1505a197f1b32a7c6b39090db6992a72" + integrity sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-menu "~9.8.0" + rc-textarea "^0.4.0" + rc-trigger "^5.0.4" + rc-util "^5.22.5" + + rc-menu@~9.8.0: + version "9.8.2" + resolved "https://registry.npmmirror.com/rc-menu/-/rc-menu-9.8.2.tgz#179df4ea0fc46fffb7a21e18d3cddb901ce35986" + integrity sha512-EahOJVjLuEnJsThoPN+mGnVm431RzVzDLZWHRS/YnXTQULa7OsgdJa/Y7qXxc3Z5sz8mgT6xYtgpmBXLxrZFaQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.2.8" + rc-trigger "^5.1.2" + rc-util "^5.27.0" + + rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2: + version "2.6.3" + resolved "https://registry.npmmirror.com/rc-motion/-/rc-motion-2.6.3.tgz#e6d8ca06591c2c1bcd3391a8e7a822ebc4d94e9c" + integrity sha512-xFLkes3/7VL/J+ah9jJruEW/Akbx5F6jVa2wG5o/ApGKQKSOd5FR3rseHLL9+xtJg4PmCwo6/1tqhDO/T+jFHA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.21.0" + + rc-notification@~4.6.0: + version "4.6.1" + resolved "https://registry.npmmirror.com/rc-notification/-/rc-notification-4.6.1.tgz#068e8674f4bd7926a447eca512915d4b41b15c91" + integrity sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.2.0" + rc-util "^5.20.1" + + rc-overflow@^1.0.0, rc-overflow@^1.2.8: + version "1.2.8" + resolved "https://registry.npmmirror.com/rc-overflow/-/rc-overflow-1.2.8.tgz#40f140fabc244118543e627cdd1ef750d9481a88" + integrity sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.19.2" + + rc-pagination@~3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/rc-pagination/-/rc-pagination-3.2.0.tgz#4f2fdba9fdac0f48e5c9fb1141973818138af7e1" + integrity sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + + rc-picker@~2.7.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/rc-picker/-/rc-picker-2.7.0.tgz#3c19881da27a0c5ee4c7e7504e21b552bd43a94c" + integrity sha512-oZH6FZ3j4iuBxHB4NvQ6ABRsS2If/Kpty1YFFsji7/aej6ruGmfM7WnJWQ88AoPfpJ++ya5z+nVEA8yCRYGKyw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + date-fns "2.x" + dayjs "1.x" + moment "^2.24.0" + rc-trigger "^5.0.4" + rc-util "^5.4.0" + shallowequal "^1.1.0" + + rc-progress@~3.4.1: + version "3.4.1" + resolved "https://registry.npmmirror.com/rc-progress/-/rc-progress-3.4.1.tgz#a9ffe099e88a4fc03afb09d8603162bf0760d743" + integrity sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.16.1" + + rc-rate@~2.9.0: + version "2.9.2" + resolved "https://registry.npmmirror.com/rc-rate/-/rc-rate-2.9.2.tgz#4a58965d1ecf91896ebae01d458b59056df0b4ea" + integrity sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + + rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz#b61b9f27048001243617b81f95e53d7d7d7a6a3d" + integrity sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg== + dependencies: + "@babel/runtime" "^7.20.7" + classnames "^2.2.1" + rc-util "^5.27.0" + resize-observer-polyfill "^1.5.1" + + rc-segmented@~2.1.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/rc-segmented/-/rc-segmented-2.1.2.tgz#14c9077a1dae9c2ccb2ef5fbc5662c1c48c7ce8e" + integrity sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-motion "^2.4.4" + rc-util "^5.17.0" + + rc-select@~14.1.0, rc-select@~14.1.13: + version "14.1.16" + resolved "https://registry.npmmirror.com/rc-select/-/rc-select-14.1.16.tgz#0cc4b5a1fc551a2db7c96bc1ece0896317ecdd47" + integrity sha512-71XLHleuZmufpdV2vis5oituRkhg2WNvLpVMJBGWRar6WGAVOHXaY9DR5HvwWry3EGTn19BqnL6Xbybje6f8YA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.0.0" + rc-trigger "^5.0.4" + rc-util "^5.16.1" + rc-virtual-list "^3.2.0" + + rc-slider@~10.0.0: + version "10.0.1" + resolved "https://registry.npmmirror.com/rc-slider/-/rc-slider-10.0.1.tgz#7058c68ff1e1aa4e7c3536e5e10128bdbccb87f9" + integrity sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.18.1" + shallowequal "^1.1.0" + + rc-steps@~5.0.0-alpha.2: + version "5.0.0" + resolved "https://registry.npmmirror.com/rc-steps/-/rc-steps-5.0.0.tgz#2e2403f2dd69eb3966d65f461f7e3a8ee1ef69fe" + integrity sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw== + dependencies: + "@babel/runtime" "^7.16.7" + classnames "^2.2.3" + rc-util "^5.16.1" + + rc-switch@~3.2.0: + version "3.2.2" + resolved "https://registry.npmmirror.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8" + integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.1" + + rc-table@~7.26.0: + version "7.26.0" + resolved "https://registry.npmmirror.com/rc-table/-/rc-table-7.26.0.tgz#9d517e7fa512e7571fdcc453eb1bf19edfac6fbc" + integrity sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.22.5" + shallowequal "^1.1.0" + + rc-tabs@~12.5.6: + version "12.5.10" + resolved "https://registry.npmmirror.com/rc-tabs/-/rc-tabs-12.5.10.tgz#0e41c723fac66c4f0bcad3271429fff6653b0721" + integrity sha512-Ay0l0jtd4eXepFH9vWBvinBjqOpqzcsJTerBGwJy435P2S90Uu38q8U/mvc1sxUEVOXX5ZCFbxcWPnfG3dH+tQ== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "~4.0.0" + rc-menu "~9.8.0" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.16.0" + + rc-textarea@^0.4.0, rc-textarea@~0.4.5: + version "0.4.7" + resolved "https://registry.npmmirror.com/rc-textarea/-/rc-textarea-0.4.7.tgz#627f662d46f99e0059d1c1ebc8db40c65339fe90" + integrity sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.24.4" + shallowequal "^1.1.0" + + rc-tooltip@~5.2.0: + version "5.2.2" + resolved "https://registry.npmmirror.com/rc-tooltip/-/rc-tooltip-5.2.2.tgz#e5cafa8ecebf78108936a0bcb93c150fa81ac93b" + integrity sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.3.1" + rc-trigger "^5.0.0" + + rc-tree-select@~5.5.0: + version "5.5.5" + resolved "https://registry.npmmirror.com/rc-tree-select/-/rc-tree-select-5.5.5.tgz#d28b3b45da1e820cd21762ba0ee93c19429bb369" + integrity sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "~14.1.0" + rc-tree "~5.7.0" + rc-util "^5.16.1" + + rc-tree@~5.7.0: + version "5.7.3" + resolved "https://registry.npmmirror.com/rc-tree/-/rc-tree-5.7.3.tgz#5da576ba87039486d59092eb4490831690b8b3b5" + integrity sha512-Oql2S9+ZmT+mfTp5SNo1XM0QvkENjc0mPRFsHWRFSPuKird0OYMZZKmLznUJ+0aGDeFFWN42wiUZJtMFhrLgLw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.4.8" + + rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10, rc-trigger@^5.3.1: + version "5.3.4" + resolved "https://registry.npmmirror.com/rc-trigger/-/rc-trigger-5.3.4.tgz#6b4b26e32825677c837d1eb4d7085035eecf9a61" + integrity sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.6" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-util "^5.19.2" + + rc-upload@^4.3.4, rc-upload@~4.3.0: + version "4.3.4" + resolved "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.3.4.tgz#83ff7d3867631c37adbfd72ea3d1fd7e97ca84af" + integrity sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.5" + rc-util "^5.2.0" + + rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.15.0, rc-util@^5.16.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.21.2, rc-util@^5.22.5, rc-util@^5.23.0, rc-util@^5.24.4, rc-util@^5.26.0, rc-util@^5.27.0, rc-util@^5.4.0, rc-util@^5.6.1, rc-util@^5.8.0, rc-util@^5.9.4: + version "5.29.2" + resolved "https://registry.npmmirror.com/rc-util/-/rc-util-5.29.2.tgz#a3741fca57b3dce78f315574ed099945f367b222" + integrity sha512-xHT9Dr3RD6tyvCibnH10l3mudC6TJjWNr9UDy3CrOGZqTY354OfdwP87ahKNe0b3A1dsysDldvx0SBuswhlOeA== + dependencies: + "@babel/runtime" "^7.18.3" + react-is "^16.12.0" + + rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.8: + version "3.4.13" + resolved "https://registry.npmmirror.com/rc-virtual-list/-/rc-virtual-list-3.4.13.tgz#20acc934b263abcf7b7c161f50ef82281b2f7e8d" + integrity sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w== + dependencies: + "@babel/runtime" "^7.20.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.15.0" + + react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + + react-color@^2.19.3: + version "2.19.3" + resolved "https://registry.npmmirror.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" + integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.15" + lodash-es "^4.17.15" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + + react-colorful@^5.1.2: + version "5.6.1" + resolved "https://registry.npmmirror.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" + integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== + + react-dnd-html5-backend@^14.0.0: + version "14.1.0" + resolved "https://registry.npmmirror.com/react-dnd-html5-backend/-/react-dnd-html5-backend-14.1.0.tgz#b35a3a0c16dd3a2bfb5eb7ec62cf0c2cace8b62f" + integrity sha512-6ONeqEC3XKVf4eVmMTe0oPds+c5B9Foyj8p/ZKLb7kL2qh9COYxiBHv3szd6gztqi/efkmriywLUVlPotqoJyw== + dependencies: + dnd-core "14.0.1" + + react-dnd@^14.0.2: + version "14.0.5" + resolved "https://registry.npmmirror.com/react-dnd/-/react-dnd-14.0.5.tgz#ecf264e220ae62e35634d9b941502f3fca0185ed" + integrity sha512-9i1jSgbyVw0ELlEVt/NkCUkxy1hmhJOkePoCH713u75vzHGyXhPDm28oLfc2NMSBjZRM1Y+wRjHXJT3sPrTy+A== + dependencies: + "@react-dnd/invariant" "^2.0.0" + "@react-dnd/shallowequal" "^2.0.0" + dnd-core "14.0.1" + fast-deep-equal "^3.1.3" + hoist-non-react-statics "^3.3.2" + + react-dom@16.x: + version "16.14.0" + resolved "https://registry.npmmirror.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" + integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + + react-dom@^17.0.0: + version "17.0.2" + resolved "https://registry.npmmirror.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + + react-element-to-jsx-string@^15.0.0: + version "15.0.0" + resolved "https://registry.npmmirror.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" + integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== + dependencies: + "@base2/pretty-print-object" "1.0.1" + is-plain-object "5.0.0" + react-is "18.1.0" + + react-error-boundary@^3.1.4: + version "3.1.4" + resolved "https://registry.npmmirror.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + dependencies: + "@babel/runtime" "^7.12.5" + + react-frame-component@^5.2.4, react-frame-component@^5.2.6: + version "5.2.6" + resolved "https://registry.npmmirror.com/react-frame-component/-/react-frame-component-5.2.6.tgz#0d9991d251ff1f7177479d8f370deea06b824b79" + integrity sha512-CwkEM5VSt6nFwZ1Op8hi3JB5rPseZlmnp5CGiismVTauE6S4Jsc4TNMlT0O7Cts4WgIC3ZBAQ2p1Mm9XgLbj+w== + + react-i18next@^11.8.12: + version "11.18.6" + resolved "https://registry.npmmirror.com/react-i18next/-/react-i18next-11.18.6.tgz#e159c2960c718c1314f1e8fcaa282d1c8b167887" + integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== + dependencies: + "@babel/runtime" "^7.14.5" + html-parse-stringify "^3.0.1" + + react-inspector@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/react-inspector/-/react-inspector-6.0.1.tgz#1a37f0165d9df81ee804d63259eaaeabe841287d" + integrity sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg== + + react-is@18.1.0: + version "18.1.0" + resolved "https://registry.npmmirror.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + + react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + + react-is@^18.0.0, react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.npmmirror.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + + react-json-view@^1.21.3: + version "1.21.3" + resolved "https://registry.npmmirror.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" + integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== + dependencies: + flux "^4.0.1" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^8.3.2" + + react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + + react-monaco-editor-lite@^1.0.70: + version "1.0.75" + resolved "https://registry.npmmirror.com/react-monaco-editor-lite/-/react-monaco-editor-lite-1.0.75.tgz#31ec30f51780541da3419953cdab7f898336c0ec" + integrity sha512-B8GPcROZU0AG9HUeraj30dxIpuBMMsWyMricvxF7PYQUSuTTP7gc/H5va+kUx+VtgQnko0AVDuoyO5LDY/0uxg== + dependencies: + monaco-editor "^0.30.1" + monaco-editor-textmate "^3.0.0" + monaco-textmate "^3.0.1" + onigasm "^2.2.5" + + react-refresh@0.10.0: + version "0.10.0" + resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" + integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== + + react-router-config@5.1.1, react-router-config@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== + dependencies: + "@babel/runtime" "^7.1.2" + + react-router-dom@5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + + react-router@5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== + dependencies: + "@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.4.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" + + react-router@^5.2.0: + version "5.3.4" + resolved "https://registry.npmmirror.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + 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" + + react-sortable-hoc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz#f6780d8aa4b922a21f3e754af542f032677078b7" + integrity sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg== + dependencies: + "@babel/runtime" "^7.2.0" + invariant "^2.2.4" + prop-types "^15.5.7" + + react-textarea-autosize@^8.3.2: + version "8.4.0" + resolved "https://registry.npmmirror.com/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz#4d0244d6a50caa897806b8c44abc0540a69bfc8c" + integrity sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ== + dependencies: + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + + react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + + react@16.x: + version "16.14.0" + resolved "https://registry.npmmirror.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + + react@^17.0.0: + version "17.0.2" + resolved "https://registry.npmmirror.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + + reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.npmmirror.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + + read-cmd-shim@3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" + integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== + + read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + + read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + integrity sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ== + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + + read-package-json-fast@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + + read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + + "read-package-json@1 || 2", read-package-json@^2.0.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + + read-package-json@5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-5.0.1.tgz#1ed685d95ce258954596b13e2e0e76c7d0ab4c26" + integrity sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^1.0.1" + + read-package-json@^5.0.0: + version "5.0.2" + resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" + + read-package-json@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-6.0.1.tgz#566cb06bc05dbddefba4607e9096d5a9efbcd836" + integrity sha512-AaHqXxfAVa+fNL07x8iAghfKOds/XXsu7zoouIVsbm7PEbQ3nMWXlvjcbrNLjElnUHWQtAo4QEa0RXuvD4XlpA== + dependencies: + glob "^9.3.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" + + read-package-json@~2.0.4: + version "2.0.13" + resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" + integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + slash "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + + read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + + read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + + read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + + read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + + read@1, read@^1.0.7, read@~1.0.1, read@~1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + + "readable-stream@1 || 2", readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + + readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + + readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + + readable-stream@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-4.3.0.tgz#0914d0c72db03b316c9733bb3461d64a3cc50cba" + integrity sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + + readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + + readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + + readable-stream@~2.1.5: + version "2.1.5" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + integrity sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw== + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + + readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + + readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + + readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + + readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + + realize-package-specifier@~3.0.1: + version "3.0.3" + resolved "https://registry.npmmirror.com/realize-package-specifier/-/realize-package-specifier-3.0.3.tgz#d0def882952b8de3f67eba5e91199661271f41f4" + integrity sha512-BwF/SVs7c0BFrh9DI5ovZKu1r95uYPwOcj/LlzKW2rNs+HgivxIN0f/RAtNCl+2++RB/tKI1uz63IMzWD1OqIg== + dependencies: + dezalgo "^1.0.1" + npm-package-arg "^4.1.1" + + recast@^0.23.1: + version "0.23.1" + resolved "https://registry.npmmirror.com/recast/-/recast-0.23.1.tgz#ee415a5561d2f99f02318ea8db81ad3a2267a6ff" + integrity sha512-RokaBcoxSjXUDzz1TXSZmZsSW6ZpLmlA3GGqJ8uuTrQ9hZhEz+4Tpsc+gRvYRJ2BU4H+ZyUlg91eSGDw7bwy7g== + dependencies: + assert "^2.0.0" + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + + rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.npmmirror.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + + redent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + + redux@^4.1.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" + integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== + dependencies: + "@babel/runtime" "^7.9.2" + + regenerate-unicode-properties@10.0.1: + version "10.0.1" + resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + + regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + + regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + + regenerator-runtime@0.13.5: + version "0.13.5" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + + regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + + regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + + regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + + regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + + regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + + regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + + regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + + remark-external-links@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" + integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== + dependencies: + extend "^3.0.0" + is-absolute-url "^3.0.0" + mdast-util-definitions "^4.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" + + remark-slug@^6.0.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" + integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== + dependencies: + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^2.0.0" + + remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + + repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + + repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + + "request@>=2.9.0 <2.82.0": + version "2.81.0" + resolved "https://registry.npmmirror.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + integrity sha512-IZnsR7voF0miGSu29EXPRgPTuEsI/+aibNSBbN1pplrfartF5wDYGADz3iD9vmBVf2r00rckWZf8BtS5kk7Niw== + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + + request@^2.74.0: + version "2.88.2" + resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + + request@~2.74.0: + version "2.74.0" + resolved "https://registry.npmmirror.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" + integrity sha512-m3uMovC42y63jXe/Sr49/qJdqpSYwQAgYIc487l0zSXI6Z6f5cV/V4a86h2Z+AAwKpt5bfB66KrZxOfOSdh6FQ== + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc4" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + + require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + + require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + + requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + + resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + + resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + + resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + + resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + + resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + + resolve-global@1.0.0, resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" + + resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + + resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + + resolve.exports@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-2.0.1.tgz#cee884cd4e3f355660e501fa3276b27d7ffe5a20" + integrity sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw== + + resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.9.0: + version "1.22.1" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + + resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + + restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + + ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + + retry@^0.10.0, retry@~0.10.0: + version "0.10.1" + resolved "https://registry.npmmirror.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== + + retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + + reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + + rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + + rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + + rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + + rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + + rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + integrity sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ== + dependencies: + glob "^7.0.5" + + ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + + run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + + run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + + run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== + dependencies: + aproba "^1.1.1" + + rxjs@^7.5.5, rxjs@^7.8.0: + version "7.8.0" + resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + + safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + + safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + + sax@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + + saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + + scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + + scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + + schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + + schema-utils@^3.0.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + + screenfull@^5.0.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + + scroll-into-view-if-needed@^2.2.25: + version "2.2.31" + resolved "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587" + integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== + dependencies: + compute-scroll-into-view "^1.0.20" + + secure-compare@3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== + + "semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + + semver@4.x.x: + version "4.3.6" + resolved "https://registry.npmmirror.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + integrity sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ== + + semver@7.3.4: + version "7.3.4" + resolved "https://registry.npmmirror.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + + semver@7.3.8, semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + + semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + + semver@~5.1.0: + version "5.1.1" + resolved "https://registry.npmmirror.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" + integrity sha512-bNx9Zdbi1OUN62PbKeG4IgGG8YILX/nkHJ0NQEBwg5FmX8qTJfqhYd3reqkm0DxHCC8nkazb6UjNiBSHCBWVtA== + + semver@~5.3.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== + + serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + + set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + + set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + + setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + + setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + + sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + + sha@~2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" + integrity sha512-Lj/GiNro+/4IIvhDvTo2HDqTmQkbqgg/O3lbkM5lMgagriGPpWamxtq1KJPx7mCvyF1/HG6Hs7zaYaj4xpfXbA== + dependencies: + graceful-fs "^4.1.2" + readable-stream "^2.0.2" + + shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + + shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + + shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + + shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + + shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + + shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + + shiki@^0.14.1: + version "0.14.1" + resolved "https://registry.npmmirror.com/shiki/-/shiki-0.14.1.tgz#9fbe082d0a8aa2ad63df4fbf2ee11ec924aa7ee1" + integrity sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw== + dependencies: + ansi-sequence-parser "^1.1.0" + jsonc-parser "^3.2.0" + vscode-oniguruma "^1.7.0" + vscode-textmate "^8.0.0" + + side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + + signal-exit@3.0.7, signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + + sigstore@^1.0.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/sigstore/-/sigstore-1.2.0.tgz#ae5b31dac75c2d31e7873897e2862f0d0b205bce" + integrity sha512-Fr9+W1nkBSIZCkJQR7jDn/zI0UXNsVpp+7mDQkCnZOIxG9p6yNXBx9xntHsfUyYHE55XDkkVV3+rYbrkzAeesA== + dependencies: + "@sigstore/protobuf-specs" "^0.1.0" + make-fetch-happen "^11.0.1" + tuf-js "^1.0.0" + + simple-git@^3.7.1: + version "3.17.0" + resolved "https://registry.npmmirror.com/simple-git/-/simple-git-3.17.0.tgz#1a961fa43f697b4e2391cf34c8a0554ef84fed8e" + integrity sha512-JozI/s8jr3nvLd9yn2jzPVHnhVzt7t7QWfcIoDcqRIGN+f1IINGv52xoZti2kkYfoRhhRvzMSNPfogHMp97rlw== + dependencies: + "@kwsites/file-exists" "^1.1.1" + "@kwsites/promise-deferred" "^1.1.1" + debug "^4.3.4" + + simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + + sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + + slash@3.0.0, slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + + slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + + slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + + slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + + slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + + slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + + slide@^1.1.3, slide@^1.1.5, slide@~1.1.3, slide@~1.1.6: + version "1.1.6" + resolved "https://registry.npmmirror.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== + + smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + + snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + + snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + + snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + 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" + + sntp@1.x.x: + version "1.0.9" + resolved "https://registry.npmmirror.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + integrity sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A== + dependencies: + hoek "2.x.x" + + socks-proxy-agent@5, socks-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== + dependencies: + agent-base "^6.0.2" + debug "4" + socks "^2.3.3" + + socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + + socks@^2.3.3, socks@^2.6.2: + version "2.7.1" + resolved "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + + sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + + sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + + sorted-object@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + integrity sha512-oKAAs26HeTu3qbawzUGCkTOBv/5MRrcuJyRWwbfEnWdpXnXsj+WEM3HTvarV73tMcf9uBEZNZoNDVRL62VLxzA== + + source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + + source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + 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-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + + source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + + source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + + source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + + space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + + spark-md5@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== + + spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + + spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + + spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + + spdx-license-ids@^3.0.0: + version "3.0.13" + resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + + spdx-license-ids@~1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + integrity sha512-qIBFhkh6ILCWNeWEe3ODFPKDYhPJrZpqdNCI2Z+w9lNdH5hoVEkfRLLbRfoIi8fb4xRYmpEOaaMH4G2pwYp/iQ== + + split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + + split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + + split2@^3.0.0: + version "3.2.2" + resolved "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + + split@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + + sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + + sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + + ssri@9.0.1, ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + + ssri@^10.0.0, ssri@^10.0.1: + version "10.0.1" + resolved "https://registry.npmmirror.com/ssri/-/ssri-10.0.1.tgz#c61f85894bbc6929fc3746f05e31cf5b44c030d5" + integrity sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw== + dependencies: + minipass "^4.0.0" + + ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + + stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmmirror.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + + stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + + state-local@^1.0.6: + version "1.0.7" + resolved "https://registry.npmmirror.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" + integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== + + static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + + statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + + statuses@^1.3.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + + store2@^2.14.2: + version "2.14.2" + resolved "https://registry.npmmirror.com/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" + integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== + + stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + + stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + + stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + + stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + + streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + + strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + + strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + + string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + + string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + + string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + + string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + + "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + + string-width@^5.0.0: + version "5.1.2" + resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + + string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.npmmirror.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + + string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + + string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + + string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + + string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + + string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + + string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + + stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.npmmirror.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== + + strip-ansi@^3.0.0, strip-ansi@^3.0.1, strip-ansi@~3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + + strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + + strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + + strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + + strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + + strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + + strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + + strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + + strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + + strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + + strnum@^1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + + strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + + style-mod@^4.0.0: + version "4.0.2" + resolved "https://registry.npmmirror.com/style-mod/-/style-mod-4.0.2.tgz#ef9e14c4c67428bcf31cc886787e81ca7f8f5021" + integrity sha512-C4myMmRTO8iaC5Gg+N1ftK2WT4eXUTMAa+HEFPPrfVeO/NtqLTtAmV1HbqnuGtLwCek44Ra76fdGUkSqjiMPcQ== + + styled-components@^5.3.3, styled-components@^5.3.5, styled-components@^5.3.6: + version "5.3.9" + resolved "https://registry.npmmirror.com/styled-components/-/styled-components-5.3.9.tgz#641af2a8bb89904de708c71b439caa9633e8f0ba" + integrity sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + + supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + + supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + + supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + + supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + + supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + + supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + + symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + + synchronous-promise@^2.0.15: + version "2.0.17" + resolved "https://registry.npmmirror.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" + integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== + + synckit@^0.8.4: + version "0.8.5" + resolved "https://registry.npmmirror.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + + tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + + tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + + tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + + tar@6.1.11: + version "6.1.11" + resolved "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + + tar@^2.0.0, tar@~2.2.1: + version "2.2.2" + resolved "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + + tar@^6.1.11, tar@^6.1.2: + version "6.1.13" + resolved "https://registry.npmmirror.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + + telejson@^7.0.3: + version "7.1.0" + resolved "https://registry.npmmirror.com/telejson/-/telejson-7.1.0.tgz#1ef7a0dd57eeb52cde933126f61bcc296c170f52" + integrity sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA== + dependencies: + memoizerific "^1.11.3" + + temp-dir@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + + temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + + tempfile@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/tempfile/-/tempfile-3.0.0.tgz#5376a3492de7c54150d0cc0612c3f00e2cdaf76c" + integrity sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw== + dependencies: + temp-dir "^2.0.0" + uuid "^3.3.2" + + tempy@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65" + integrity sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + + terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + + terser@5.14.2: + version "5.14.2" + resolved "https://registry.npmmirror.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + + terser@^4.1.2: + version "4.8.1" + resolved "https://registry.npmmirror.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + + test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + + text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + + text-table@^0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + + thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + + "thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + + through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + + through2@^4.0.0: + version "4.0.2" + resolved "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + + through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3: + version "2.3.8" + resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + + timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + + tiny-glob@^0.2.9: + version "0.2.9" + resolved "https://registry.npmmirror.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + + tiny-invariant@^1.0.2: + version "1.3.1" + resolved "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + + tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + + tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + + tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + + tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + + tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + + to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + + to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + + to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + + to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + + to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + + to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + + toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + + toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + + tough-cookie@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + + tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== + dependencies: + punycode "^1.4.1" + + tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + + tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + + tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + + treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + + trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + + ts-dedent@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + + ts-node@^10.8.1: + version "10.9.1" + resolved "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + + tsconfig-paths-webpack-plugin@^3.5.2: + version "3.5.2" + resolved "https://registry.npmmirror.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz#01aafff59130c04a8c4ebc96a3045c43c376449a" + integrity sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tsconfig-paths "^3.9.0" + + tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: + version "3.14.2" + resolved "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + + tsconfig-paths@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a" + integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + + tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + + tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + + tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.5.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + + tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + + tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + + tuf-js@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/tuf-js/-/tuf-js-1.1.2.tgz#09ca04a89783b739e67dd796f6562e3940628aea" + integrity sha512-gBfbnS6khluxjvoFCpRV0fhWT265xNfpiNXOcBX0Ze6HGbPhe93UG5V5DdKcgm/aXsMadnY76l/h6j63GmJS5g== + dependencies: + "@tufjs/models" "1.0.1" + make-fetch-happen "^11.0.1" + + tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + + tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + integrity sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ== + + tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + + type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + + type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + + type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + + type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + + type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + + type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + + type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + + type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + + type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + + type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + + type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + + typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + + typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + + typedoc@^0.23.21: + version "0.23.28" + resolved "https://registry.npmmirror.com/typedoc/-/typedoc-0.23.28.tgz#3ce9c36ef1c273fa849d2dea18651855100d3ccd" + integrity sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w== + dependencies: + lunr "^2.3.9" + marked "^4.2.12" + minimatch "^7.1.3" + shiki "^0.14.1" + + "typescript@^3 || ^4", typescript@^4.9.3: + version "4.9.5" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + + "typescript@^4.6.4 || ^5.0.0": + version "5.0.2" + resolved "https://registry.npmmirror.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5" + integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw== + + ua-parser-js@^0.7.30: + version "0.7.34" + resolved "https://registry.npmmirror.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" + integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== + + uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + + uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== + + umask@~1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA== + + umi@^3.5.24: + version "3.5.38" + resolved "https://registry.npmmirror.com/umi/-/umi-3.5.38.tgz#0384437135f00082fa1a8c56e7ca7320424c2bf0" + integrity sha512-Fmf4EdyDMtjs1RvXGwLeZ3vkS5ebQpYspddgZbVMSz2eXl3zfMYWKz1JlsXupyoOrmLq44ueHr1WQVCdxvoyVA== + dependencies: + "@umijs/bundler-webpack" "3.5.38" + "@umijs/core" "3.5.38" + "@umijs/deps" "3.5.38" + "@umijs/preset-built-in" "3.5.38" + "@umijs/runtime" "3.5.38" + "@umijs/types" "3.5.38" + "@umijs/utils" "3.5.38" + react "16.x" + react-dom "16.x" + v8-compile-cache "2.3.0" + + unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + + undici@^5.6.0: + version "5.21.0" + resolved "https://registry.npmmirror.com/undici/-/undici-5.21.0.tgz#b00dfc381f202565ab7f52023222ab862bb2494f" + integrity sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA== + dependencies: + busboy "^1.6.0" + + unescape@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" + integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== + dependencies: + extend-shallow "^2.0.1" + + unfetch@^4.1.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + + unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + + unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + + unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + + unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + + union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + + union@~0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== + dependencies: + qs "^6.4.0" + + uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + + unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + + unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + + unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + + unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + + unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + + unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + + unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + + unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + + unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + + unist-util-visit@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + + universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + + universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + + universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + + universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + + unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + + unplugin@^0.10.2: + version "0.10.2" + resolved "https://registry.npmmirror.com/unplugin/-/unplugin-0.10.2.tgz#0f7089c3666f592cc448d746e39e7f41e9afb01a" + integrity sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA== + dependencies: + acorn "^8.8.0" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.4.5" + + unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + + untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + + upath@2.0.1, upath@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + + upath@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + + update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + + uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + + urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + + url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + + url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + + url-polyfill@^1.1.12: + version "1.1.12" + resolved "https://registry.npmmirror.com/url-polyfill/-/url-polyfill-1.1.12.tgz#6cdaa17f6b022841b3aec0bf8dbd87ac0cd33331" + integrity sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A== + + url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmmirror.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + + urllib@^2.38.0: + version "2.40.0" + resolved "https://registry.npmmirror.com/urllib/-/urllib-2.40.0.tgz#c63d4425081908560d7e1c4dc651f7d723a3cf76" + integrity sha512-XDZjoijtzsbkXTXgM+A/sJM002nwoYsc46YOYr6MNH2jUUw1nCBf2ywT1WaPsVEWJX4Yr+9isGmYj4+yofFn9g== + dependencies: + any-promise "^1.3.0" + content-type "^1.0.2" + debug "^2.6.9" + default-user-agent "^1.0.0" + digest-header "^1.0.0" + ee-first "~1.1.1" + formstream "^1.1.0" + humanize-ms "^1.2.0" + iconv-lite "^0.4.15" + ip "^1.1.5" + proxy-agent "^5.0.0" + pump "^3.0.0" + qs "^6.4.0" + statuses "^1.3.1" + utility "^1.16.1" + + urllib@^3.11.0: + version "3.11.0" + resolved "https://registry.npmmirror.com/urllib/-/urllib-3.11.0.tgz#c1db628b6b5ee4a0866505006fd79b96bce4d4d2" + integrity sha512-rm/2dPV6n8Db4GANtmcDWyVwR2Wj1P+Ybr0RWBBL2YXqsqUoEKI6q+93tLrFAsWJJZk8oKGpoE+XImQhKsu9hQ== + dependencies: + default-user-agent "^1.0.0" + digest-header "^1.0.0" + form-data-encoder "^1.7.2" + formdata-node "^4.3.3" + formstream "^1.1.1" + mime-types "^2.1.35" + pump "^3.0.0" + undici "^5.6.0" + + use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + + use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + + use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + + use-resize-observer@^9.1.0: + version "9.1.0" + resolved "https://registry.npmmirror.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" + integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== + dependencies: + "@juggle/resize-observer" "^3.3.1" + + use-subscription@1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== + dependencies: + object-assign "^4.1.1" + + use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + + use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + + util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA== + + util@0.10.3: + version "0.10.3" + resolved "https://registry.npmmirror.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== + dependencies: + inherits "2.0.1" + + util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + + util@^0.12.0: + version "0.12.5" + resolved "https://registry.npmmirror.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + + utility@^1.16.1, utility@^1.17.0: + version "1.17.0" + resolved "https://registry.npmmirror.com/utility/-/utility-1.17.0.tgz#60819f712a6e0ce774f52fb1d691992a5f59d362" + integrity sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw== + dependencies: + copy-to "^2.0.1" + escape-html "^1.0.3" + mkdirp "^0.5.1" + mz "^2.7.0" + unescape "^1.0.1" + + uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" + integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== + + uuid@8.3.2: + version "8.3.2" + resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + + uuid@^3.0.0, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + + v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + + v8-compile-cache@2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + + v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + + validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4, validate-npm-package-license@~3.0.1: + version "3.0.4" + resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + + validate-npm-package-name@4.0.0, validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + + validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + + validate-npm-package-name@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" + integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== + dependencies: + builtins "^5.0.0" + + validate-npm-package-name@~2.2.2: + version "2.2.2" + resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-2.2.2.tgz#f65695b22f7324442019a3c7fa39a6e7fd299085" + integrity sha512-zt38kWHt0j/tv8ZKqZB5lEVT3A41JarczU/ib7L+OXZFAjC2l9kPeujQI1m4smU1nmSwF06MqEetltqVkDmnuQ== + dependencies: + builtins "0.0.7" + + value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + + verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + + vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + + vm2@^3.9.8: + version "3.9.14" + resolved "https://registry.npmmirror.com/vm2/-/vm2-3.9.14.tgz#964042b474cf1e6e4f475a39144773cdb9deb734" + integrity sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA== + dependencies: + acorn "^8.7.0" + acorn-walk "^8.2.0" + + void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + + vscode-oniguruma@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" + integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== + + vscode-textmate@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" + integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== + + w3c-keyname@^2.2.4: + version "2.2.6" + resolved "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f" + integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg== + + w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== + dependencies: + xml-name-validator "^4.0.0" + + walk-up-path@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== + + walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + + watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + + watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + + wcwidth@^1.0.0, wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + + web-streams-polyfill@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" + integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== + + webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + + webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + + webpack-chain@6.5.1: + version "6.5.1" + resolved "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" + integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^2.0.1" + + webpack-cli@^4.9.2: + version "4.10.0" + resolved "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + colorette "^2.0.14" + commander "^7.0.0" + cross-spawn "^7.0.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + + webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + + webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + + webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + + webpack-virtual-modules@^0.4.5: + version "0.4.6" + resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== + + webpack@^4.46.0: + version "4.46.0" + resolved "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + + whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + + whatwg-fetch@>=0.10.0, whatwg-fetch@^3.6.2: + version "3.6.2" + resolved "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + + whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + + whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + + whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + + which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + + which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + + which@1, which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + + which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + + which@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/which/-/which-3.0.0.tgz#a9efd016db59728758a390d23f1687b6e8f59f8e" + integrity sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ== + dependencies: + isexe "^2.0.0" + + which@~1.2.11: + version "1.2.14" + resolved "https://registry.npmmirror.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + integrity sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw== + dependencies: + isexe "^2.0.0" + + wide-align@^1.1.0, wide-align@^1.1.2, wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + + wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + + win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw== + dependencies: + semver "^5.0.1" + + word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + + wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + + worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + + wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + + wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + + wrappy@1, wrappy@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + + write-file-atomic@4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + + write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + + write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + + write-file-atomic@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-5.0.0.tgz#54303f117e109bf3d540261125c8ea5a7320fab0" + integrity sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + + write-file-atomic@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-1.1.4.tgz#b1f52dc2e8dc0e3cb04d187a25f758a38a90ca3b" + integrity sha512-c5qespPIeoD/YQTLgdOTe9mcjhK0MhK/URjnIlpuF+4Hoec1flfMRcZY+SWrqGHHRC1oGY1VyNC44wiLQgJMiw== + dependencies: + graceful-fs "^4.1.2" + imurmurhash "^0.1.4" + slide "^1.1.5" + + write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + + write-pkg@4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== + dependencies: + sort-keys "^2.0.0" + type-fest "^0.4.1" + write-json-file "^3.2.0" + + ws@^8.11.0: + version "8.13.0" + resolved "https://registry.npmmirror.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + + xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + + xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + + xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== + + xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + + y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + + y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + + yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + + yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + + yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + + yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + + yaml@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" + integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== + + yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + + yargs-parser@21.1.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + + yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + + yargs@16.2.0, yargs@^16.1.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + + yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2: + version "17.7.1" + resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + + yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + + yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + + zrender@5.4.1: + version "5.4.1" + resolved "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz#892f864b885c71e1dc25dcb3c7a4ba42678d3f11" + integrity sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA== + dependencies: + tslib "2.3.0" diff --git a/apps/playground/.env b/apps/playground/.env new file mode 100644 index 0000000..2abe91d --- /dev/null +++ b/apps/playground/.env @@ -0,0 +1,2 @@ +PORT=6006 +HOST=local.netease.com diff --git a/apps/playground/README.md b/apps/playground/README.md new file mode 100644 index 0000000..b9d7177 --- /dev/null +++ b/apps/playground/README.md @@ -0,0 +1,5 @@ +# `playground` + +搭建平台演示示例 + +## 说明 diff --git a/apps/playground/config/config.ts b/apps/playground/config/config.ts new file mode 100644 index 0000000..667b972 --- /dev/null +++ b/apps/playground/config/config.ts @@ -0,0 +1,64 @@ +import path from 'path'; + +const resolvePackageIndex = (relativeEntry: string) => + path.resolve(__dirname, '../../../packages/', relativeEntry); + +export default { + routes: [ + { + exact: true, + path: '/', + component: 'index', + name: '首页', + }, + ], + devServer: { + host: 'local.netease.com', + port: 7007, + https: { + key: path.resolve(__dirname, 'local.netease.com-key.pem'), + cert: path.resolve(__dirname, 'local.netease.com.pem'), + }, + headers: { 'Origin-Agent-Cluster': '?0' }, + }, + targets: { + chrome: 79, + firefox: false, + safari: false, + edge: false, + ios: false, + }, + alias: { + '@music163/tango-helpers': resolvePackageIndex('helpers/src/index.ts'), + '@music163/tango-core': resolvePackageIndex('core/src/index.ts'), + '@music163/tango-context': resolvePackageIndex('context/src/index.ts'), + '@music163/tango-ui': resolvePackageIndex('ui/src/index.ts'), + '@music163/tango-designer': resolvePackageIndex('designer/src/index.ts'), + '@music163/tango-sandbox': resolvePackageIndex('sandbox/src/index.ts'), + '@music163/tango-setting-form': resolvePackageIndex('setting-form/src/index.ts'), + }, + externals: { + react: 'React', + 'react-dom': 'ReactDOM', + 'styled-components': 'styled', + moment: 'moment', + antd: 'antd', + }, + chainWebpack: (config: any) => { + // @see https://github.com/graphql/graphql-js/issues/1272#issuecomment-393903706 + config.module + .rule('mjs') + .test(/\.mjs$/) + .include.add(/node_modules/) + .end() + .type('javascript/auto'); + config.module.rule('js').include.add(resolvePackageIndex('context/src')); + config.module.rule('js').include.add(resolvePackageIndex('core/src')); + config.module.rule('js').include.add(resolvePackageIndex('designer/src')); + config.module.rule('js').include.add(resolvePackageIndex('helpers/src')); + config.module.rule('js').include.add(resolvePackageIndex('sandbox/src')); + config.module.rule('js').include.add(resolvePackageIndex('setting-form/src')); + config.module.rule('js').include.add(resolvePackageIndex('ui/src')); + return config; + }, +}; diff --git a/apps/playground/config/local.netease.com-key.pem b/apps/playground/config/local.netease.com-key.pem new file mode 100644 index 0000000..6a8e358 --- /dev/null +++ b/apps/playground/config/local.netease.com-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC4sAqDE3nhtSWD +YqV4mlglnzIs2AioZr2uxfj/OKrpE1ZML/dflJyc5NGUpOZWV+W1vRc70wWVNFxB +Si8nrYrrseoID7Ehxxe6+J1m/JsEbhZWHwV3M1iGW7JD7VhujaDpSLg67wMTMpSW +3BUS+0NT+MNfCisp+u/ls4fXPCTgXiWcjMULm95oLlTeYwurPHfxwn9f9hh85I5I +K3dI7w8MsQN7EFNrJz3UfrNLpmARMtSUBMwBYqrCitoUxRT0q7KYCru7kHxGPB6A +SQrFpSpOWT79vp8GBSp9g3axhRsK+aEgzQ0QGrFPHBwBP/kWgmdB1URc/K7STSC9 +xyMNZOM7AgMBAAECggEATbyDYDKVbaRymr+tyHqmuYctdmSkGEXOdz8LFFoEzj/+ +ZekWpVuHJB7H/FoAPb2XiYyCuAKVafz1C+IuwPOx8o0bZbM9KmuDmIZGsm+GzDGO +I0fBZC/vhfYYrbC8NSRV43thWCT8VVtH4cvW7vtllnWxvlIoYu4lhbiwZ68AEpO1 +8PlJsOhnagfkFpG8LehSDs9if5L+Ig0geQEcUY3pGUM9LKYsRoxFv6Vh8wQku1XD +YOxLvLWDPqJ75m816t50RARe3e6eDJ+ukzDCoDjmLP8uhf1sk1FcL5aOgUNU3VOi +P6sIH5uzuD0MA3FXx2mItYLOc44r4uaFJZiRUMEXGQKBgQDCjUYblE4rh0nKFkqx +AhgfcRgpgLbP42OwFtD0u20RXdZAEJDRDQ43NdOgjFp2B50k75LBPIoFXYUZdzKj +l7S2FH5O9Cc6hEgZGI4hCiYd+nQVI1mxv820YnzZJN4oooxyL+B5RlnW5cDT7LJN +11Q5PRewkM+XpfbE3lKUjTNcDwKBgQDzBS+j8T9GJSzV2xgA+mpGHe1RjDq6yQtk +Rl5GWpflW4Nr3/58BbmCWNA8WP0NOWutJhrkltwLCqJC8OZX/WHnmcmq2k+UAfQQ +z98p+xcMWOTcl5XIbveuhYoZb2udt9WVJLcpRVxVhEWcBrtHsrpScZXsKYf/TaZ1 +JtCjPU5KFQKBgGXj/UqmYkYzxXZ8NEP998pHvcLGsXew/F2VpXv2yQlmXrYQtvd1 +YfOSUjJsL1hPZoKYogBoB1UGBJYwsimxYyhVFU2eWwkvjF7wWEd/fDUJHVCQwgHw +lPga+I303BDmCK4o2uRI7vY4P8P92+gelPKhR03mmYIvnky+rvsz9CkLAoGAVerl +du6Z0jDecxUsnVvrKrL17jjHorXlYyRFvFXXEe2SvxbIIAzeEylXJZ7IiF5epS6t +n1d+oCC4UTZeGYmpjXofhFn+fHNcWH1FhtAQy/q5nwuwltY0luz7cBamU3Jk/n+m +id7N0CYdfhYbLDQSD4e822ureyV2zkBUzwGjpikCgYEAoCVbhkxVrQHRmxLC2jDx +pM94W1ij9TqblfGg3OMpPXjpTdlknatWjBw7JkoyxYiYJq5Gi2p4QV6HHUvS1osj +BB+4A99/PD9A0ICoJglz8SXlGe/895zwHwpKT9f0zjizQrEd2KCPf75URa+t2FGY +B2GkXsbChRWVrey5+uMzUD8= +-----END PRIVATE KEY----- diff --git a/apps/playground/config/local.netease.com.pem b/apps/playground/config/local.netease.com.pem new file mode 100644 index 0000000..276d72d --- /dev/null +++ b/apps/playground/config/local.netease.com.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEQjCCAqqgAwIBAgIRAIeLJ2jwt4MSKycHFmFXL6YwDQYJKoZIhvcNAQELBQAw +fTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSkwJwYDVQQLDCB3d3N1 +bkBzdW4tbWJwLmxvY2FsIChTVU4gV2Vpd2VpKTEwMC4GA1UEAwwnbWtjZXJ0IHd3 +c3VuQHN1bi1tYnAubG9jYWwgKFNVTiBXZWl3ZWkpMB4XDTIyMDcyODAxNTIxMFoX +DTI0MTAyODAxNTIxMFowVDEnMCUGA1UEChMebWtjZXJ0IGRldmVsb3BtZW50IGNl +cnRpZmljYXRlMSkwJwYDVQQLDCB3d3N1bkBzdW4tbWJwLmxvY2FsIChTVU4gV2Vp +d2VpKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALiwCoMTeeG1JYNi +pXiaWCWfMizYCKhmva7F+P84qukTVkwv91+UnJzk0ZSk5lZX5bW9FzvTBZU0XEFK +Lyetiuux6ggPsSHHF7r4nWb8mwRuFlYfBXczWIZbskPtWG6NoOlIuDrvAxMylJbc +FRL7Q1P4w18KKyn67+Wzh9c8JOBeJZyMxQub3mguVN5jC6s8d/HCf1/2GHzkjkgr +d0jvDwyxA3sQU2snPdR+s0umYBEy1JQEzAFiqsKK2hTFFPSrspgKu7uQfEY8HoBJ +CsWlKk5ZPv2+nwYFKn2DdrGFGwr5oSDNDRAasU8cHAE/+RaCZ0HVRFz8rtJNIL3H +Iw1k4zsCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUF +BwMBMB8GA1UdIwQYMBaAFDILZR+SW32Ug0HkAKrH1KT2a1ttMBwGA1UdEQQVMBOC +EWxvY2FsLm5ldGVhc2UuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQCEdeV2Likl4MUt +wWeN/X3tAR3L7mkl7e4f0CQ4v2lOs8cekOP7p3ZFk5nSyVbxda3usPB0OtbVTibw +qZ1n/TMRb5epHroXIMleqngP82zFZNg+WVyHm/ZAml8gVD0VZjYM1Tb+U9+SrgGw +lvZndbuUXa3h/d0irPH90KsdEeAR1SqwzAzvLO2JgvBuimHRceQWcTiiGWDZOyii +tux4U+pEzh0Dia40uFozFAoYZPDUpZ+gsiQ3MR3HOrAu2OR0a+CfelDXZNLR3C4z +cBKr53ajAbHstnpxKJh9IfeKph44PrbDo6HMe1XPprl7idoEesX3Ma3SBgm4lmId +cfEOUWNIYOgtOT5bflXNNyzXOgYVjpLnjwg4EOASO/XIjhvqdjIyCu7HJMIcZ9oo +Aob2exeluv5LVwic1UJQDl2McDBIgJ8R32oEN4skCKIBSbWlxWyjnxL5I5WkJF4y +vlSx8bKAjVr8map0C3rWISuZdgheJkF96qjwhVSxOv++p6srq6M= +-----END CERTIFICATE----- diff --git a/apps/playground/package.json b/apps/playground/package.json new file mode 100644 index 0000000..6bd745f --- /dev/null +++ b/apps/playground/package.json @@ -0,0 +1,26 @@ +{ + "name": "playground", + "version": "0.0.0", + "private": true, + "description": "playground of tango-apps", + "license": "MIT", + "author": "wwsun ", + "files": [ + "lib" + ], + "scripts": { + "build": "COMPRESS=none umi build", + "start": "HTTPS=1 umi dev" + }, + "dependencies": { + "@ant-design/icons": "^4.8.0", + "@music163/antd": "^0.1.1", + "@music163/tango-designer": "*", + "@music163/tango-helpers": "*", + "antd": "^4.24.2", + "coral-system": "^1.0.5" + }, + "devDependencies": { + "umi": "^3.5.24" + } +} diff --git a/apps/playground/src/components/foo-setter.tsx b/apps/playground/src/components/foo-setter.tsx new file mode 100644 index 0000000..1393127 --- /dev/null +++ b/apps/playground/src/components/foo-setter.tsx @@ -0,0 +1,5 @@ +import React from 'react'; + +export function FooSetter({ value, ...rest }: any) { + return fooSetter: {value}; +} diff --git a/apps/playground/src/components/index.ts b/apps/playground/src/components/index.ts new file mode 100644 index 0000000..b01012f --- /dev/null +++ b/apps/playground/src/components/index.ts @@ -0,0 +1 @@ +export * from './foo-setter'; diff --git a/apps/playground/src/components/other-panel.tsx b/apps/playground/src/components/other-panel.tsx new file mode 100644 index 0000000..dd79810 --- /dev/null +++ b/apps/playground/src/components/other-panel.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Row, Switch } from 'antd'; +import { observer } from '@music163/tango-designer'; + +const OtherPanel = observer(({ autoRemove, setAutoRemove }: any) => { + const onChange = (checked: boolean) => { + setAutoRemove(checked); + }; + return ( + + + + + ); +}); + +export default OtherPanel; diff --git a/apps/playground/src/mock/project.ts b/apps/playground/src/mock/project.ts new file mode 100644 index 0000000..a51056b --- /dev/null +++ b/apps/playground/src/mock/project.ts @@ -0,0 +1,248 @@ +const packageJson = { + name: 'demo', + private: true, + dependencies: { + '@music163/antd': '^0.1.0', + '@music163/tango-boot': '^0.1.0', + react: '17.0.2', + 'react-dom': '17.0.2', + 'prop-types': '15.7.2', + tslib: '2.5.0', + }, +}; + +const tangoJson = { + packages: { + react: { + version: '17.0.2', + library: 'React', + type: 'dependency', + resources: ['https://unpkg.com/react@{{version}}/umd/react.development.js'], + }, + 'react-dom': { + version: '17.0.2', + library: 'ReactDOM', + type: 'dependency', + resources: ['https://unpkg.com/react-dom@{{version}}/umd/react-dom.development.js'], + }, + 'react-is': { + version: '16.13.1', + library: 'ReactIs', + type: 'dependency', + resources: ['https://unpkg.com/react-is@{{version}}/umd/react-is.production.min.js'], + }, + 'styled-components': { + version: '5.3.5', + library: 'styled', + type: 'dependency', + resources: ['https://unpkg.com/styled-components@{{version}}/dist/styled-components.min.js'], + }, + moment: { + version: '2.29.4', + library: 'moment', + type: 'dependency', + resources: ['https://unpkg.com/moment@{{version}}/moment.js'], + }, + '@music163/tango-boot': { + version: '0.1.2', + library: 'TangoBoot', + type: 'baseDependency', + // resources: ['https://unpkg.com/@music163/tango-boot@{{version}}/dist/boot.js'], + resources: ['http://localhost:9001/boot.js'], + description: '云音乐低代码运行时框架', + }, + '@music163/antd': { + version: '0.1.1', + library: 'TangoAntd', + type: 'baseDependency', + resources: [ + 'https://unpkg.com/@music163/antd@{{version}}/dist/index.js', + 'https://unpkg.com/antd@4.24.13/dist/antd.css', + ], + description: '云音乐低代码中后台应用基础物料', + designerResources: [ + 'https://unpkg.com/@music163/antd@{{version}}/dist/designer.js', + 'https://unpkg.com/antd@4.24.13/dist/antd.css', + ], + }, + }, +}; + +const appJson: any = { + pages: [ + { + path: '/', + name: '首页', + }, + ], +}; + +const routesCode = ` +import Index from "./pages/list"; + +const routes = [ + { + path: '/', + exact: true, + component: Index + }, +]; + +export default routes; +`; + +const storeIndexCode = ` +export { default as app } from './app'; +export { default as counter } from './counter'; +`; + +const entryCode = ` +import { runApp } from '@music163/tango-boot'; +import routes from './routes'; +import './services'; +import './stores'; +import './index.less'; + +runApp({ + boot: { + mountElement: document.querySelector('#root'), + qiankun: false, + }, + + router: { + type: 'browser', + config: routes, + }, +}); +`; + +const storeCounter = ` +import { defineStore } from '@music163/tango-boot'; + +const counter = defineStore({ + // state + num: 0, + + // action + increment: () => counter.num++, + + decrement: () => { + counter.num--; + }, +}, 'counter'); + +export default counter; +`; + +const viewHomeCode = ` +import React from "react"; +import { definePage } from "@music163/tango-boot"; +import { + Button, + Input +} from "@music163/antd"; +class App extends React.Component { + render() { + return ( +
+ + +
+ ); + } +} +export default definePage(App); +`; + +const storeApp = ` +import { defineStore } from '@music163/tango-boot'; + +export default defineStore({ + + title: 'hello world', + + array: [1, 2, 3], +}, 'app'); +`; + +const serviceCode = ` +import { defineServices } from '@music163/tango-boot'; + +export default defineServices({ + get: { + url: 'https://nei.hz.netease.com/api/apimock-v2/cc974ffbaa7a85c77f30e4ce67deb67f/api/getUserProfile', + formatter: res => res.data, + headers: { + 'Content-Type': 'application/json', + } + }, + list: { + url: 'https://nei.hz.netease.com/api/apimock-v2/c45109399a1d33d83e32a59984b25b00/anchor-list-normal', + }, + add: { + url: 'https://nei.hz.netease.com/api/apimock-v2/c45109399a1d33d83e32a59984b25b00/api/users', + method: 'post', + }, + update: { + url: 'https://nei.hz.netease.com/api/apimock-v2/c45109399a1d33d83e32a59984b25b00/api/users', + method: 'post', + }, + delete: { + url: 'https://nei.hz.netease.com/api/apimock-v2/c45109399a1d33d83e32a59984b25b00/api/users?id=1', + }, +}); +`; + +const lessCode = ` +body { + font-size: 12px; +} +`; + +const cssCode = ` +* { + margin: 0; + padding: 0; +} + +p { + color: red; +} +`; + +export const sampleFiles = [ + { filename: '/package.json', code: JSON.stringify(packageJson) }, + { filename: '/appJson.json', code: JSON.stringify(appJson) }, + { filename: '/tango.config.json', code: JSON.stringify(tangoJson) }, + { filename: '/README.md', code: '# readme' }, + { filename: '/src/index.less', code: lessCode }, + { filename: '/src/style.css', code: cssCode }, + { filename: '/src/index.js', code: entryCode }, + { filename: '/src/pages/list.js', code: viewHomeCode }, + { filename: '/src/routes.js', code: routesCode }, + { filename: '/src/stores/index.js', code: storeIndexCode }, + { filename: '/src/stores/app.js', code: storeApp }, + { filename: '/src/stores/counter.js', code: storeCounter }, + { filename: '/src/services/index.js', code: serviceCode }, +]; + +export const genDefaultPage = (index: number) => ({ + name: 'new-page', + code: ` + import React from 'react'; + import tango, { definePage } from '@music163/tango-boot'; + import { Layout, Page, Section } from '@music163/antd'; + + function App() { + return ( + + +
+
+
+ ) + } + + export default definePage(App); + `, +}); diff --git a/apps/playground/src/pages/document.ejs b/apps/playground/src/pages/document.ejs new file mode 100644 index 0000000..253f1f6 --- /dev/null +++ b/apps/playground/src/pages/document.ejs @@ -0,0 +1,21 @@ + + + + + + + Tango Playground + + +
+ + + + + + + + + + + diff --git a/apps/playground/src/pages/index.less b/apps/playground/src/pages/index.less new file mode 100644 index 0000000..ab451c6 --- /dev/null +++ b/apps/playground/src/pages/index.less @@ -0,0 +1,5 @@ +@import '~antd/es/style/themes/default.less'; +@import '~antd/dist/antd.less'; // 引入官方提供的 less 样式入口文件 + +@primary-color: #2f54eb; +@border-radius-base: 2px; diff --git a/apps/playground/src/pages/index.tsx b/apps/playground/src/pages/index.tsx new file mode 100644 index 0000000..9ad10bb --- /dev/null +++ b/apps/playground/src/pages/index.tsx @@ -0,0 +1,81 @@ +import React from 'react'; +import { + createEngine, + Designer, + DesignerPanel, + SidebarPanel, + SettingPanel, + ToolbarPanel, + WorkspacePanel, + ViewPanel, + CodeEditor, + Sandbox, + DndQuery, + ComponentsView, +} from '@music163/tango-designer'; +import { prototypes, menuData } from '@music163/antd/lib/esm/designer'; +import { Logo, ProjectDetail } from './share'; +import { sampleFiles } from '../mock/project'; +import './index.less'; + +/** + * 1. 如果要支持代码格式化,需要提前在 html 模板中引入 + * + * + */ + +// 2. 引擎初始化 +const engine = createEngine({ + entry: '/src/index.js', + files: sampleFiles, + componentPrototypes: prototypes, +}); + +const workspace = engine.workspace; + +// @ts-ignore +window.__workspace__ = workspace; + +const sandboxQuery = new DndQuery({ + context: 'iframe', +}); + +/** + * 3. 平台初始化 + * 默认使用 CodeSandbox https://local.netease.com:6006/ + * 如果使用 ViteSandbox https://local.netease.com:6006?moduleType=esm + */ +export default function App() { + return ( + + } + description={} + actions={ + + + + + } + > + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/apps/playground/src/pages/share.tsx b/apps/playground/src/pages/share.tsx new file mode 100644 index 0000000..d74eaff --- /dev/null +++ b/apps/playground/src/pages/share.tsx @@ -0,0 +1,326 @@ +import React from 'react'; +import { Box, Group } from 'coral-system'; +import { Avatar, Space, Switch } from 'antd'; +import { BranchesOutlined, MenuOutlined, QuestionCircleOutlined } from '@ant-design/icons'; +import { registerSetter } from '@music163/tango-designer'; +import type { ComponentPrototypeType } from '@music163/tango-helpers'; +import { FooSetter } from '../components'; + +// folder-name +// 物料列表定义 +const bizToggleButtonPrototype: ComponentPrototypeType = { + name: 'CtPcToggleButton', + exportType: 'defaultExport', + title: '示例业务组件', + icon: 'icon-tupian', + type: 'element', + docs: 'https://redstone.fn.netease.com/mt/fe-comp/w8bq8px7n5/toggle-button', + hasChildren: false, + props: [ + { + name: 'checked', + title: '是否选中', + setter: 'boolSetter', + defaultValue: false, + }, + { + name: 'children', + title: '文本', + setter: 'textSetter', + initValue: '按钮', + }, + ], + package: '@music/ct-pc-toggle-button', +}; + +const sampleBlockCode = ` +
+ + Go Console + , + , + ]} + /> +
+`; + +const SnippetSuccessResult: ComponentPrototypeType = { + name: 'SnippetSuccessResult', + title: '成功结果', + icon: 'icon-tupian', + type: 'snippet', + package: '@music/tango-cms', + initChildren: sampleBlockCode, + relatedImports: ['Section', 'Result', 'Button'], +}; + +const Snippet2ColumnLayout: ComponentPrototypeType = { + name: 'Snippet2ColumnLayout', + title: '两列布局', + icon: 'icon-columns', + type: 'snippet', + package: '@music/tango-cms', + initChildren: ` + + + + + `, + relatedImports: ['Columns', 'Column'], +}; + +const Snippet3ColumnLayout: ComponentPrototypeType = { + name: 'Snippet3ColumnLayout', + title: '三列布局', + icon: 'icon-column3', + type: 'snippet', + package: '@music/tango-cms', + initChildren: ` + + + + + + `, + relatedImports: ['Columns', 'Column'], +}; + +const SnippetButtonGroup: ComponentPrototypeType = { + name: 'SnippetButtonGroup', + title: '按钮组', + icon: 'icon-anniuzu', + type: 'snippet', + package: '@music/tango-cms', + initChildren: ` + + + + + `, + relatedImports: ['Space', 'Button'], +}; + +export const prototypes = { + CtPcToggleButton: bizToggleButtonPrototype, + SnippetSuccessResult, + Snippet2ColumnLayout, + Snippet3ColumnLayout, + SnippetButtonGroup, +}; + +// 注册自定义 setter +registerSetter({ + name: 'fooSetter', + component: FooSetter, +}); + +// 平台 Logo +export function Logo() { + return ( + + + + ); +} + +// 项目信息 +export function ProjectDetail() { + return ( + + + lc-online-test + + + feature/list + + + ); +} + +export function SidebarFooter() { + return ( + + + + + ); +} + +interface ActionsProps { + defaultChecked?: boolean; + // eslint-disable-next-line react/no-unused-prop-types + onChange?: (checked: boolean) => void; +} + +// 平台核心行动点 +export function Actions({ defaultChecked }: ActionsProps) { + return ( + + + + ); +} + +export const menuData: any = { + // 常用组件 + common: [ + { + title: '基本', + items: [ + 'Button', + 'ButtonGroup', + 'ActionList', + 'Action', + 'Image', + 'Text', + 'MultilineText', + 'Link', + 'Title', + 'Paragraph', + 'Icon', + ], + }, + { + title: '数据和逻辑', + items: ['When', 'DataProvider', 'Interval', 'Each'], + }, + { + title: '基础布局', + items: [ + 'Section', + 'Columns', + 'Box', + 'Divider', + 'Space', + 'Tabs', + 'Toolbar', + 'Modal', + 'Drawer', + 'SnippetButtonGroup', + 'Snippet2ColumnLayout', + 'Snippet3ColumnLayout', + 'SnippetSuccessResult', + ], + }, + { + title: '表单表格', + items: [ + 'XTable', + 'XEditableTable', + // 'Table', + 'XForm', + 'XFormItem', + 'XStepForms', + // 'SearchForm', + // 'Form', + // 'FormItem', + ], + }, + { + title: '常用图表', + items: [ + 'ChartContainer', + 'BarChart', + 'LineChart', + 'PieChart', + 'FunnelChart', + 'ScatterChart', + 'RadarChart', + 'WordCloud', + ], + }, + { + title: '导航', + items: [ + 'Breadcrumb', + 'Dropdown', + 'Menu', + // 'PageHeader', + 'Pagination', + 'Steps', + ], + }, + { + title: '数据录入', + items: [ + 'AutoComplete', + 'Cascader', + 'Checkbox', + 'CheckboxGroup', + 'DatePicker', + 'DateRangePicker', + 'WeekPicker', + 'MonthPicker', + 'YearPicker', + 'Input', + 'InputNumber', + 'InputKV', + 'Mentions', + 'Radio', + 'RadioGroup', + 'Rate', + 'Select', + 'Slider', + 'Switch', + 'Search', + 'TextArea', + 'TimePicker', + 'TimeRangePicker', + 'Transfer', + 'TreeSelect', + 'Upload', + 'NosUpload', + ], + }, + { + title: '数据展示', + items: [ + 'Avatar', + 'Badge', + 'RibbonBadge', + 'Calendar', + 'Card', + 'Carousel', + 'Collapse', + 'Comment', + 'Descriptions', + 'Empty', + 'Image', + 'List', + 'Popover', + 'Statistic', + 'Table', + 'Tag', + 'CheckableTag', + 'Skeleton', + 'SkeletonAvatar', + 'SkeletonButton', + 'SkeletonInput', + 'SkeletonImage', + 'SkeletonNode', + 'Spin', + 'Timeline', + 'Tooltip', + 'Tree', + ], + }, + { + title: '反馈', + items: [ + 'Alert', + 'Drawer', + // 'Message', + 'Modal', + 'Notification', + 'Popconfirm', + 'Progress', + 'Result', + ], + }, + ], +}; diff --git a/apps/playground/tsconfig.json b/apps/playground/tsconfig.json new file mode 100644 index 0000000..4082f16 --- /dev/null +++ b/apps/playground/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..200bbb6 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +/** + * BabelConfig for Jest + */ +module.exports = { + presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-react', '@babel/preset-typescript'], +}; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..240c494 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,195 @@ +/** + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/configuration + */ + +/** @type {import('jest').Config} */ +const config = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/q_/7k4h88k50pn0p6423z7smp9r0000gn/T/jest_dx", + + // Automatically clear mock calls, instances, contexts and results before every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: true, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + coverageDirectory: 'coverage', + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + // coverageProvider: "babel", + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // The default configuration for fake timers + // fakeTimers: { + // "enableGlobally": false + // }, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "mjs", + // "cjs", + // "jsx", + // "ts", + // "tsx", + // "json", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state before every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state and implementation before every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + testEnvironment: 'jsdom', + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)'], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jest-circus/runner", + + // A map from regular expressions to paths to transformers + // transform: undefined, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/", + // "\\.pnp\\.[^\\/]+$" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; + +module.exports = config; diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..fa75c68 --- /dev/null +++ b/lerna.json @@ -0,0 +1,12 @@ +{ + "$schema": "node_modules/lerna/schemas/lerna-schema.json", + "useWorkspaces": true, + "version": "independent", + "packages": ["packages/*"], + "npmClient": "yarn", + "command": { + "version": { + "message": "chore(release): publish" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..69b310a --- /dev/null +++ b/package.json @@ -0,0 +1,68 @@ +{ + "name": "tango-community", + "private": true, + "workspaces": [ + "packages/*", + "apps/*" + ], + "scripts": { + "start": "yarn workspace playground start", + "start:docs": "yarn workspace docs storybook", + "build": "lerna run build", + "test": "jest", + "test:watch": "jest --watch", + "eslint": "eslint packages/**/src/*.{ts,tsx}", + "publish": "lerna publish", + "ver": "lerna version --no-private", + "release": "yarn eslint && yarn build && yarn run ver && lerna publish from-git", + "release:beta": "yarn eslint && yarn build && yarn run ver && lerna publish from-package --dist-tag beta", + "up": "yarn upgrade-interactive --latest" + }, + "devDependencies": { + "@babel/preset-env": "^7.19.3", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@commitlint/cli": "^17.5.0", + "@commitlint/config-conventional": "^17.3.0", + "@types/jest": "^29.2.4", + "@types/lodash-es": "^4.17.8", + "@types/lodash.get": "^4.4.7", + "@types/lodash.isequal": "^4.5.6", + "@types/lodash.set": "^4.3.7", + "@types/react": "^18.2.7", + "@types/react-dom": "^18.2.4", + "@types/styled-components": "^5.1.25", + "@typescript-eslint/eslint-plugin": "^6.4.1", + "@typescript-eslint/parser": "^6.4.1", + "conventional-changelog-cli": "^2.2.2", + "copyfiles": "^2.4.1", + "eslint": "^8.40.0", + "eslint-config-ali": "^14.0.2", + "eslint-config-prettier": "^9.0.0", + "eslint-import-resolver-typescript": "^3.6.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "http-server": "^14.1.0", + "husky": "^8.0.1", + "jest": "^29.1.1", + "jest-environment-jsdom": "^29.1.1", + "lerna": "^6.6.1", + "less": "^4.1.2", + "less-loader": "^7.3.0", + "lint-staged": "^13.1.0", + "mini-css-extract-plugin": "^1.6.2", + "prettier": "^2.8.7", + "progress-bar-webpack-plugin": "^2.1.0", + "react": "^17.0.0", + "react-dom": "^17.0.0", + "styled-components": "^5.3.6", + "typedoc": "^0.24.7", + "typescript": "^5.0.4", + "webpack": "^4.46.0", + "webpack-cli": "^4.9.2" + }, + "resolutions": { + "@yarnpkg/parsers": "3.0.0-rc.48.1" + } +} diff --git a/packages/context/README.md b/packages/context/README.md new file mode 100644 index 0000000..ecb1495 --- /dev/null +++ b/packages/context/README.md @@ -0,0 +1,22 @@ +# tango-apps-context + +> React context of tango-apps core + +## Usage + +install + +```bash +yarn add @music/tango-apps-context +``` + +usage + +```jsx +import { observer, useWorkspace } from '@music/tango-apps-context'; + +export const SampleWidget = observer(() => { + const ws = useWorkspace(); + return
; +}); +``` diff --git a/packages/context/package.json b/packages/context/package.json new file mode 100644 index 0000000..cd00a0d --- /dev/null +++ b/packages/context/package.json @@ -0,0 +1,42 @@ +{ + "name": "@music163/tango-context", + "version": "0.1.1", + "description": "react context for tango-apps", + "keywords": [ + "react", + "hooks" + ], + "author": "wwsun ", + "homepage": "", + "license": "MIT", + "main": "lib/cjs/index.js", + "module": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "files": [ + "dist", + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/netease/tango.git" + }, + "scripts": { + "clean": "rimraf lib/", + "build": "yarn clean && yarn build:esm && yarn build:cjs", + "build:esm": "tsc --project tsconfig.prod.json --outDir lib/esm/ --module ES2020", + "build:cjs": "tsc --project tsconfig.prod.json --outDir lib/cjs/ --module CommonJS", + "prepublishOnly": "yarn build" + }, + "peerDependencies": { + "react": ">= 16.8.0" + }, + "dependencies": { + "@music163/tango-core": "^0.1.1", + "@music163/tango-helpers": "^0.1.1", + "mobx-react-lite": "4.0.2" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + } +} diff --git a/packages/context/src/context.ts b/packages/context/src/context.ts new file mode 100644 index 0000000..55c34b8 --- /dev/null +++ b/packages/context/src/context.ts @@ -0,0 +1,131 @@ +import type { Engine } from '@music163/tango-core'; +import { createContext } from '@music163/tango-helpers'; + +export interface ITangoEngineContext { + /** + * 低代码引擎 + */ + engine: Engine; +} + +const [TangoEngineProvider, useTangoEngine] = createContext({ + name: 'TangoEngineContext', +}); + +export { TangoEngineProvider }; + +export const useWorkspace = () => { + return useTangoEngine()?.engine.workspace; +}; + +export const useDesigner = () => { + return useTangoEngine()?.engine.designer; +}; + +const builtinHelpers = [ + { + title: 'setStoreValue', + key: '() => tango.setStoreValue("variableName", "variableValue")', + type: 'function', + }, + { + title: 'getStoreValue', + key: '() => tango.getStoreValue("variableName")', + type: 'function', + }, + { title: 'openModal', key: '() => tango.openModal("")', type: 'function' }, + { title: 'closeModal', key: '() => tango.closeModal("")', type: 'function' }, + { title: 'navigateTo', key: '() => tango.navigateTo("/")', type: 'function' }, + { title: 'showToast', key: '() => tango.showToast("hello")', type: 'function' }, + { title: 'formatDate', key: '() => tango.formatDate("2022-12-12")', type: 'function' }, + { title: 'formatNumber', key: '() => tango.formatDate(9999)', type: 'function' }, + { + title: 'copyToClipboard', + key: '() => tango.copyToClipboard("hello")', + type: 'function', + }, +]; + +export const useWorkspaceData = () => { + const workspace = useWorkspace(); + const modelVariables: any[] = []; // 绑定变量列表 + const storeActionVariables: any[] = []; // 模型中的所有 actions + const storeVariables: any[] = []; // 模型中的所有变量 + const serviceVariables: any[] = []; // 服务中的所有变量 + + workspace.listStoreModules?.().forEach((file) => { + const prefix = `stores.${file.name}`; + const states = file.states.map((item) => ({ + title: item.name, + key: `${prefix}.${item.name}`, + raw: item.code, + })); + const actions = file.actions.map((item) => ({ + title: item.name, + key: `${prefix}.${item.name}`, + type: 'function', + raw: item.code, + })); + + modelVariables.push({ + title: file.name, + key: prefix, + selectable: false, + children: states, + }); + + storeActionVariables.push({ + title: file.name, + key: prefix, + selectable: false, + children: actions, + }); + + storeVariables.push({ + title: file.name, + key: prefix, + selectable: false, + children: [...states, ...actions], + showAddChildIcon: true, + showRemoveIcon: true, + }); + }); + + Object.keys(workspace.serviceModule?.serviceFunctions || {}).forEach((key) => { + serviceVariables.push({ + title: key, + key: `services.${key}`, + type: 'function', + }); + }); + + // 路由选项列表 + const routeOptions = workspace.pages?.map((item) => ({ + label: `${item.name} (${item.path})`, + value: item.path, + })); + + return { + modelVariables: [buildVariableOptions('数据模型', 'stores', modelVariables)], + actionVariables: [ + buildVariableOptions('数据模型', 'stores', storeActionVariables), + buildVariableOptions('服务函数', 'services', serviceVariables), + buildVariableOptions('工具函数', 'helpers', builtinHelpers), + ], + storeVariables, + expressionVariables: [ + buildVariableOptions('数据模型', 'stores', storeVariables), + buildVariableOptions('服务函数', 'services', serviceVariables), + buildVariableOptions('工具函数', 'helpers', builtinHelpers), + ], + routeOptions, + }; +}; + +function buildVariableOptions(title: string, key: string, children: any[]) { + return { + key, + title, + children, + }; +} diff --git a/packages/context/src/index.ts b/packages/context/src/index.ts new file mode 100644 index 0000000..c7b7b48 --- /dev/null +++ b/packages/context/src/index.ts @@ -0,0 +1,2 @@ +export { observer } from 'mobx-react-lite'; +export * from './context'; diff --git a/packages/context/tsconfig.json b/packages/context/tsconfig.json new file mode 100644 index 0000000..4082f16 --- /dev/null +++ b/packages/context/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/context/tsconfig.prod.json b/packages/context/tsconfig.prod.json new file mode 100644 index 0000000..d84a5a3 --- /dev/null +++ b/packages/context/tsconfig.prod.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.prod.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src/**/*"] +} diff --git a/packages/core/README.md b/packages/core/README.md new file mode 100644 index 0000000..b53f682 --- /dev/null +++ b/packages/core/README.md @@ -0,0 +1,11 @@ +# `core` + +搭建引擎 + +## 如何使用 + +```js +import { createEngine } from '@music/tango-apps-core'; + +const engine = createEngine(); +``` diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 0000000..e79a2a5 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,41 @@ +{ + "name": "@music163/tango-core", + "version": "0.1.1", + "description": "tango core", + "author": "wwsun ", + "homepage": "", + "license": "MIT", + "main": "lib/cjs/index.js", + "module": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "files": [ + "dist", + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/netease/tango.git" + }, + "scripts": { + "clean": "rimraf lib/", + "build": "yarn clean && yarn build:esm && yarn build:cjs", + "build:esm": "tsc --project tsconfig.prod.json --outDir lib/esm/ --module ES2020", + "build:cjs": "tsc --project tsconfig.prod.json --outDir lib/cjs/ --module CommonJS", + "prepublishOnly": "yarn build" + }, + "dependencies": { + "@babel/generator": "^7.21.3", + "@babel/parser": "^7.21.3", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "@music163/tango-helpers": "^0.1.1", + "@types/babel__generator": "^7.6.4", + "@types/babel__traverse": "^7.18.3", + "mobx": "6.9.0", + "path-browserify": "^1.0.1" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + } +} diff --git a/packages/core/src/factory.ts b/packages/core/src/factory.ts new file mode 100644 index 0000000..da78f33 --- /dev/null +++ b/packages/core/src/factory.ts @@ -0,0 +1,83 @@ +import { ComponentPrototypeType } from '@music163/tango-helpers'; +import { Designer, Engine, SimulatorNameType, Workspace } from './models'; +import { FileItemType } from './types'; +import { IWorkspace } from './models/interfaces'; + +/** + * 这里提前实例化 workspace,先保证全局唯一 + * TIP: builtinWorkspace 暂时只是给老版的 sandbox 消费,其他场景不需要 + */ +export const builtinWorkspace = new Workspace(); + +type CreateEngineOptionsType = { + /** + * 自定义工作区 + */ + workspace?: IWorkspace; + /** + * 是否使用老版全局 workspace,目前仅 LegacySandbox 需要开启 + */ + useBuiltinWorkspace?: boolean; + /** + * 文件入口 + */ + entry?: string; + /** + * 初始化的文件列表 + */ + files?: FileItemType[]; + /** + * 组件的原型信息 + */ + componentPrototypes?: Record; + /** + * 默认的模拟器模式 + */ + defaultSimulatorMode?: SimulatorNameType; +}; + +/** + * Designer 实例化工厂函数 + * @param options + * @returns + */ +export function createEngine({ + workspace: workspaceProp, + useBuiltinWorkspace, + defaultSimulatorMode, + files, + entry, + componentPrototypes, +}: CreateEngineOptionsType) { + let workspace: IWorkspace = workspaceProp; + + if (!workspace) { + // 如果用户没有提供,则使用内置的初始化策略 + if (useBuiltinWorkspace) { + workspace = builtinWorkspace; + workspace.entry = entry; + if (files && files.length) { + workspace.addFiles(files); + } + if (componentPrototypes) { + workspace.setComponentPrototypes(componentPrototypes); + } + } else { + workspace = new Workspace({ + entry, + files, + prototypes: componentPrototypes, + }); + } + } + + const engine = new Engine({ + workspace: workspaceProp || (workspace as any), + designer: new Designer({ + workspace, + simulator: defaultSimulatorMode, + }), + }); + + return engine; +} diff --git a/packages/core/src/helpers/array.ts b/packages/core/src/helpers/array.ts new file mode 100644 index 0000000..8fb3a25 --- /dev/null +++ b/packages/core/src/helpers/array.ts @@ -0,0 +1,47 @@ +import { TangoViewNodeDataType } from '../types'; + +/** + * 合并变量数组 + * @param list + * @returns + */ +export function mergeVariableArray(...list: any[]) { + const ret: any[] = []; + for (const sub of list) { + if (Array.isArray(sub)) { + sub.forEach((item: any) => { + if (item && item.children && item.children.length) { + ret.push(item); + } + }); + } + } + return ret; +} + +/** + * 将输入值转换为 tree data 嵌套数组 + * @param list + */ +export function toTreeData(list: TangoViewNodeDataType[]) { + const map: Record = {}; + + list.forEach((item) => { + // 如果不存在,则初始化 + if (!map[item.id]) { + map[item.id] = { + ...item, + children: [], + }; + } + + // 是否找到父节点,找到则塞进去 + if (item.parentId && map[item.parentId]) { + map[item.parentId].children.push(map[item.id]); + } + }); + + // 保留根节点 + const ret = Object.values(map).filter((item) => !item.parentId); + return ret; +} diff --git a/packages/core/src/helpers/assert.ts b/packages/core/src/helpers/assert.ts new file mode 100644 index 0000000..67fa5da --- /dev/null +++ b/packages/core/src/helpers/assert.ts @@ -0,0 +1,22 @@ +const defineServiceHandlerNames = ['defineServices', 'createServices']; +const sfHandlerPattern = new RegExp(`^(${defineServiceHandlerNames.join('|')})$`); + +/** + * 判断给定的函数名是否是 defineServices + * @param name + * @returns + */ +export function isDefineService(name: string) { + return sfHandlerPattern.test(name); +} + +const defineStoreHandlerName = 'defineStore'; + +/** + * 判断给定的函数名是否是 defineStore + * @param name + * @returns + */ +export function isDefineStore(name: string) { + return defineStoreHandlerName === name; +} diff --git a/packages/core/src/helpers/ast/generate.ts b/packages/core/src/helpers/ast/generate.ts new file mode 100644 index 0000000..798eaab --- /dev/null +++ b/packages/core/src/helpers/ast/generate.ts @@ -0,0 +1,241 @@ +/** + * ast to code + */ +import generator, { GeneratorOptions } from '@babel/generator'; +import * as t from '@babel/types'; +import { logger } from '@music163/tango-helpers'; +import { formatCode } from '../string'; + +const defaultGeneratorOptions: GeneratorOptions = { + jsescOption: { minimal: true }, + retainLines: true, +}; + +/** + * 将 t.File 生成为代码 + * @param ast + * @param options + * @returns + */ +export function ast2code(ast: t.Node, options: GeneratorOptions = defaultGeneratorOptions) { + let code = generator(ast, { + ...options, + }).code; + code = formatCode(code); + return code; +} + +const bracketPattern = /^\(.+\)$/s; + +/** + * 是否被 () 包裹 + * + * @example ({ foo: 'foo' }) -> true + * @example { foo: 'foo' } -> false + * + * @param str 目标字符串 + */ +function isWrappingWithBrackets(str: string) { + return bracketPattern.test(str); +} + +/** + * 将表达式生成为块级代码 + * @param node + * @returns + */ +export function expression2code(node: t.Expression) { + const statement = t.expressionStatement(node); + let ret = ast2code(statement).trim(); + // 移除末尾的分号 + if (ret.endsWith(';')) { + ret = ret.slice(0, -1); + } + + const isWrappingExpression = t.isObjectExpression(node) || t.isFunctionExpression(node); + + if (isWrappingExpression && isWrappingWithBrackets(ret)) { + // 如果是对象,输出包含 ({}),则去掉首尾的括号 + ret = ret.slice(1, -1); + } + return ret; +} + +/** + * 获取成员表达式的调用名 + * @example Date.now() --> Date.now + * @param node + * @returns + */ +function getNameByMemberExpression(node: t.MemberExpression | t.JSXMemberExpression): string { + let objectName; + let propertyName; + + if (t.isIdentifier(node.object) || t.isJSXIdentifier(node.object)) { + objectName = node.object.name; + } + + if (t.isIdentifier(node.property) || t.isJSXIdentifier(node.property)) { + propertyName = node.property.name; + } + + if (t.isMemberExpression(node.object) || t.isJSXMemberExpression(node.object)) { + objectName = getNameByMemberExpression(node.object); + } + + if (t.isMemberExpression(node.property) || t.isJSXMemberExpression(node.property)) { + propertyName = getNameByMemberExpression(node.property); + } + + return `${objectName}.${propertyName}`; +} + +/** + * 将 的 jsxAttributeName 或 objectPropertyKey 转换为 js value + * @param node jsxAttributeName or objectPropertyKey + * @returns simple js value + */ +export function keyNode2value(node: t.Node) { + if (!node) { + logger.error('invalid property key', node); + return; + } + + let ret; + + switch (node.type) { + case 'Identifier': + case 'JSXIdentifier': + ret = node.name; + break; + case 'StringLiteral': + ret = `"${node.value}"`; + break; + case 'NumericLiteral': + ret = node.value; + break; + case 'MemberExpression': + ret = getNameByMemberExpression(node); + break; + case 'JSXMemberExpression': + ret = getNameByMemberExpression(node); + break; + default: + logger.error('unknown property key', node); + break; + } + + return ret; +} + +/** + * 将 t.Node 生成为字符串代码 + * @param node + * @returns + */ +export function node2code(node: t.Node) { + let ret = ''; + switch (node.type) { + case 'StringLiteral': + case 'NumericLiteral': + ret = node.extra.raw as string; + break; + case 'BooleanLiteral': + ret = `${node.value}`; + break; + case 'NullLiteral': + ret = 'null'; + break; + default: + ret = expression2code(node as t.Expression); + break; + } + return ret; +} + +/** + * 将 t.Node 生成为 js 值 + * @param node ast node + * @param hasExpressionWrapper 是否包裹表达式 + * @returns a plain javascript value + */ +export function node2value(node: t.Node, hasExpressionWrapper = true): any { + let ret; + switch (node.type) { + case 'StringLiteral': + case 'NumericLiteral': + case 'BooleanLiteral': { + ret = node.value; + break; + } + case 'NullLiteral': + ret = null; + break; + case 'Identifier': // {data} + case 'MemberExpression': // {this.props.data} + case 'OptionalMemberExpression': // {a?.b} + case 'UnaryExpression': // {!false} + case 'ArrowFunctionExpression': // {() => {}} + case 'TemplateLiteral': // {`hello ${text}`} + case 'ConditionalExpression': // {a ? 'foo' : 'bar'} + case 'LogicalExpression': // { a || b} + case 'BinaryExpression': // { a + b} + case 'TaggedTemplateExpression': // {css``} + case 'CallExpression': // {[1,2,3].map(fn)} + case 'JSXElement': // {hello} + case 'JSXFragment': // <> + ret = expression2code(node); + if (hasExpressionWrapper) { + ret = `{${ret}}`; + } + break; + case 'ObjectExpression': { + ret = node.properties.reduce((prev, propertyNode) => { + if (propertyNode.type === 'ObjectProperty') { + const key = keyNode2value(propertyNode.key); + const value = node2value(propertyNode.value, hasExpressionWrapper); + // key 可能是字符串,也可能是数字 + prev[key] = value; + } + // FIXME: property is a SpreadElement + return prev; + }, {}); + break; + } + case 'ArrayExpression': { + ret = node.elements.map((elementNode) => node2value(elementNode, hasExpressionWrapper)); + break; + } + default: + logger.error('unknown ast node:', node); + break; + } + return ret; +} + +/** + * jsx 属性值节点转为 js value + */ +export function jsxAttributeValueNode2value(node: t.Node): any { + // e.g. 此时没有 value node + if (!node) { + return true; + } + + let ret; + switch (node.type) { + case 'JSXExpressionContainer': + // + // + // + // + // + ret = jsxAttributeValueNode2value(node.expression); + break; + default: + ret = node2value(node); + break; + } + + return ret; +} diff --git a/packages/core/src/helpers/ast/index.ts b/packages/core/src/helpers/ast/index.ts new file mode 100644 index 0000000..53dab35 --- /dev/null +++ b/packages/core/src/helpers/ast/index.ts @@ -0,0 +1,3 @@ +export * from './generate'; +export * from './parse'; +export * from './traverse'; diff --git a/packages/core/src/helpers/ast/parse.ts b/packages/core/src/helpers/ast/parse.ts new file mode 100644 index 0000000..98909a0 --- /dev/null +++ b/packages/core/src/helpers/ast/parse.ts @@ -0,0 +1,283 @@ +/** + * code to ast + */ +import { parse, parseExpression, ParserOptions } from '@babel/parser'; +import * as t from '@babel/types'; +import { + logger, + isValidObjectString, + isVariableString, + getVariableContent, +} from '@music163/tango-helpers'; +import { isPlainObject } from '../object'; + +// @see https://babeljs.io/docs/en/babel-parser#pluginss +const babelParserConfig: ParserOptions = { + sourceType: 'module', + plugins: [ + 'jsx', + 'doExpressions', + 'objectRestSpread', + 'decorators-legacy', + 'classProperties', + 'asyncGenerators', + 'functionBind', + 'functionSent', + 'dynamicImport', + 'optionalChaining', + ], +}; + +/** + * 检测代码是否是合法的代码 + * @param code + * @returns true 为合法代码,false 为非法代码 + */ +export function isValidCode(code: string) { + try { + parse(code, babelParserConfig); + } catch (err) { + return false; + } + return true; +} + +/** + * 检测代码是否是合法的表达式代码 + * @param code + * @returns + */ +export function isValidExpressionCode(code: string) { + try { + parseExpression(code, babelParserConfig); + } catch (err) { + return false; + } + return true; +} + +/** + * 将源代码解析为一棵完整的 ast 树 t.File + * @param code + * @returns + */ +export function code2ast(code: string): t.File { + try { + return parse(code, babelParserConfig); + } catch (err) { + logger.error('[code2ast failed!]', err); + } +} + +/** + * 将代码片段解析为 ast 节点 + * @example + * @example { foo: 'foo' } + * @example [{ foo: 'bar' }] + * @example () => {} + * @param code 输入字符串 + * @returns + */ +export function code2expression(code: string) { + if (!code) { + return; + } + + if (code.endsWith(';')) { + code = code.slice(0, -1); + } + + let expNode; + try { + expNode = t.cloneNode(parseExpression(code, babelParserConfig), false, true); + } catch (err) { + console.error('invalid code', err); + expNode = t.identifier('undefined'); + } + return expNode; +} + +/** + * 表达式代码片段转为 ast 树 + * @param code + * @returns File + */ +export function expressionCode2ast(code: string) { + if (isVariableString(code)) { + code = getVariableContent(code); + } + const node = code2expression(code); + return t.file(t.program([t.blockStatement([t.expressionStatement(node)])])); +} + +/** + * 将 js 值解析为 t.Node + * @param value + * @returns + */ +export function value2node( + value: any, +): + | t.NullLiteral + | t.Identifier + | t.NumericLiteral + | t.StringLiteral + | t.BooleanLiteral + | t.Expression { + let ret; + switch (typeof value) { + case 'number': + ret = t.numericLiteral(value); + break; + case 'string': + if (isVariableString(value)) { + // 再检查是否是表达式容器,例如 {this.foo}, {1} + const innerString = getVariableContent(value); + ret = code2expression(innerString); + } else { + ret = t.stringLiteral(value); + } + break; + case 'boolean': + ret = t.booleanLiteral(value); + break; + case 'function': + ret = code2expression(String(value)) as t.ArrowFunctionExpression | t.FunctionExpression; + break; + case 'object': { + if (value === null) { + ret = t.nullLiteral(); + } else if (isPlainObject(value)) { + ret = object2node(value); + } else if (Array.isArray(value)) { + ret = t.arrayExpression(value.map((val) => value2node(val))); + } else { + ret = t.identifier('undefined'); + logger.error('value2node: not support value!', ret); + } + break; + } + case 'undefined': + ret = t.identifier('undefined'); + break; + default: { + logger.error(`value2node: unsupport value <${value}>`); + break; + } + } + return ret; +} + +/** + * 将 js 普通对象解析为 t.Node + */ +export function object2node( + obj: object, + getValueNode: (value: any, key?: string) => t.Expression = value2node, +) { + if (!isPlainObject(obj)) { + return value2node(obj); + } + return t.objectExpression( + Object.keys(obj).map((key) => { + const valNode = getValueNode(obj[key], key); + return t.objectProperty(t.identifier(key), valNode); + }), + ); +} + +export function code2jsxAttributeValueNode(code: string) { + return t.jsxExpressionContainer(code2expression(code)); +} + +export function value2jsxAttributeValueNode(value: any) { + let ret; + switch (typeof value) { + // FIXME: 重构这个逻辑,是不是统一当成 code 处理 + case 'string': { + if (value.length > 1) { + value = value.trim(); + } + if (isValidObjectString(value)) { + // 先检查是否是对象字符串 + ret = t.jsxExpressionContainer(code2expression(value)); + } else if (isVariableString(value)) { + // 再检查是否是表达式容器,例如 {this.foo}, {1} + const innerString = getVariableContent(value); + ret = t.jsxExpressionContainer(code2expression(innerString)); + } else { + ret = t.stringLiteral(value); + } + break; + } + default: + ret = t.jsxExpressionContainer(value2node(value)); + break; + } + return ret; +} + +export function value2jsxChildrenValueNode(value: any) { + let ret: t.JSXElement | t.JSXFragment | t.JSXExpressionContainer | t.JSXSpreadChild | t.JSXText; + switch (typeof value) { + case 'string': + if (isVariableString(value)) { + const innerString = getVariableContent(value); + ret = t.jsxExpressionContainer(code2expression(innerString)); + } else { + ret = t.jsxText(value); + } + break; + case 'number': + ret = t.jsxText(String(value)); + break; + case 'object': + // value 为 JSXElement[]的情况下直接return + return value as t.JSXElement[]; + default: + break; + } + return ret ? [ret] : []; +} + +/** + * 给定具体的 value 值,生成 JSXAttribute + * @param name 属性名 + * @param value 属性值代码 + * @returns + */ +export function makeJSXAttribute(name: string, value: any) { + return t.jsxAttribute(t.jsxIdentifier(name), value2jsxAttributeValueNode(value)); +} + +/** + * 给定具体的 value 代码,生成 JSXAttribute + * @param name 属性名 + * @param valueCode 属性值代码 + * @returns + */ +export function makeJSXAttributeByCode(name: string, valueCode: string) { + return t.jsxAttribute(t.jsxIdentifier(name), code2jsxAttributeValueNode(valueCode)); +} + +/** + * 生成 JSXElement + * @param name + * @param attributes + * @param children + * @param selfClosing + * @returns + */ +export function makeJSXElement( + name: string, + attributes: t.JSXAttribute[], + children: t.JSXElement['children'], + selfClosing: boolean, +) { + return t.jsxElement( + t.jsxOpeningElement(t.jsxIdentifier(name), attributes), + t.jsxClosingElement(t.jsxIdentifier(name)), + children ?? [], + selfClosing, + ); +} diff --git a/packages/core/src/helpers/ast/traverse.ts b/packages/core/src/helpers/ast/traverse.ts new file mode 100644 index 0000000..901388a --- /dev/null +++ b/packages/core/src/helpers/ast/traverse.ts @@ -0,0 +1,1262 @@ +/** + * 访问,遍历,修改 ast tree + */ + +import * as t from '@babel/types'; +import traverse, { TraverseOptions } from '@babel/traverse'; +import { + isFunction, + SLOT, + logger, + StringOrNumber, + Dict, + parseDndId, +} from '@music163/tango-helpers'; +import { + keyNode2value, + jsxAttributeValueNode2value, + node2value, + ast2code, + expression2code, + node2code, +} from './generate'; +import { + value2jsxAttributeValueNode, + value2jsxChildrenValueNode, + code2ast, + value2node, + makeJSXAttribute, + code2expression, + object2node, +} from './parse'; +import { upperCamelCase, isValidComponentName } from '../string'; +import { isDefineService, isDefineStore } from '../assert'; +import type { + RouteDataType, + StorePropertyType, + ClassPropertyNodeType, + TangoViewNodeDataType, + ImportDeclarationPayloadType, + ServiceFunctionPayloadType, + InsertChildPositionType, +} from '../../types'; +import { IdGenerator } from '../id-generator'; + +/** + * 将 Node 节点构造为一棵树,并执行树的遍历操作,此操作会修改原始的节点 + * @param node + * @param options + * @returns 返回完整的 File AST + */ +export function traverseExpressionNode(node: t.Expression, options: TraverseOptions) { + const file = t.file(t.program([t.blockStatement([t.expressionStatement(node)])])); + traverse(file, options); + return file; +} + +type JSXElementChildrenType = Array< + t.JSXElement | t.JSXText | t.JSXFragment | t.JSXExpressionContainer | t.JSXSpreadChild +>; + +/** + * 遍历 jsxElement 的 attributes 集合 + * @param node + * @param visitCallback + */ +function visitJSXElementAttributes( + node: t.JSXElement, + visitCallback: ( + name: StringOrNumber, + value: any, + node: t.JSXAttribute | JSXElementChildrenType, + ) => void, +) { + node.openingElement.attributes.forEach((attrNode) => { + if (isFunction(visitCallback) && attrNode.type === 'JSXAttribute') { + const name = keyNode2value(attrNode.name); + const value = jsxAttributeValueNode2value(attrNode.value); + visitCallback(name, value, attrNode); + } + }); + // TIP: 如果 children 节点为简单数据类型,则也作为属性值 + if (node.children.length === 1) { + const onlyChild = node.children[0]; + let nodeValue; + if (t.isJSXText(onlyChild)) { + nodeValue = onlyChild.value?.trim(); + } else if (t.isJSXExpressionContainer(onlyChild)) { + nodeValue = jsxAttributeValueNode2value(onlyChild); + } + if (nodeValue) { + visitCallback('children', nodeValue, node.children); + } + } +} + +/** + * 删除 jsxElement 的目标属性 + * @param node + * @param attrName + */ +function removeJSXElementAttributeByName(node: t.JSXElement, attrName: string) { + node.openingElement.attributes = node.openingElement.attributes.filter((attrNode) => { + if (t.isJSXAttribute(attrNode)) { + const name = keyNode2value(attrNode.name); + return name !== attrName; + } + return true; + }); +} + +/** + * 获取 jsx 节点的属性集 + * @param node + * @returns + */ +export function getJSXElementAttributes(node: t.JSXElement) { + const ret: Record = {}; + visitJSXElementAttributes(node, (name, value) => { + ret[name] = value; + }); + return ret; +} + +/** + * 获取 jsx 结点的子元素名字 + * @param node + * @returns + */ +export function getJSXElementChildrenNames(node: t.JSXElement) { + const names = new Set(); + traverseExpressionNode(node, { + JSXElement(path) { + const name = getJSXElementName(path.node); + + // invalid name + if (!name) { + return; + } + + // html tags, e.g. div, span... + if (name.toLowerCase() === name) { + return; + } + + const parts = name.split('.'); + + // 嵌套类型 Button.Group,只取父级 + if (parts.length) { + names.add(parts[0]); + } + }, + }); + return Array.from(names); +} + +/** + * 匹配名字叫 targetName 的组件 + * @param ast + * @param targetName + * @param callback + */ +function visitJSXElementByName( + ast: t.File | t.JSXElement, + targetName: string, + callback: (node: t.JSXElement) => void, +) { + const visitors: TraverseOptions = { + JSXElement(path) { + if (getJSXElementName(path.node) === targetName) { + callback(path.node); + } + }, + }; + switch (ast.type) { + case 'File': + traverse(ast, visitors); + break; + case 'JSXElement': + traverseExpressionNode(ast, visitors); + } +} + +/** + * 查询所有XFormItem的字段名 + * @param ast 当前文件AST + * @returns 所有 XFormItem 的字段名 + */ +export function queryXFormItemFields(ast: t.File | t.JSXElement) { + const fields: string[] = []; + visitJSXElementByName(ast, 'XFormItem', (node) => { + const attrs = getJSXElementAttributes(node); + if (attrs.name && !fields.includes(attrs.name)) { + fields.push(attrs.name); + } + }); + return fields; +} + +/** + * 根据 dnd id 判断是否是目标的 JSXElement + * @param node + * @param id + */ +function isJSXElementById(node: t.JSXElement, jsxElementNodeId: string) { + let isTargetJSXElement = false; + visitJSXElementAttributes(node, (name, value) => { + if (name === SLOT.dnd && value === jsxElementNodeId) { + isTargetJSXElement = true; + } + }); + return isTargetJSXElement; +} + +/** + * 在目标 jsx 元素中添加子元素 + * @param ast + * @param targetJSXElementNodeId + * @param newNode + * @returns + */ +export function appendChildToJSXElement( + ast: t.File, + targetJSXElementNodeId: string, + newNode: t.JSXElement, + position: InsertChildPositionType, +) { + traverse(ast, { + JSXElement(path) { + if (isJSXElementById(path.node, targetJSXElementNodeId)) { + // 强制变为非闭合标签 & 避免children添加失败 + if (path.node.openingElement.selfClosing) { + path.node.openingElement.selfClosing = false; + path.node.closingElement = t.jSXClosingElement(path.node.openingElement.name); + } + if (position === 'last') { + path.node.children.push(newNode); + } else { + path.node.children.unshift(newNode); + } + path.stop(); + } + }, + }); + return ast; +} + +/** + * 在目标 jsx 元素后添加兄弟节点 + * @param ast + * @param targetJSXElementNodeId + * @param newNode + */ +export function insertSiblingAfterJSXElement( + ast: t.File, + targetJSXElementNodeId: string, + newNode: t.JSXElement, +) { + traverse(ast, { + JSXElement(path) { + if (isJSXElementById(path.node, targetJSXElementNodeId)) { + if (path.parentPath.isJSXElement()) { + path.insertAfter(newNode); + } else if (path.parentPath.isJSXExpressionContainer()) { + const fragmentNode = t.jsxFragment(t.jsxOpeningFragment(), t.jsxClosingFragment(), [ + t.cloneDeepWithoutLoc(path.node), + newNode, + ]); + path.replaceWith(fragmentNode); + } + path.stop(); + } + }, + }); + return ast; +} + +/** + * 在目标 jsx 元素前添加兄弟节点 + * @param ast + * @param targetJSXElementNodeId + * @param newNode + * @returns + */ +export function insertSiblingBeforeJSXElement( + ast: t.File, + targetJSXElementNodeId: string, + newNode: t.JSXElement, +) { + traverse(ast, { + JSXElement(path) { + if (isJSXElementById(path.node, targetJSXElementNodeId)) { + path.insertBefore(newNode); + path.stop(); + } + }, + }); + return ast; +} + +/** + * 替换目标 jsx 元素为新的元素 + * @param ast + * @param targetJSXElementNodeId + * @param newNode + * @returns + */ +export function replaceJSXElement( + ast: t.File, + targetJSXElementNodeId: string, + newNode: t.JSXElement, +) { + traverse(ast, { + JSXElement(path) { + if (isJSXElementById(path.node, targetJSXElementNodeId)) { + path.replaceWith(newNode); + path.stop(); + } + }, + }); + return ast; +} + +/** + * 删除目标 jsx 元素 + * @param ast + * @param targetJSXElementNodeId + */ +export function removeJSXElement(ast: t.File, targetJSXElementNodeId: string) { + traverse(ast, { + JSXElement(path) { + if (isJSXElementById(path.node, targetJSXElementNodeId)) { + const { parentPath } = path; + const ancestorPath = path.parentPath.parentPath; + if (t.isJSXElement(parentPath.node)) { + path.remove(); + } else if (t.isJSXAttribute(ancestorPath.node)) { + // 如果祖先节点在 jsxAttribute 上,则删除该属性 + ancestorPath.remove(); + } else { + logger.error('removeJSXElement failed', path.node); + } + path.stop(); + } + }, + }); + return ast; +} + +/** + * 替换跟结点的子元素 + * @example 例如替换 `return (empty block)` 的子元素 + * @param ast + * @param nodes + */ +export function replaceRootJSXElementChildren(ast: t.File, nodes: t.JSXElement[]) { + traverse(ast, { + JSXElement(path) { + path.node.children = nodes; + path.stop(); + }, + }); + return ast; +} + +/** + * 新增 JSXElement 的属性节点 + * @param node + * @param name + * @param value + */ +function addJSXElementAttribute(node: t.JSXElement, name: string, value: any) { + if (name === 'children' && node.children) { + // jsx children 的情况 + node.children = value2jsxChildrenValueNode(value); + } else { + // basic attributes + const jsxAttributeNode = t.jsxAttribute( + t.jsxIdentifier(name), + value2jsxAttributeValueNode(value), + ); + node.openingElement.attributes.push(jsxAttributeNode); + } + return node; +} + +export function updateJSXElementAttribute(node: t.JSXElement, attrName: string, attrValue: any) { + const isUndefinedValue = attrValue === undefined; + let isExist = false; + + if (isUndefinedValue) { + // 清空该属性 + removeJSXElementAttributeByName(node, attrName); + } else { + // 更新该属性 + visitJSXElementAttributes(node, (name, prevValue, jsxAttributeNode) => { + if (name === attrName) { + isExist = true; + // @ts-ignore + if (t.isJSXAttribute(jsxAttributeNode)) { + jsxAttributeNode.value = value2jsxAttributeValueNode(attrValue); + } else if (name === 'children') { + node.children = value2jsxChildrenValueNode(attrValue); + } + } + }); + } + + if (!isExist && !isUndefinedValue) { + // 添加该属性 + addJSXElementAttribute(node, attrName, attrValue); + } + + return node; +} + +export function updateJSXAttributes(ast: t.File, nodeId: string, config: Record) { + traverse(ast, { + JSXElement(path) { + if (isJSXElementById(path.node, nodeId)) { + Object.keys(config).forEach((attrName) => { + updateJSXElementAttribute(path.node, attrName, config[attrName]); + }); + path.stop(); + } + }, + }); + return ast; +} + +/** + * 从 ast 中找到最后一次 import 的位置的序号 + */ +function getLastImportDeclarationIndex(node: t.Program) { + let lastImportIndex = 0; + node.body.forEach((item, index) => { + if (item.type === 'ImportDeclaration') { + lastImportIndex = index + 1; + } + }); + return lastImportIndex; +} + +/** + * 从 ast 中找到最后一次 export 的位置的序号 + */ +function getLastExportDeclarationIndex(node: t.Program) { + let lastExportIndex = 0; + node.body.forEach((item, index) => { + if (item.type === 'ExportNamedDeclaration') { + lastExportIndex = index + 1; + } + }); + return lastExportIndex; +} + +/** + * 生成新的 ImportDeclaration + * @param importedModule + * @param importedSourcePath + * @returns + */ +export function makeImportDeclaration(importedModule: ImportDeclarationPayloadType) { + const specifierNodes = + importedModule.specifiers?.map((localName) => + t.importSpecifier(t.identifier(localName), t.identifier(localName)), + ) || []; + + let defaultSpecifierNode: t.ImportDefaultSpecifier; + if (importedModule.defaultSpecifier) { + defaultSpecifierNode = t.importDefaultSpecifier(t.identifier(importedModule.defaultSpecifier)); + } + + const newSpecifierNodes = [defaultSpecifierNode, ...specifierNodes].filter((spec) => !!spec); + return t.importDeclaration(newSpecifierNodes, t.stringLiteral(importedModule.sourcePath)); +} + +function getImportDeclarationData(node: t.ImportDeclaration): ImportDeclarationPayloadType { + const sourcePath = node2value(node.source); + let defaultSpecifier; + const specifiers: string[] = []; + node.specifiers.forEach((specifier) => { + if (specifier.type === 'ImportDefaultSpecifier') { + defaultSpecifier = keyNode2value(specifier.local); + } else if (specifier.type === 'ImportSpecifier') { + specifiers.push(keyNode2value(specifier.local) as string); + } + }); + return { + defaultSpecifier, + specifiers, + sourcePath, + }; +} + +/** + * 添加新的导入语句 + * @param ast + * @param importedModule + * @param importedSourcePath + * @returns + */ +export function addImportDeclaration(ast: t.File, importedModule: ImportDeclarationPayloadType) { + traverse(ast, { + Program(path) { + const lastIndex = getLastImportDeclarationIndex(path.node); + const newImportDeclaration = makeImportDeclaration(importedModule); + path.node.body.splice(lastIndex, 0, newImportDeclaration); + path.stop(); + }, + }); + return ast; +} + +/** + * 更新已有的导入语句 + * @param ast + * @param importedModule + * @param importedSourcePath + * @returns + */ +export function updateImportDeclaration(ast: t.File, importedModule: ImportDeclarationPayloadType) { + traverse(ast, { + ImportDeclaration(path) { + const currentSourcePath = node2value(path.node.source); + if (currentSourcePath === importedModule.sourcePath) { + const newImportDeclaration = makeImportDeclaration(importedModule); + path.replaceWith(newImportDeclaration); + path.stop(); // 只修改匹配到的第一条 + } + }, + }); + return ast; +} + +/** + * 新增类属性 + * @param ast + * @param classPropertyNode + * @returns + */ +export function addClassProperty(ast: t.File, classPropertyNode: t.ClassProperty) { + traverse(ast, { + ClassBody(path) { + path.node.body.push(classPropertyNode); + path.stop(); + }, + }); + return ast; +} + +/** + * 更新类属性 + * @param ast + * @param targetPropertyName + * @param propertyValueNode + * @returns + */ +export function updateClassProperty( + ast: t.File, + targetPropertyName: string, + propertyValueNode: t.Expression, +) { + traverse(ast, { + ClassProperty(path) { + const name = keyNode2value(path.node.key); + if (name === targetPropertyName) { + path.node.value = propertyValueNode; + path.stop(); + } + }, + }); + return ast; +} + +/** + * 在 routes.js 中添加新的路由规则 + * @param ast + * @param pageName + * @returns + */ +export function addRouteToRouteFile(ast: t.File, routePath: string, importFilePath: string) { + if (/.jsx?$/.test(importFilePath)) { + importFilePath = importFilePath.split('.')[0]; + } + const component = upperCamelCase(routePath.split('/').join('-')); + traverse(ast, { + Program(path) { + const lastImportIndex = getLastImportDeclarationIndex(path.node); + path.node.body.splice( + lastImportIndex, + 0, + t.importDeclaration( + [t.importDefaultSpecifier(t.identifier(component))], + t.stringLiteral(importFilePath.replace('/src', '.')), + ), + ); + }, + ArrayExpression(path) { + const newNode = t.objectExpression([ + t.objectProperty(t.identifier('path'), t.stringLiteral(routePath)), + t.objectProperty(t.identifier('component'), t.identifier(component)), + // FIXME: tango/issues#144 https://g.hz.netease.com/tango/issues/-/issues/144 + t.objectProperty(t.identifier('exact'), t.booleanLiteral(true)), + ]); + path.node.elements.push(newNode); + }, + }); + return ast; +} + +/** + * 更新页面路由 + * @param ast + * @param oldRoutePath + * @param newRoutePath + * @returns + */ +export function updateRouteToRouteFile(ast: t.File, oldRoutePath: string, newRoutePath: string) { + traverse(ast, { + ObjectExpression(path) { + path.node.properties.forEach((prop) => { + if ( + t.isObjectProperty(prop) && + node2value(prop.key, false) === 'path' && + node2value(prop.value, false) === oldRoutePath + ) { + prop.value = t.stringLiteral(newRoutePath); + } + }); + }, + }); + return ast; +} + +export function removeRouteFromRouteFile(ast: t.File, routePath: string, importPath: string) { + traverse(ast, { + ArrayExpression(path) { + path.node.elements = path.node.elements.filter((element) => { + if (element.type === 'ObjectExpression') { + const properties = node2value(element); + if (properties.path === routePath) { + return false; + } + } + return true; + }); + }, + ImportDeclaration(path) { + const sourceValue = node2value(path.node.source); + if (sourceValue === importPath) { + path.remove(); + } + }, + }); + return ast; +} + +export function traverseRouteFile(ast: t.File) { + const routes: RouteDataType[] = []; + const importMap: Dict = {}; + + traverse(ast, { + ImportDeclaration(path) { + const { defaultSpecifier, sourcePath } = getImportDeclarationData(path.node); + if (defaultSpecifier) { + importMap[defaultSpecifier] = sourcePath; + } + }, + ObjectExpression(path) { + const { node } = path; + const route = node2value(node, false); + routes.push(route); + }, + }); + + routes.forEach((item) => { + if (item.component && importMap[item.component]) { + item.importPath = importMap[item.component]; + } + }); + + return routes; +} + +/** + * 在 stores/index.js 中添加新的store + * @param ast + * @param storeName + * @returns + */ +export function addStoreToEntryFile(ast: t.File, storeName: string) { + const filepath = `./${storeName}`; + const component = storeName; + traverse(ast, { + Program(path) { + const lastExportIndex = getLastExportDeclarationIndex(path.node); + path.node.body.splice( + lastExportIndex, + 0, + t.exportNamedDeclaration( + null, + [t.exportSpecifier(t.identifier('default'), t.identifier(component))], + t.stringLiteral(filepath), + ), + ); + }, + }); + return ast; +} + +/** + * 在 stores/index.js 中移除一行导出语句 + * @example export { default as app } from "./app"; + * @param ast + * @param storeName + * @returns + */ +export function removeStoreToEntryFile(ast: t.File, storeName: string) { + traverse(ast, { + ExportNamedDeclaration(path) { + const name = keyNode2value(path.node.specifiers?.[0].exported); + if (name === storeName) { + path.remove(); + path.stop(); + } + }, + }); + return ast; +} + +export function traverseStoreEntryFile(ast: t.File) { + const stores: string[] = []; + + traverse(ast, { + ExportSpecifier(path) { + const name = keyNode2value(path.node.exported) as string; + stores.push(name); + }, + }); + + return stores; +} + +export function addStoreState(ast: t.File, stateName: string, initValue: string) { + traverse(ast, { + CallExpression(path) { + const { node } = path; + const calleeName = keyNode2value(node.callee) as string; + if ( + isDefineStore(calleeName) && + node.arguments.length && + t.isObjectExpression(node.arguments[0]) + ) { + node.arguments[0].properties.push( + t.objectProperty(t.identifier(stateName), code2expression(initValue)), + ); + path.stop(); + } + }, + }); + return ast; +} + +export function removeStoreState(ast: t.File, stateName: string) { + traverse(ast, { + CallExpression(path) { + const { node } = path; + const calleeName = keyNode2value(node.callee) as string; + if ( + isDefineStore(calleeName) && + node.arguments.length && + t.isObjectExpression(node.arguments[0]) + ) { + let { properties } = node.arguments[0]; + properties = properties.filter((prop) => { + if (prop.type === 'SpreadElement') { + return true; + } + const propName = keyNode2value(prop.key); + return propName !== stateName; + }); + node.arguments[0].properties = properties; + } + }, + }); + return ast; +} + +export function updateStoreState(ast: t.File, stateName: string, code: string) { + traverse(ast, { + CallExpression(path) { + const { node } = path; + const calleeName = keyNode2value(node.callee) as string; + if ( + isDefineStore(calleeName) && + node.arguments.length && + t.isObjectExpression(node.arguments[0]) + ) { + const { properties } = node.arguments[0]; + for (const prop of properties) { + if (prop.type === 'SpreadElement') { + continue; + } + + const propName = keyNode2value(prop.key); + if (propName === stateName) { + // TIP: 仅支持对象属性,方法必须需要写为箭头函数 + if (prop.type === 'ObjectProperty') { + prop.value = code2expression(code); + break; + } + } + } + } + }, + }); + return ast; +} + +export function traverseStoreFile(ast: t.File) { + let namespace: string; + const actions: StorePropertyType[] = []; + const states: StorePropertyType[] = []; + + traverse(ast, { + CallExpression(path) { + const { node } = path; + const calleeName = keyNode2value(node.callee) as string; + if ( + isDefineStore(calleeName) && + node.arguments.length && + t.isObjectExpression(node.arguments[0]) + ) { + node.arguments[0].properties.forEach((item) => { + switch (item.type) { + case 'ObjectMethod': { + actions.push({ + name: keyNode2value(item.key) as string, + type: 'method', + }); + break; + } + case 'ObjectProperty': { + const name = keyNode2value(item.key) as string; + if (t.isArrowFunctionExpression(item.value)) { + actions.push({ + name, + type: 'method', + code: node2code(item.value), + }); + } else if (t.isFunctionExpression(item.value)) { + actions.push({ + name, + type: 'method', + code: node2code(item.value), + }); + } else { + states.push({ + name, + type: 'property', + code: node2code(item.value), + }); + } + break; + } + default: + } + }); + if (node.arguments[1]) { + namespace = node2value(node.arguments[1], false); + } + path.stop(); + } + }, + }); + return { + namespace, + states, + actions, + }; +} + +export function deleteServiceConfigFromServiceFile(ast: t.File, serviceFunctionName: string) { + traverse(ast, { + CallExpression(path) { + const calleeName = keyNode2value(path.node.callee) as string; + if (isDefineService(calleeName)) { + if (path.node.arguments.length) { + const configNode = path.node.arguments[0]; + if (t.isObjectExpression(configNode)) { + const index = configNode.properties.findIndex((property) => { + if (t.isObjectProperty(property)) { + return keyNode2value(property.key) === serviceFunctionName; + } + return false; + }); + configNode.properties.splice(index, 1); + } + } + path.stop(); + } + }, + }); + return ast; +} + +/** + * 将服务函数的配置参数转为 ast 节点 + * @param payload + * @returns + */ +export function serviceConfig2Node(payload: ServiceFunctionPayloadType) { + return object2node(payload, (value, key) => { + if (key === 'formatter' && value) { + return code2expression(value); + } + return value2node(value); + }); +} + +export function updateServiceConfigToServiceFile( + ast: t.File, + config: { [key: string]: ServiceFunctionPayloadType }, +) { + traverse(ast, { + CallExpression(path) { + const calleeName = keyNode2value(path.node.callee) as string; + if (isDefineService(calleeName) && path.node.arguments.length) { + const configNode = path.node.arguments[0]; + if (t.isObjectExpression(configNode)) { + const originConfig = node2value(configNode, false); + const newConfig = { + ...originConfig, + ...config, + }; + const propertiesNode = Object.keys(newConfig).reduce((properties, key) => { + const serviceConfig = newConfig[key]; + const property = t.objectProperty(t.identifier(key), serviceConfig2Node(serviceConfig)); + properties.push(property); + return properties; + }, []); + configNode.properties = propertiesNode; + } + path.stop(); + } + }, + }); + return ast; +} + +function visitObjectProperties( + node: t.ObjectExpression, + visitor: (propName: string, node: t.ObjectProperty) => void, +) { + for (const propNode of node.properties) { + if (t.isObjectProperty(propNode)) { + const propName = keyNode2value(propNode.key); + visitor?.(propName as string, propNode); + } + } +} + +export function updateBaseConfigToServiceFile(ast: t.File, configName: string, configValue: any) { + traverse(ast, { + CallExpression(path) { + const calleeName = keyNode2value(path.node.callee) as string; + if (isDefineService(calleeName)) { + switch (path.node.arguments.length) { + case 1: + path.node.arguments.push(value2node({ [configName]: configValue })); + break; + case 2: + const baseConfigNode = path.node.arguments[1]; + if (t.isObjectExpression(baseConfigNode)) { + let found = false; + visitObjectProperties(baseConfigNode, (propName, propNode) => { + if (propName === configName) { + found = true; + propNode.value = value2node(configValue); + } + }); + if (!found) { + baseConfigNode.properties.push( + t.objectProperty(t.identifier(configName), value2node(configValue)), + ); + } + } + break; + default: + break; + } + path.stop(); + } + }, + }); + return ast; +} + +export function traverseServiceFile(ast: t.File) { + let services; + const baseConfig: any = { + encryptFetch: false, + }; + traverse(ast, { + CallExpression(path) { + const calleeName = keyNode2value(path.node.callee) as string; + if (isDefineService(calleeName)) { + if (path.node.arguments.length) { + services = node2value(path.node.arguments[0], false); + if (path.node.arguments[1]) { + const config = node2value(path.node.arguments[1]); + baseConfig.encryptFetch = !!config.encryptFetch; + } + } + path.stop(); + } + }, + }); + return { + services, + baseConfig, + }; +} + +function getJSXElementName(node: t.JSXElement) { + return keyNode2value(node.openingElement.name) as string; +} + +/** + * 从 JSXElement 中移除追踪属性 + * @param node + * @returns + */ +function clearJSXElementTrackingData(node: t.JSXElement) { + const attributes = node.openingElement.attributes.filter((attrNode) => { + if (t.isJSXAttribute(attrNode)) { + const attrName = keyNode2value(attrNode.name); + if (attrName === SLOT.dnd) { + return false; + } + } + return true; + }); + node.openingElement.attributes = attributes; + return node; +} + +/** + * 从 JSXElement 中移除追踪属性 + * @param node + * @returns + */ +function removeTrackingDataFromNodeAst(node: t.JSXElement) { + traverseExpressionNode(node, { + JSXElement(path) { + clearJSXElementTrackingData(path.node); + }, + }); + return node; +} + +/** + * 从视图文件的 ast 中移除追踪代码 + * @param ast + * @warning TODO: 有 bug ,注释会重复生成,参考 https://github.com/babel/babel/issues/14549 + */ +function removeTrackingDataFromViewAst(ast: t.File) { + traverse(ast, { + JSXElement(path) { + clearJSXElementTrackingData(path.node); + }, + }); + return ast; +} + +/** + * 清除文件中的无效导入代码 + * @param ast + * @returns + */ +export function removeUnusedImportSpecifiers(ast: t.File) { + traverse(ast, { + ImportDeclaration(path) { + const sourceValue = path.node.source.value; + // e.g. import 'style.less'; import './index.css' + if (!path.node.specifiers.length && /\.(css|less|scss|js)$/.test(sourceValue)) { + return; + } + + // e.g. import {} from 'pkg'; + if (!path.node.specifiers.length) { + path.remove(); + return; + } + + const specifiers = path.node.specifiers.filter((specifier) => { + const name = keyNode2value(specifier.local) as string; + const binding = path.scope.getBinding(name); + return binding?.referenced; + }); + + if (!specifiers.length) { + path.remove(); + } else if (specifiers.length !== path.node.specifiers.length) { + path.node.specifiers = specifiers; + } + }, + }); + return ast; +} + +/** + * 克隆一个全新的 JSXElement 节点 + * @param node + * @returns + */ +export function cloneJSXElementWithoutTrackingData(node: t.JSXElement) { + let cloned = t.cloneNode(node, true, true); + cloned = removeTrackingDataFromNodeAst(cloned); + return cloned; +} + +export function traverseViewFile(ast: t.File, idGenerator: IdGenerator) { + const importedModules: Dict = {}; + const classProperties: Dict = {}; + let stateProperties: string[] = []; + let stateCode = ''; + const nodes: Array> = []; + const cloneAst = t.cloneNode(ast, true, true); + const cleanAst = removeTrackingDataFromViewAst(cloneAst); + const variables: string[] = []; // 使用的 tango 变量 + + traverse(ast, { + ImportDeclaration(path) { + const declarationData = getImportDeclarationData(path.node); + const exist = importedModules[declarationData.sourcePath]; + if (!exist) { + importedModules[declarationData.sourcePath] = declarationData; + } else { + importedModules[declarationData.sourcePath] = Array.isArray(exist) + ? exist.concat([declarationData]) + : [exist, declarationData]; + } + }, + + MemberExpression(path) { + const variable = node2value(path.node, false); + if ( + /^tango\.(stores|services)\./.test(variable) && + variable.split('.').length === 3 && + !variables.includes(variable) + ) { + variables.push(variable); + } + }, + + ClassProperty(path) { + const propName = keyNode2value(path.node.key) as string; + if (!propName) { + return; + } + + const reference = `this.${propName}`; + if (['defaultProps', 'propTypes', 'constructor'].includes(propName)) { + return; + } + + if (propName === 'state') { + stateProperties = Object.keys(node2value(path.node.value)); + stateCode = ast2code(path.node); + } else { + // TODO: 这里需要完善下,并不是所有的都是 arrowFunction + classProperties[reference] = { + reference, + propertyName: propName, + propertyBody: expression2code(path.node.value), + }; + } + }, + + JSXElement(path) { + const attributes = getJSXElementAttributes(path.node); + + // 获取组件的追踪属性 + const trackId = attributes[SLOT.dnd]; + + let { component, id } = parseDndId(trackId); + component = component || getJSXElementName(path.node); + idGenerator.setItem(component); + + if (!isValidComponentName(component)) { + return; + } + + // 如果没有 ID,生成组件的追踪 ID + if (!trackId) { + id = idGenerator.generateId(component); + } + + // 在组件属性中添加追踪标记 + if (!attributes[SLOT.dnd]) { + path.node.openingElement.attributes.unshift(makeJSXAttribute(SLOT.dnd, id)); + } + + // parentId 用于追溯上下游关系 + let parentId; + const parentNode = path.parentPath.node; + if (t.isJSXElement(parentNode)) { + const parentAttributes = getJSXElementAttributes(parentNode); + parentId = parentAttributes[SLOT.dnd]; + } + + nodes.push({ + id, + parentId, + component, + rawNode: path.node, + }); + }, + }); + + return { + ast, + cleanAst, + nodes, + stateCode, + classProperties, + stateProperties, + importedModules, + variables, + }; +} + +/** + * 更新视图文件中的 state 定义 + * @param ast + */ +export function updateStateCodeOfViewFile(ast: t.File, stateCode: string) { + const getValueNode = () => { + const ast = code2ast(stateCode); + const node = ast.program.body[0]; + // TODO: 这段逻辑需要重写,只需要变更右侧的表达式即可 + // TODO: 需要复用一下逻辑,和 module 里有重叠 + // e.g. "state = {\n visible: false\n};" --> {\n visible: false\n} + if (node.type === 'ExpressionStatement' && node.expression.type === 'AssignmentExpression') { + return node.expression.right; + } + return; + }; + + traverse(ast, { + ClassProperty(path) { + const propName = keyNode2value(path.node.key); + if (propName === 'state') { + path.node.value = getValueNode(); + path.stop(); + } + }, + }); + + return ast; +} diff --git a/packages/core/src/helpers/id-generator.ts b/packages/core/src/helpers/id-generator.ts new file mode 100644 index 0000000..8a434d0 --- /dev/null +++ b/packages/core/src/helpers/id-generator.ts @@ -0,0 +1,49 @@ +type IdGeneratorOptionsType = { prefix?: string }; +/** + * ID 生成器 + */ +export class IdGenerator { + /** + * ID 前缀 + */ + private readonly prefix: string; + /** + * 记录组件 ID 记录 + */ + private map = new Map(); + + constructor(options?: IdGeneratorOptionsType) { + this.prefix = options?.prefix ? encodeURIComponent(options.prefix) : undefined; + } + + /** + * 更新组件记录 + * @param component + */ + setItem(component: string, id?: string) { + if (this.map.has(component)) { + const record = this.map.get(component); + if (id && !record.includes(id)) { + record.push(id); + } + this.map.set(component, record); + } else { + this.map.set(component, []); + } + } + + /** + * 获取组件 ID + * @param component + * @returns + */ + generateId(component: string) { + const size = this.map.get(component)?.length + 1 || 1; + let id = `${component}:${size}`; + if (this.prefix) { + id = `${this.prefix}:${id}`; + } + this.setItem(component, id); + return id; + } +} diff --git a/packages/core/src/helpers/index.ts b/packages/core/src/helpers/index.ts new file mode 100644 index 0000000..3c45856 --- /dev/null +++ b/packages/core/src/helpers/index.ts @@ -0,0 +1,8 @@ +export * from './array'; +export * from './ast'; +export * from './assert'; +export * from './string'; +export * from './object'; +export * from './prototype'; +export * from './schema-helpers'; +export * from './id-generator'; diff --git a/packages/core/src/helpers/object.ts b/packages/core/src/helpers/object.ts new file mode 100644 index 0000000..20840bc --- /dev/null +++ b/packages/core/src/helpers/object.ts @@ -0,0 +1,103 @@ +import { ComponentPrototypeType } from '@music163/tango-helpers'; +import { ImportDeclarationPayloadType } from '../types'; + +/** + * 是否是简单的 js 对象 + * @param value + * @returns + * @see https://github.com/sindresorhus/is-plain-obj/blob/main/index.js + */ +export function isPlainObject(value: any) { + if (typeof value !== 'object' || value === null) { + return false; + } + + const prototype = Object.getPrototypeOf(value); + return ( + (prototype === null || + prototype === Object.prototype || + Object.getPrototypeOf(prototype) === null) && + !(Symbol.toStringTag in value) && + !(Symbol.iterator in value) + ); +} + +/** + * 拷贝对象 + * @param obj 原始对象 + * @param omitKeys 忽略掉 key 列表 + * @returns 返回拷贝后的对象 + */ +export function copyObject(obj: object, omitKeys: string[]) { + const ret = {}; + Object.keys(obj).forEach((key) => { + if (!omitKeys.includes(key)) { + ret[key] = obj[key]; + } + }); + return ret; +} + +/** + * 将对象的序列化字符串转为原始的 js 对象 + * @param str + * @param defaultValue + * @returns + */ +export function string2object(str: string, defaultValue?: any) { + // eslint-disable-next-line no-new-func + let ret = new Function(`return ${str}`); + ret = ret ? ret() : defaultValue; + return ret; +} + +/** + * 获得传入对象的类型 + * @param obj + * @returns + */ +export function typeOf(obj?: any) { + return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase(); +} + +/** + * 导入列表解析为导入声明对象 + * @param names + * @param nameMap + * @returns + */ +export function namesToImportDeclarations( + names: string[], + nameMap: Record, +) { + const map = {}; + names.forEach((name) => { + const mod = nameMap[name]; + if (mod) { + updateMod(map, mod.package, name, mod.isDefault, !map[mod.package]); + } + }); + return Object.keys(map).map((sourcePath) => ({ + sourcePath, + ...map[sourcePath], + })) as ImportDeclarationPayloadType[]; +} + +function updateMod( + map: any, + fromPackage: string, + specifier: string, + isDefault = false, + shouldInit = true, +) { + if (shouldInit) { + map[fromPackage] = {}; + } + if (isDefault) { + map[fromPackage].defaultSpecifier = specifier; + } else if (map[fromPackage].specifiers) { + map[fromPackage].specifiers.push(specifier); + } else { + map[fromPackage].specifiers = [specifier]; + } +} diff --git a/packages/core/src/helpers/prototype.ts b/packages/core/src/helpers/prototype.ts new file mode 100644 index 0000000..cae4fdf --- /dev/null +++ b/packages/core/src/helpers/prototype.ts @@ -0,0 +1,163 @@ +import { + ComponentPropType, + ComponentPrototypeType, + TangoSchemaTreeNodeType, + isNil, + isVariableString, + logger, + uuid, +} from '@music163/tango-helpers'; +import * as t from '@babel/types'; +import { getRelativePath, isFilepath } from './string'; +import type { ImportDeclarationPayloadType } from '../types'; +import { code2expression } from './ast'; + +/** + * 根据组件的 prototype 生成 ImportDeclarationPayload + */ +export function getImportDeclarationPayloadByPrototype( + prototype: ComponentPrototypeType, + relativeFilepath?: string, +): ImportDeclarationPayloadType { + let defaultSpecifier; + let specifiers; + + if (prototype.exportType === 'defaultExport') { + defaultSpecifier = prototype.name; + specifiers = prototype.relatedImports || []; + } else { + specifiers = [...(prototype.relatedImports || [])]; + if (prototype.type !== 'snippet') { + specifiers.push(prototype.name); + } + } + + let sourcePath = prototype.package; + if (relativeFilepath && isFilepath(sourcePath)) { + sourcePath = getRelativePath(relativeFilepath, sourcePath); + } + + return { + defaultSpecifier, + specifiers, + sourcePath, + }; +} + +/** + * 基于 key-value 生成 prop={value} 字符串 + * @param key + * @param value + * @returns + */ +function getPropKeyValuePair(item: ComponentPropType, generateValue: (...args: any[]) => string) { + const key = item.name; + + let value = item.initValue; + + if (!value && item.autoInitValue) { + value = generateValue(3); + } + + if (isNil(value)) { + return; + } + + switch (typeof value) { + case 'number': + case 'boolean': { + value = `{${value}}`; + break; + } + case 'object': { + // TIP: bugfix 如果 object 里有 jsx 或者 function 会失败 + try { + value = `{${JSON.stringify(value)}}`; + } catch (err) { + logger.error(err); + } + break; + } + case 'function': { + value = `{${(value as object).toString()}}`; + break; + } + case 'string': { + if (!isVariableString(value)) { + // 不是变量字符串 + value = `"${value}"`; + } else { + // 如果是变量字符串,无需处理 + } + break; + } + default: + break; + } + return `${key}=${value}`; +} + +/** + * prototype -> + * @param prototype + */ +export function prototype2code(prototype: ComponentPrototypeType) { + let code; + switch (prototype.type) { + case 'snippet': + code = prototype.initChildren || prototype.defaultChildren; + break; + default: { + const keys = + prototype.props?.reduce((acc, item) => { + const pair = getPropKeyValuePair(item, (fractionDigits: number) => + uuid(prototype.name, fractionDigits), + ); + return pair ? ` ${acc} ${pair}` : acc; + }, '') || ''; + + if (prototype.hasChildren) { + code = `<${prototype.name} ${keys}>${ + prototype.initChildren || prototype.defaultChildren || '' + }`; + } else { + code = `<${prototype.name} ${keys.trim()} />`; + } + break; + } + } + + return code; +} + +/** + * 基于 prototype 信息生成 t.JSXElement + * @example ButtonPrototype -> -> t.JSXElement + * @param code + */ +export function prototype2jsxElement(prototype: ComponentPrototypeType) { + const code = prototype2code(prototype); + return code2expression(code) as t.JSXElement; +} + +export function prototype2schemaNode(prototype: ComponentPrototypeType) { + const node: TangoSchemaTreeNodeType = { + id: uuid(`${prototype.name}:`), + component: prototype.name, + props: {}, + }; + prototype.props.forEach((prop) => { + if ('initValue' in prop) { + node.props[prop.name] = prop.initValue; + } + }); + if (prototype.initChildren) { + try { + const children = JSON.parse(prototype.initChildren); + node.children = children; + } catch (err) { + // do nothing + } + } + return node; +} diff --git a/packages/core/src/helpers/schema-helpers.ts b/packages/core/src/helpers/schema-helpers.ts new file mode 100644 index 0000000..8caff9f --- /dev/null +++ b/packages/core/src/helpers/schema-helpers.ts @@ -0,0 +1,39 @@ +import { parseDndId, uuid } from '@music163/tango-helpers'; + +// { id: 1, component, props: { id: 1 }, children: [ { id: 2, component } ] } +export function deepCloneNode(obj: any, component?: string): any { + function deepCloneObject() { + const target = {}; + for (const key in obj) { + if (Object.hasOwn(obj, key)) { + target[key] = deepCloneNode(obj[key], component); + } + } + return target; + } + + function deepCloneElementNode() { + const target: any = deepCloneObject(); + let name = component || target.component; + if (target.id) { + const dnd = parseDndId(target.id); + name = dnd.component || name; + } + target.id = uuid(`${name}:`); + return target; + } + + if (!obj || typeof obj !== 'object') { + return obj; + } + + if (Array.isArray(obj)) { + return obj.map((item) => deepCloneNode(item, component)); + } + + if (!obj.component) { + return deepCloneObject(); + } + + return deepCloneElementNode(); +} diff --git a/packages/core/src/helpers/string.ts b/packages/core/src/helpers/string.ts new file mode 100644 index 0000000..81a20a3 --- /dev/null +++ b/packages/core/src/helpers/string.ts @@ -0,0 +1,226 @@ +import path from 'path'; +import { value2node, expression2code } from './ast'; +import { FileType } from './../types'; + +/** + * 推断JS模块类型 + */ +export function inferFileType(filename: string): FileType { + // 增加 tangoConfigJson Module + if (/\/tango\.config\.json$/.test(filename)) { + return FileType.TangoConfigJson; + } + + if (/\/appJson\.json$/.test(filename)) { + return FileType.AppJson; + } + + if (/\/package\.json$/.test(filename)) { + return FileType.PackageJson; + } + + if (/\/routes\.js$/.test(filename)) { + return FileType.RouteModule; + } + + // 所有 pages 下的 js 文件均认为是有效的 viewModule + if (/\/pages\/.+\.jsx?$/.test(filename)) { + return FileType.JsxViewModule; + } + + // 所有 pages 下的 js 文件均认为是有效的 viewModule + if (/\/pages\/.+\.schema\.json?$/.test(filename)) { + return FileType.JsonViewModule; + } + + if (/\/services\/.+\.js$/.test(filename)) { + return FileType.ServiceModule; + } + + if (/service\.js$/.test(filename)) { + return FileType.ServiceModule; + } + + if (/\/stores\/index\.js$/.test(filename)) { + return FileType.StoreEntryModule; + } + + if (/\/stores\/.+\.js$/.test(filename)) { + return FileType.StoreModule; + } + + if (/\/blocks\/[\w-]+\/index\.js/.test(filename)) { + return FileType.BlockEntryModule; + } + + if (/\.jsx?$/.test(filename)) { + return FileType.Module; + } + + if (/\.json$/.test(filename)) { + return FileType.Json; + } + + if (/\.less$/.test(filename)) { + return FileType.Less; + } + + if (/\.scss$/.test(filename)) { + return FileType.Scss; + } + + return FileType.File; +} + +/** + * 判断组件名是否合法 + * @example Button -> valid + * @example div -> invalid + * @param name + * @returns + */ +export function isValidComponentName(name: string) { + if (!name) { + return false; + } + + const firstChar = name.charAt(0); + return firstChar === firstChar.toUpperCase(); +} + +/** + * 转为驼峰 + * @example foo -> foo + * @example foo-bar -> fooBar + * @param str + * @returns + */ +export function camelCase(str: string) { + return str.replace(/\W+(.)/g, (match, chr) => { + return chr.toUpperCase(); + }); +} + +/** + * 将输入字符串转换为大驼峰格式 + * @example about -> About + * @example not-found -> NotFound + * @param str + */ +export function upperCamelCase(str: string) { + const text = camelCase(str.toLowerCase()); + return text.charAt(0).toUpperCase() + text.slice(1); +} + +/** + * 从 filename 中解析获得 moduleName + * @example /stores/user.js -> user + * @example /services/foo-bar.js -> fooBar + * @param filename + */ +export function getModuleNameByFilename(filename: string) { + const parts = filename.split('/'); + let name = parts[parts.length - 1]; + name = name.split('.')[0]; + return camelCase(name); +} + +/** + * 基于路由名生成文件路径 + * @param routePath 路由地址 + * @param baseDir base dir + * @param ext 后缀名 + * @returns + */ +export function getFilepath(routePath: string, baseDir: string, ext = '') { + if (routePath.startsWith('/')) { + routePath = routePath.substring(1); + } + const filename = routePath.replaceAll('/:', '@').split('/').join('-'); + if (!baseDir.endsWith('/')) { + baseDir = `${baseDir}/`; + } + return `${baseDir}${filename}${ext}`; +} + +export function getPrivilegeCode(appName: string, routePath: string) { + return `${appName}@${routePath.replaceAll('/', '%')}`; +} + +const prettier = (window as any).prettier; +const prettierPlugins = (window as any).prettierPlugins; + +/** + * 格式化代码 + * @param code original source code + * @param parser prettier parser, see https://prettier.io/docs/en/options.html#parser + * @returns the formatted code + */ +export function formatCode(code: string, parser = 'babel') { + if (prettier && prettierPlugins) { + return prettier.format(code, { parser, plugins: prettierPlugins }); + } + return code; +} + +/** + * 将 js value 转换为代码字符串 + */ +export function value2code(value: any) { + const node = value2node(value); + const code = expression2code(node); + return code; +} + +/** + * 是否匹配路由 + * @example isPathnameMatchRoute('/user/123', '/users/:id') -> true + */ +export function isPathnameMatchRoute(pathname: string, route: string) { + if (!pathname) { + return false; + } + + pathname = pathname.split('?')[0]; + + if (pathname === route) { + return true; + } + + const str = route.replaceAll(/:\w+/gi, '\\w+'); + const pt = new RegExp(`^${str}$`, 'i'); + return pt.test(pathname); +} + +/** + * 根据文件路径计算区块的名字 + * @param filename 文件路径 + * @return 返回计算后的区块名(大驼峰) + */ +export function getBlockNameByFilename(filename: string) { + const name = filename.split('/').slice(-2, -1)[0]; + return upperCamelCase(name); +} + +/** + * FIXME: 有问题,需要优化下 + * 基于 from 文件的地址计算 to 文件的相对引用路径 + * @param from + * @param to + */ +export function getRelativePath(from: string, to: string) { + const fromFolder = path.dirname(from); + return path.relative(fromFolder, to); +} + +/** + * 判断给定字符串是否是文件路径 + * @example ./pages/index.js -- yes + * @example ../pages/index.js -- yes + * @example /src/pages/index.js -- yes + * @example @music163/tango-designer -- no + * @param str + */ +export function isFilepath(str: string) { + return /^(\.\.?\/|\/).*\.[a-z]+$/.test(str); +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 0000000..8fc741b --- /dev/null +++ b/packages/core/src/index.ts @@ -0,0 +1,4 @@ +export * from './models'; +export * from './factory'; +export * from './types'; +export * from './helpers'; diff --git a/packages/core/src/models/designer.ts b/packages/core/src/models/designer.ts new file mode 100644 index 0000000..605f78e --- /dev/null +++ b/packages/core/src/models/designer.ts @@ -0,0 +1,176 @@ +import { action, computed, makeObservable, observable, toJS } from 'mobx'; +import { IWorkspace } from './interfaces'; + +export type SimulatorNameType = 'desktop' | 'phone'; + +type SimulatorType = { + name: SimulatorNameType; + width: number; + height: number; +}; + +type ViewportBoundingType = { + width: number; + height: number; +}; + +export type DesignerViewType = 'design' | 'code'; + +type DesignerOptionsType = { workspace: IWorkspace; simulator?: SimulatorNameType | SimulatorType }; + +const simulatorTypes: Record = { + desktop: { + name: 'desktop', + width: 1366, + height: 800, + }, + phone: { + name: 'phone', + width: 375, + height: 812, + }, +}; + +export class Designer { + /** + * 当前的沙箱模拟器类型 + */ + _simulator: SimulatorType = simulatorTypes.desktop; + + /** + * 当前的视图尺寸 + */ + _viewport: ViewportBoundingType = { + width: 1366, + height: 800, + }; + + /** + * 当前激活的视图 + */ + _activeView: DesignerViewType = 'design'; + + /** + * 当前选中的侧边栏面板 + */ + _activeSidebarPanel = ''; + + /** + * 是否显示智能引导 + */ + _showSmartWizard = false; + + /** + * 是否显示右侧面板 + */ + _showRightPanel = true; + + /** + * 是否预览模式 + */ + _isPreview = false; + + private readonly workspace: IWorkspace; + + get simulator(): SimulatorType { + return toJS(this._simulator); + } + + get viewport() { + return toJS(this._viewport); + } + + get activeView() { + return this._activeView; + } + + get isPreview() { + return this._isPreview; + } + + get showSmartWizard() { + return this._showSmartWizard; + } + + get activeSidebarPanel() { + return this._activeSidebarPanel; + } + + get showRightPanel() { + return this._showRightPanel; + } + + constructor(options: DesignerOptionsType) { + this.workspace = options.workspace; + if (options.simulator) { + this.setSimulator(options.simulator); + } + makeObservable(this, { + _simulator: observable, + _viewport: observable, + _activeView: observable, + _activeSidebarPanel: observable, + _showSmartWizard: observable, + _showRightPanel: observable, + _isPreview: observable, + simulator: computed, + viewport: computed, + activeView: computed, + activeSidebarPanel: computed, + isPreview: computed, + showRightPanel: computed, + showSmartWizard: computed, + setSimulator: action, + setViewport: action, + setActiveView: action, + setActiveSidebarPanel: action, + closeSidebarPanel: action, + toggleRightPanel: action, + toggleSmartWizard: action, + toggleIsPreview: action, + }); + } + + setSimulator(value: SimulatorType | SimulatorNameType) { + if (typeof value === 'string') { + this._simulator = simulatorTypes[value]; + } else { + this._simulator = value; + } + } + + setViewport(value: ViewportBoundingType) { + this._viewport = value; + } + + setActiveView(view: DesignerViewType) { + this._activeView = view; + } + + setActiveSidebarPanel(panel: string) { + if (panel && panel !== this.activeSidebarPanel) { + this._activeSidebarPanel = panel; + } else { + this._activeSidebarPanel = ''; + } + } + + closeSidebarPanel() { + this._activeSidebarPanel = ''; + } + + toggleSmartWizard(value: boolean) { + this._showSmartWizard = value; + } + + toggleRightPanel(value?: boolean) { + this._showRightPanel = value ?? !this._showRightPanel; + } + + toggleIsPreview(value: boolean) { + this._isPreview = value ?? !this._isPreview; + if (value) { + this.workspace.selectSource.clear(); + } + } +} diff --git a/packages/core/src/models/drag-source.ts b/packages/core/src/models/drag-source.ts new file mode 100644 index 0000000..29373a5 --- /dev/null +++ b/packages/core/src/models/drag-source.ts @@ -0,0 +1,91 @@ +import { action, computed, makeObservable, observable } from 'mobx'; +import { ISelectedItemData } from '@music163/tango-helpers'; +import { DropTarget } from './drop-target'; +import { IWorkspace } from './interfaces'; + +/** + * 拖拽来源类,被拖拽的物体 + */ +export class DragSource { + /** + * 是否处于拖拽状态 + */ + isDragging: boolean; + + /** + * 选中的目标元素数据 + */ + data: ISelectedItemData; + + /** + * 放置目标 + */ + dropTarget: DropTarget; + + private readonly workspace: IWorkspace; + + get node() { + return this.workspace.getNode(this.data?.id, this.data?.filename); + } + + /** + * 获取对应的 prototype + */ + get prototype() { + return this.workspace.getPrototype(this.data?.name); + } + + get id() { + return this.data?.id; + } + + get name() { + return this.data?.name; + } + + get bounding() { + return this.data?.bounding; + } + + constructor(workspace: IWorkspace) { + this.workspace = workspace; + this.data = null; + this.isDragging = false; + this.dropTarget = new DropTarget(workspace); + + makeObservable(this, { + data: observable, + isDragging: observable, + set: action, + clear: action, + node: computed, + prototype: computed, + }); + } + + /** + * 更新选中数据 + * @param props + */ + set(data: ISelectedItemData) { + this.data = data; + this.isDragging = !!data; + } + + /** + * 重置 + */ + clear() { + this.data = null; + this.isDragging = false; + this.dropTarget.clear(); + } + + /** + * 获取对应的 node + * @deprecated + */ + getNode() { + return this.node; + } +} diff --git a/packages/core/src/models/drop-target.ts b/packages/core/src/models/drop-target.ts new file mode 100644 index 0000000..6f2083c --- /dev/null +++ b/packages/core/src/models/drop-target.ts @@ -0,0 +1,84 @@ +import { action, computed, makeObservable, observable } from 'mobx'; +import { ISelectedItemData } from '@music163/tango-helpers'; +import { IWorkspace } from './interfaces'; + +export enum DropMethod { + ReplaceNode = 'replaceNode', // 替换节点 + InsertBefore = 'insertBefore', // 插入节点,放置在前面 + InsertAfter = 'insertAfter', // 插入节点,放置在后面 + InsertChild = 'insertChild', // 插入子节点,放置在最后 + InsertFirstChild = 'insertFirstChild', // 插入子节点,放置在最前 +} + +/** + * 放置目标类 + */ +export class DropTarget { + /** + * 插入方法 + */ + method: DropMethod; + /** + * 放置的目标元素数据 + */ + data: ISelectedItemData; + + private readonly workspace: IWorkspace; + + get node() { + return this.workspace.getNode(this.data.id, this.data.filename); + } + + /** + * 获取对应的 prototype + */ + get prototype() { + return this.data?.name ? this.workspace.getPrototype(this.data?.name) : null; + } + + get id() { + return this.data?.id; + } + + get bounding() { + return this.data?.bounding; + } + + get display() { + return this.data?.display; + } + + constructor(workspace: IWorkspace) { + this.workspace = workspace; + this.method = DropMethod.InsertAfter; + this.data = null; + + makeObservable(this, { + method: observable, + data: observable, + set: action, + clear: action, + node: computed, + }); + } + + set(data: ISelectedItemData, method: DropMethod) { + this.data = data; + this.method = method; + } + + /** + * 重置 + */ + clear() { + this.data = null; + } + + /** + * 获取对应的 node + * @deprecated + */ + getNode() { + return this.node; + } +} diff --git a/packages/core/src/models/engine.ts b/packages/core/src/models/engine.ts new file mode 100644 index 0000000..0db4bde --- /dev/null +++ b/packages/core/src/models/engine.ts @@ -0,0 +1,21 @@ +import { Designer } from './designer'; +import { IWorkspace } from './interfaces'; + +/** + * 设计器引擎 + */ +export class Engine { + /** + * 工作区状态 + */ + workspace: IWorkspace; + /** + * 设计器状态 + */ + designer: Designer; + + constructor(options: Pick) { + this.workspace = options.workspace; + this.designer = options.designer; + } +} diff --git a/packages/core/src/models/file.ts b/packages/core/src/models/file.ts new file mode 100644 index 0000000..c3767a4 --- /dev/null +++ b/packages/core/src/models/file.ts @@ -0,0 +1,193 @@ +import { action, computed, makeObservable, observable, toJS } from 'mobx'; +import { getValue, isNil, logger, setValue } from '@music163/tango-helpers'; +import type { FileType, ModulePropsType } from '../types'; +import { formatCode } from '../helpers'; +import { IWorkspace } from './interfaces'; + +/** + * 普通文件,不进行 AST 解析 + */ +export class TangoFile { + readonly workspace: IWorkspace; + /** + * 文件名 + */ + readonly filename: string; + + /** + * 文件类型 + */ + readonly type: FileType; + + /** + * 最近修改的时间戳 + */ + lastModified: number; + + _code: string; + _cleanCode: string; + + get code() { + return this._code; + } + + get cleanCode() { + return this._cleanCode; + } + + constructor(workspace: IWorkspace, props: ModulePropsType, isSyncCode = true) { + this.workspace = workspace; + this.filename = props.filename; + this.type = props.type; + this.lastModified = Date.now(); + + // 这里主要是为了解决 umi ts 编译错误的问题,@see https://github.com/umijs/umi/issues/7594 + if (isSyncCode) { + this.update(props.code); + } + } + + /** + * 更新文件内容 + */ + update(code?: string) { + if (!isNil(code)) { + this.lastModified = Date.now(); + this._code = code; + this._cleanCode = code; + } + } +} + +export class TangoLessFile extends TangoFile { + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.update(props.code); + makeObservable(this, { + _code: observable, + _cleanCode: observable, + code: computed, + cleanCode: computed, + update: action, + }); + } +} + +export class TangoJsonFile extends TangoFile { + _object = {}; + + /** + * @deprecated 使用 file.json 代替 + */ + get object() { + return toJS(this._object); + } + + get json() { + return toJS(this._object); + } + + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.update(props.code); + makeObservable(this, { + _code: observable, + _cleanCode: observable, + _object: observable, + code: computed, + cleanCode: computed, + object: computed, + json: computed, + update: action, + setValue: action, + }); + } + + update(code?: string) { + this.lastModified = Date.now(); + + if (isNil(code)) { + // 基于最新的 json 同步代码 + let code = JSON.stringify(this._object); + try { + code = formatCode(code, 'json'); + } catch (err) { + logger.error(err); + return; + } + this._code = code; + this._cleanCode = code; + } else { + try { + // 基于传入的代码,同步 json 对象 + code = formatCode(code, 'json'); + } catch (err) { + logger.error(err); + return; + } + this._code = code; + this._cleanCode = code; + try { + const json = JSON.parse(code); + this._object = json; + } catch (err) { + logger.error(err); + } + } + } + + /** + * 根据路径取值 + * @param valuePath + * @returns + */ + getValue(valuePath: string) { + return getValue(this.json, valuePath); + } + + /** + * 根据路径设置值 + * @param valuePath + * @param visitor + */ + setValue(valuePath: string, visitor: (targetValue: any) => any) { + const target = this.getValue(valuePath); + let next: unknown; + if (typeof visitor === 'function') { + next = visitor?.(target); + } else { + next = visitor; + } + if (next !== undefined) { + setValue(this._object, valuePath, next); + } + return this; + } + + /** + * 根据路径删除值 + * @param valuePath + * @param visitor + */ + deleteValue(valuePath: string) { + const pathList = valuePath.split('.'); + const lastPath = pathList.pop(); + const parentPath = pathList.join('.'); + let target; + if (parentPath) { + target = this.getValue(parentPath); + } else { + target = this.json; + } + if (!target) { + return this; + } + delete target[lastPath]; + if (parentPath) { + this.setValue(parentPath, target); + } else { + this._object = target; + } + return this; + } +} diff --git a/packages/core/src/models/history.ts b/packages/core/src/models/history.ts new file mode 100644 index 0000000..2bf4de6 --- /dev/null +++ b/packages/core/src/models/history.ts @@ -0,0 +1,142 @@ +import { action, computed, makeObservable, observable, toJS } from 'mobx'; +import { IWorkspace } from './interfaces'; + +export enum HistoryMessage { + InitView = 'initView', + AddFile = 'addFile', + RemoveFile = 'removeFile', + UpdateDependency = 'updateDependency', + RemoveDependency = 'removeDependency', + RemoveNode = 'removeNode', + ReplaceNode = 'replaceNode', + CloneNode = 'cloneNode', + InsertNode = 'insertNode', + DropNode = 'dropNode', + UpdateAttribute = 'updateAttribute', + UpdateCode = 'updateCode', +} + +type HistoryRecordData = { + [filename: string]: string; +}; + +interface HistoryRecord { + time: number; + message: HistoryMessage; + data: HistoryRecordData; +} + +type PushDataType = Pick; + +/** + * 工作区的历史记录记录 + */ +export class TangoHistory { + // 历史记录 + _records: HistoryRecord[] = []; + + // 当前记录指针 + _index = 0; + + // 最多记录数 + _maxSize = 100; + + private readonly workspace: IWorkspace; + + get index() { + return this._index; + } + + get length() { + return this._records.length; + } + + get list() { + return toJS(this._records); + } + + get couldBack() { + return this._records.length > 0 && this._index > -1; + } + + get couldForward() { + return this._records.length > this._index + 1; + } + + constructor(workspace: IWorkspace) { + this.workspace = workspace; + + makeObservable(this, { + _records: observable, + _index: observable, + back: action, + forward: action, + go: action, + push: action, + couldBack: computed, + couldForward: computed, + }); + } + + _sync(data: HistoryRecordData) { + if (data) { + Object.keys(data).forEach((filename) => { + this.workspace.getFile(filename).update(data[filename]); + }); + } + } + + /** + * 上一步 + */ + back() { + if (this.couldBack) { + const item = this._records[this._index - 1]; + this._sync(item.data); + this._index--; + } + } + + /** + * 下一步 + */ + forward() { + if (this.couldForward) { + const item = this._records[this._index + 1]; + this._sync(item.data); + this._index++; + } + } + + /** + * 通过相对位置从历史记录加载记录 + */ + go(index: number) { + const item = this._records[index]; + if (item) { + this._sync(item.data); + this._index = index; + } + } + + /** + * push 数据进入历史记录堆栈 + */ + push(data: PushDataType) { + if (this._index < this._records.length - 1) { + this._records = this._records.slice(0, this._index + 1); + } + + this._index = this._records.length; + this._records.push({ + time: Date.now(), + ...data, + }); + + const overCount = this._records.length - this._maxSize; + if (overCount > 0) { + this._records.splice(0, overCount); + this._index = this._records.length - 1; + } + } +} diff --git a/packages/core/src/models/index.ts b/packages/core/src/models/index.ts new file mode 100644 index 0000000..1046d5d --- /dev/null +++ b/packages/core/src/models/index.ts @@ -0,0 +1,6 @@ +export * from './engine'; +export * from './workspace'; +export * from './designer'; +export * from './drop-target'; +export * from './module'; +export * from './interfaces'; diff --git a/packages/core/src/models/interfaces.ts b/packages/core/src/models/interfaces.ts new file mode 100644 index 0000000..f1f3f8b --- /dev/null +++ b/packages/core/src/models/interfaces.ts @@ -0,0 +1,237 @@ +import { ComponentPrototypeType, Dict } from '@music163/tango-helpers'; +import { TangoHistory } from './history'; +import { SelectSource } from './select-source'; +import { DragSource } from './drag-source'; +import { + FileItemType, + FileType, + ImportDeclarationPayloadType, + InsertChildPositionType, + PackageConfigType, + PageConfigType, + ProjectDataType, + ServiceFunctionPayloadType, +} from '../types/types'; +import { TangoFile, TangoJsonFile } from './file'; +import { TangoRouteModule, TangoServiceModule, TangoStoreModule } from './module'; + +export interface IViewFile { + readonly workspace: IWorkspace; + readonly filename: string; + readonly type: FileType; + + /** + * 通过导入组件名查找组件来自的包 + */ + importMap?: Dict<{ package: string; isDefault?: boolean }>; + + update: (code?: string, isFormatCode?: boolean, refreshWorkspace?: boolean) => void; + + getNode: (targetNodeId: string) => IViewNode; + + removeNode: (targetNodeId: string) => IViewFile; + + insertChild: ( + targetNodeId: string, + newNode: any, + position?: InsertChildPositionType, + sourcePrototype?: string | ComponentPrototypeType, + ) => IViewFile; + + insertAfter: (targetNodeId: string, newNode: any, sourcePrototype?: string | ComponentPrototypeType) => IViewFile; + + insertBefore: (targetNodeId: string, newNode: any, sourcePrototype?: string | ComponentPrototypeType) => IViewFile; + + replaceNode: (targetNodeId: string, newNode: any, sourcePrototype?: string | ComponentPrototypeType) => IViewFile; + + replaceViewChildren: (rawNodes: any[], importDeclarations?: ImportDeclarationPayloadType[]) => IViewFile; + + updateNodeAttribute: (nodeId: string, attrName: string, attrValue?: any, relatedImports?: string[]) => IViewFile; + + updateNodeAttributes: (nodeId: string, config: Record, relatedImports?: string[]) => IViewFile; + + get code(): string; + get nodes(): Map; + get nodesTree(): object[]; + get tree(): any; +} + +export interface IViewNode { + /** + * 所属的文件 + */ + file: IViewFile; + + /** + * 节点 ID + */ + readonly id: string; + + /** + * 对应的组件 + */ + readonly component: string; + + /** + * 原始节点对象 + */ + readonly rawNode: unknown; + + /** + * 属性集合 + */ + readonly props: Record; + + /** + * 克隆原始节点 + * @returns + */ + cloneRawNode: () => unknown; + + /** + * 销毁节点 + * @returns + */ + destroy: () => void; + + /** + * 原始节点的位置信息 + */ + get loc(): unknown; +} + +export interface IWorkspace { + history: TangoHistory; + selectSource: SelectSource; + dragSource: DragSource; + + files: Map; + componentPrototypes: Map; + + entry: string; + activeFile: string; + activeViewFile: string; + activeRoute: string; + + tangoConfigJson: TangoJsonFile; + routeModule?: TangoRouteModule; + serviceModule?: TangoServiceModule; + + refresh: (names: string[]) => void; + ready: () => void; + + setActiveRoute: (path: string) => void; + setActiveFile: (filename: string) => void; + + setComponentPrototypes: (prototypes: Record) => void; + getPrototype: (name: string | ComponentPrototypeType) => ComponentPrototypeType; + + /** + * 获取项目数据 + */ + getProjectData?: () => ProjectDataType; + + /** + * 查询节点 + * @param id 节点 ID + * @param module 节点所在的模块名 + * @returns 返回节点对象 + */ + getNode: (id: string, module?: string) => IViewNode; + listModals?: () => Array<{ label: string; value: string }>; + listForms?: () => Record; + + addFile: (filename: string, code: string, fileType?: FileType) => void; + addFiles: (files: FileItemType[]) => void; + updateFile: (filename: string, code: string, shouldFormatCode?: boolean) => void; + removeFile: (filename: string) => void; + renameFile: (oldFilename: string, newFilename: string) => void; + getFile: (filename: string) => TangoFile; + listFiles: () => Record; + + addViewPage: (name: string, code: string) => void; + + removeSelectedNode: () => void; + + cloneSelectedNode: () => void; + + copySelectedNode: () => void; + + pasteSelectedNode: () => void; + + insertToSelectedNode: (childNameOrPrototype: string | ComponentPrototypeType) => void; + + dropNode: () => void; + + insertToNode: (targetNodeId: string, sourceNameOrPrototype: string | ComponentPrototypeType) => void; + + replaceNode: (targetNodeId: string, sourceNameOrPrototype: string | ComponentPrototypeType) => void; + + updateSelectedNodeAttributes: (attributes: Record, relatedImports?: string[]) => void; + + addBlock?: (files: object, name: string) => void; + + generateBlockFilesBySelectedNode?: () => Record; + + removeServiceFunction?: (serviceName: string) => void; + + addServiceFunction?: (payload: ServiceFunctionPayloadType | ServiceFunctionPayloadType[]) => void; + + updateServiceFunction?: (payload: any) => void; + + updateServiceBaseConfig?: (name: string, value: any) => void; + + listStoreModules?: () => TangoStoreModule[]; + + addStoreModule?: (storeName: string, code: string) => void; + + removeStoreModule?: (storeName: string) => void; + + addStoreState?: (storeName: string, stateName: string, initValue: string) => void; + + removeStoreState?: (storeName: string, stateName: string) => void; + + updateModuleCodeByVariablePath?: (variablePath: string, code: string) => void; + + removeViewModule: (routePath: string) => void; + + copyViewPage: (sourceRoutePath: string, targetPageData: PageConfigType) => void; + + updateRoute: (sourceRoutePath: string, targetPageData: PageConfigType) => void; + + listDependencies?: () => any; + + updateDependency?: ( + name: string, + version: string, + options?: { + package?: PackageConfigType; + [x: string]: any; + }, + ) => void; + + removeDependency?: (name: string) => void; + + addBizComp?: ( + name: string, + version: string, + options?: { + package?: PackageConfigType; + [x: string]: any; + }, + ) => void; + + removeBizComp?: (name: string) => void; + + get activeViewModule(): IViewFile; + // TODO: -> getStoreModules + get storeModules(): TangoStoreModule[]; + // TODO: -> getPages + get pages(): any[]; + // TODO: getBizComps + get bizComps(): string[]; + // TODO: getBaseComps + get baseComps(): string[]; + // TODO: getBlocks + get blocks(): any[]; +} diff --git a/packages/core/src/models/module.ts b/packages/core/src/models/module.ts new file mode 100644 index 0000000..38467a7 --- /dev/null +++ b/packages/core/src/models/module.ts @@ -0,0 +1,733 @@ +import * as t from '@babel/types'; +import { action, computed, makeObservable, observable, toJS } from 'mobx'; +import { clone, ComponentPrototypeType, Dict, isNil, logger } from '@music163/tango-helpers'; +import { + code2ast, + ast2code, + traverseRouteFile, + traverseViewFile, + traverseServiceFile, + traverseStoreFile, + traverseStoreEntryFile, + addStoreToEntryFile, + updateServiceConfigToServiceFile, + toTreeData, + removeJSXElement, + insertSiblingAfterJSXElement, + getModuleNameByFilename, + addRouteToRouteFile, + removeRouteFromRouteFile, + appendChildToJSXElement, + addImportDeclaration, + updateImportDeclaration, + deleteServiceConfigFromServiceFile, + replaceJSXElement, + formatCode, + getImportDeclarationPayloadByPrototype, + addStoreState, + removeUnusedImportSpecifiers, + insertSiblingBeforeJSXElement, + updateStoreState, + removeStoreState, + removeStoreToEntryFile, + replaceRootJSXElementChildren, + updateRouteToRouteFile, + updateBaseConfigToServiceFile, + IdGenerator, + updateJSXAttributes, +} from '../helpers'; +import { TangoNode } from './node'; +import { TangoFile } from './file'; +import { + RouteDataType, + ModulePropsType, + ClassPropertyNodeType, + ServiceFunctionPayloadType, + TangoViewNodeDataType, + StorePropertyType, + ImportDeclarationPayloadType, + InsertChildPositionType, +} from '../types'; +import { IViewFile, IWorkspace } from './interfaces'; + +/** + * 模块实现规范 + * - ast 操纵类方法,统一返回 this,支持外层链式调用 + * - observable state 统一用 _foo 格式,并提供 getter 方法 + */ +class TangoModule extends TangoFile { + ast: t.File; + + constructor(workspace: IWorkspace, props: ModulePropsType, isSyncCode = true) { + super(workspace, props, isSyncCode); + } + + /** + * 基于最新的 ast 进行同步 + * @param code 如果传入 code,则基于 code 进行同步 + * @param isFormatCode 是否格式化代码 + * @param refreshWorkspace 是否刷新 workspace + */ + update(code?: string, isFormatCode = true, refreshWorkspace = true) { + this.lastModified = Date.now(); + if (isNil(code)) { + this._syncByAst(); + } else { + this._syncByCode(code, isFormatCode); + } + + this._analysisAst(); + + if (refreshWorkspace) { + this.workspace.refresh([this.filename]); + } + } + + /** + * 基于最新的 ast 进行源码同步 + */ + _syncByAst() { + const code = ast2code(this.ast); + this._code = code; + this._cleanCode = code; + } + + /** + * 基于输入的源码进行同步 + * @param code 源码 + * @param isFormatCode 是否格式化代码 + * @returns + */ + _syncByCode(code: string, isFormatCode = true) { + if (code === this._code) { + return; + } + + // 提前格式化代码 + if (isFormatCode) { + code = formatCode(code); + } + + this._code = code; + this._cleanCode = code; + this.ast = code2ast(code); + } + + _analysisAst() {} +} + +/** + * 普通 JS 文件 + */ +export class TangoJsModule extends TangoModule { + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.update(props.code, false, false); + + makeObservable(this, { + _code: observable, + _cleanCode: observable, + code: computed, + cleanCode: computed, + update: action, + }); + } +} + +/** + * 入口配置模块 + */ +export class TangoStoreEntryModule extends TangoModule { + _stores: string[] = []; + + get stores() { + return toJS(this._stores); + } + + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.update(props.code, true, false); + + makeObservable(this, { + _stores: observable, + _code: observable, + _cleanCode: observable, + stores: computed, + code: computed, + cleanCode: computed, + update: action, + }); + } + + _analysisAst() { + this._stores = traverseStoreEntryFile(this.ast); + } + + /** + * 新建模型 + * @param name + */ + addStore(name: string) { + this.ast = addStoreToEntryFile(this.ast, name); + return this; + } + + /** + * 删除模型 + * @param name + */ + removeStore(name: string) { + this.ast = removeStoreToEntryFile(this.ast, name); + return this; + } +} + +/** + * 路由配置模块 + */ +export class TangoRouteModule extends TangoModule { + _routes: RouteDataType[]; + + get routes() { + return toJS(this._routes); + } + + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.update(props.code, true, false); + + makeObservable(this, { + _routes: observable, + _code: observable, + _cleanCode: observable, + routes: computed, + code: computed, + cleanCode: computed, + update: action, + }); + } + + /** + * 根据路由地址获取 route 对象 + */ + getRouteByRoutePath(route: string) { + let record; + for (const item of this.routes) { + if (item.path === route) { + record = item; + break; + } + } + return record; + } + + /** + * 添加一条新路由 + * @param name + */ + addRoute(routePath: string, importFilePath: string) { + this.ast = addRouteToRouteFile(this.ast, routePath, importFilePath); + return this; + } + + /** + * 更新页面路由 + * @param oldRoutePath + * @param newRoutePath + * @returns + */ + updateRoute(oldRoutePath: string, newRoutePath: string) { + this.ast = updateRouteToRouteFile(this.ast, oldRoutePath, newRoutePath); + return this; + } + + /** + * 删除一条路由 + * @param route 路由地址 + */ + removeRoute(route: string) { + if (route === '/') { + console.warn('index route should not be removed!'); + return; + } + const record = this.getRouteByRoutePath(route); + this.ast = removeRouteFromRouteFile(this.ast, route, record.importPath); + return this; + } + + _analysisAst() { + this._routes = traverseRouteFile(this.ast); + } +} + +/** + * 视图模块 + */ +export class TangoViewModule extends TangoModule implements IViewFile { + // 解析为树结构的 jsxNodes 数组 + _nodesTree: TangoViewNodeDataType[]; + /** + * 通过导入组件名查找组件来自的包 + */ + importMap: Dict<{ package: string; isDefault?: boolean }>; + + /** + * 视图中依赖的 tango 变量,仅 stores 和 services + */ + variables: string[]; + + /** + * 节点列表 + */ + private _nodes: Map; + /** + * 导入的模块 + */ + private _importedModules: Dict; + /** + * 类属性 + * @deprecated + */ + private _classProperties: Dict; + /** + * 状态属性 + */ + private _stateProperties: string[]; + /** + * 状态代码 + */ + private _stateCode: string; + /** + * ID 生成器 + */ + private _idGenerator: IdGenerator; + + get classProperties() { + return this._classProperties; + } + + get stateProperties() { + return this._stateProperties; + } + + get nodes() { + return this._nodes; + } + + get nodesTree() { + return toJS(this._nodesTree); + } + + get stateCode() { + return this._stateCode; + } + + get tree() { + return this.ast; + } + + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this._nodes = new Map(); + this._idGenerator = new IdGenerator({ prefix: props.filename }); + this.update(props.code, true, false); + makeObservable(this, { + _nodesTree: observable, + + _code: observable, + _cleanCode: observable, + + code: computed, + cleanCode: computed, + + update: action, + }); + } + + _syncByAst() { + // 空方法,逻辑合并到 this._analysisAst + } + + _analysisAst() { + const { + ast: newAst, + cleanAst, + nodes, + stateCode, + stateProperties, + classProperties, + importedModules, + variables, + } = traverseViewFile(this.ast, this._idGenerator); + this.ast = newAst; + + this._code = ast2code(newAst); + this._cleanCode = ast2code(cleanAst); + + this._stateCode = stateCode; + + this._stateProperties = stateProperties; + this._classProperties = classProperties; + this._importedModules = importedModules; + this.importMap = this.buildImportMap(importedModules); + this.variables = variables; + + this._nodes.clear(); + + nodes.forEach((cur) => { + const node = new TangoNode({ + ...cur, + file: this, + }); + this._nodes.set(cur.id, node); + }); + + this._nodesTree = toTreeData(nodes); + } + + /** + * 基于组件的 prototype 信息更新导入信息 + * @param prototype + * @param shouldUpdateCode + */ + updateImportSpecifiersByPrototype(sourcePrototype: string | ComponentPrototypeType) { + const prototype = this.workspace.getPrototype(sourcePrototype); + if (prototype) { + const importDeclaration = getImportDeclarationPayloadByPrototype(prototype, this.filename); + this.updateImportSpecifiers(importDeclaration); + } + return this; + } + + /** + * 更新导入的变量(新版) + */ + updateImportSpecifiers(importDeclaration: ImportDeclarationPayloadType) { + const mods = this._importedModules[importDeclaration.sourcePath]; + let ast; + // 如果模块已存在,需要去重 + if (mods) { + const targetMod = Array.isArray(mods) ? mods[0] : mods; + const specifiers = Array.isArray(mods) + ? mods.reduce((prev, cur) => prev.concat(cur.specifiers || []), []) + : mods.specifiers; + + // 去掉已存在的导入声明 + const newSpecifiers = importDeclaration.specifiers.filter( + (name) => !specifiers.includes(name), + ); + + ast = updateImportDeclaration(this.ast, { + ...importDeclaration, + specifiers: newSpecifiers.concat(targetMod.specifiers), + }); + } else { + ast = addImportDeclaration(this.ast, importDeclaration); + } + this.ast = ast; + return this; + } + + /** + * 清除无效的导入声明 + */ + removeUnusedImportSpecifiers() { + this.ast = removeUnusedImportSpecifiers(this.ast); + return this; + } + + getNode(nodeId: string) { + return this._nodes.get(nodeId); + } + + /** + * 删除节点 + * @param nodeId + */ + removeNode(nodeId: string) { + this.ast = removeJSXElement(this.ast, nodeId); + return this; + } + + /** + * 更新节点的属性 + * @deprecated 使用 updateNodeAttributes 代替 + */ + updateNodeAttribute( + nodeId: string, + attrName: string, + attrValue?: any, + relatedImports?: string[], + ) { + return this.updateNodeAttributes(nodeId, { [attrName]: attrValue }, relatedImports); + } + + updateNodeAttributes(nodeId: string, config: Record, relatedImports?: string[]) { + if (relatedImports && relatedImports.length) { + // 导入依赖的组件 + relatedImports.forEach((name: string) => { + const proto = this.workspace.getPrototype(name); + this.updateImportSpecifiersByPrototype(proto); + }); + } + this.ast = updateJSXAttributes(this.ast, nodeId, config); + return this; + } + + /** + * 插入子节点的最后面 + * @param targetNodeId + * @param newNode + * @param sourceName + * @returns + */ + insertChild( + targetNodeId: string, + newNode: t.JSXElement, + position: InsertChildPositionType = 'last', + sourceName: string | ComponentPrototypeType, + ) { + this.ast = appendChildToJSXElement(this.ast, targetNodeId, newNode, position); + if (sourceName) { + this.updateImportSpecifiersByPrototype(sourceName); + } + return this; + } + + insertAfter( + targetNodeId: string, + newNode: t.JSXElement, + sourceName?: string | ComponentPrototypeType, + ) { + this.ast = insertSiblingAfterJSXElement(this.ast, targetNodeId, newNode); + if (sourceName) { + this.updateImportSpecifiersByPrototype(sourceName); + } + return this; + } + + insertBefore( + targetNodeId: string, + newNode: t.JSXElement, + sourceName?: string | ComponentPrototypeType, + ) { + this.ast = insertSiblingBeforeJSXElement(this.ast, targetNodeId, newNode); + if (sourceName) { + this.updateImportSpecifiersByPrototype(sourceName); + } + return this; + } + + /** + * 替换目标节点为新节点 + * @param targetNodeId + * @param newNode + * @param sourcePrototype + */ + replaceNode( + targetNodeId: string, + newNode: t.JSXElement, + sourceName?: string | ComponentPrototypeType, + ) { + this.ast = replaceJSXElement(this.ast, targetNodeId, newNode); + if (sourceName) { + this.updateImportSpecifiersByPrototype(sourceName); + } + return this; + } + + /** + * 替换 jsx 跟结点的子元素 + */ + replaceViewChildren( + childrenNodes: t.JSXElement[], + importDeclarations?: ImportDeclarationPayloadType[], + ) { + if (childrenNodes.length) { + this.ast = replaceRootJSXElementChildren(this.ast, childrenNodes); + } + + if (importDeclarations?.length) { + importDeclarations.forEach((item) => { + this.updateImportSpecifiers(item); + }); + } + + return this; + } + + private buildImportMap( + importedModules: Dict, + ) { + const map = {}; + Object.keys(importedModules).forEach((modName) => { + const mod = importedModules[modName]; + (Array.isArray(mod) ? mod : [mod]).forEach((item) => { + if (item.defaultSpecifier) { + map[item.defaultSpecifier] = { + package: modName, + isDefault: true, + }; + } + if (item.specifiers.length) { + item.specifiers.forEach((spe) => { + map[spe] = { package: modName }; + }); + } + }); + }); + return map; + } +} + +/** + * 数据服务模块 + */ +export class TangoServiceModule extends TangoModule { + /** + * 模块名 + */ + name: string; + + _serviceFunctions: Dict; + + _baseConfig: Dict; + + get serviceFunctions() { + return toJS(this._serviceFunctions); + } + + get baseConfig() { + return toJS(this._baseConfig); + } + + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.name = getModuleNameByFilename(props.filename); + this.update(props.code, true, false); + + makeObservable(this, { + _serviceFunctions: observable, + _baseConfig: observable, + _code: observable, + _cleanCode: observable, + serviceFunctions: computed, + baseConfig: computed, + cleanCode: computed, + code: computed, + update: action, + }); + } + + _analysisAst() { + const { services, baseConfig } = traverseServiceFile(this.ast); + this._serviceFunctions = services; + this._baseConfig = baseConfig; + } + + addServiceFunction(payload: ServiceFunctionPayloadType) { + const { name, ...rest } = payload; + this.ast = updateServiceConfigToServiceFile(this.ast, { [name]: clone(rest, false) }); + return this; + } + + addServiceFunctions(payloads: ServiceFunctionPayloadType[]) { + const config = payloads.reduce((acc, cur) => { + const { name, ...rest } = cur; + acc[name] = clone(rest, false); + return acc; + }, {}); + this.ast = updateServiceConfigToServiceFile(this.ast, config); + return this; + } + + updateServiceFunction(payload: ServiceFunctionPayloadType) { + const { name, ...rest } = payload; + this.ast = updateServiceConfigToServiceFile(this.ast, { [name]: clone(rest, false) }); + return this; + } + + deleteServiceFunction(serviceFunctionName: string) { + try { + this.ast = deleteServiceConfigFromServiceFile(this.ast, serviceFunctionName); + } catch (e) { + logger.error(e); + } + return this; + } + + /** + * 更新服务的基础配置 + */ + updateBaseConfig(optionName: string, optionValue: any) { + this.ast = updateBaseConfigToServiceFile(this.ast, optionName, optionValue); + return this; + } +} + +/** + * 状态模型模块 + */ +export class TangoStoreModule extends TangoModule { + /** + * 模块名 + */ + name: string; + + namespace: string; + + states: StorePropertyType[]; + + actions: StorePropertyType[]; + + constructor(workspace: IWorkspace, props: ModulePropsType) { + super(workspace, props, false); + this.name = getModuleNameByFilename(props.filename); + this.update(props.code, true, false); + + makeObservable(this, { + states: observable, + actions: observable, + _code: observable, + _cleanCode: observable, + cleanCode: computed, + code: computed, + update: action, + }); + } + + /** + * 添加状态属性 + * @param stateName + * @param initValue + */ + addState(stateName: string, initValue: string) { + this.ast = addStoreState(this.ast, stateName, initValue); + return this; + } + + /** + * 移除状态 + */ + removeState(stateName: string) { + this.ast = removeStoreState(this.ast, stateName); + return this; + } + + /** + * 更新状态代码 + * @param stateName 状态名 + * @param code 代码 + */ + updateState(stateName: string, code: string) { + this.ast = updateStoreState(this.ast, stateName, code); + return this; + } + + _analysisAst() { + const { namespace, states, actions } = traverseStoreFile(this.ast); + this.namespace = namespace || this.name; + this.states = states; + this.actions = actions; + } +} diff --git a/packages/core/src/models/node.ts b/packages/core/src/models/node.ts new file mode 100644 index 0000000..91d0467 --- /dev/null +++ b/packages/core/src/models/node.ts @@ -0,0 +1,60 @@ +import { JSXElement, SourceLocation } from '@babel/types'; +import { cloneJSXElementWithoutTrackingData, getJSXElementAttributes } from '../helpers'; +import { TangoViewNodeDataType } from '../types'; +import { TangoViewModule } from './module'; +import { IViewNode } from './interfaces'; + +type TangoNodeConstructorPropsType = TangoViewNodeDataType & { + file: TangoViewModule; +}; + +/** + * 视图节点类 + */ +export class TangoNode implements IViewNode { + /** + * 节点 ID + */ + readonly id: string; + + /** + * 节点对应的组件名 + */ + readonly component: string; + + readonly rawNode: JSXElement; + + /** + * 节点所属的文件对象 + */ + file: TangoViewModule; + + props: Record; + + get loc(): SourceLocation { + return this.rawNode?.loc; + } + + constructor(props: TangoNodeConstructorPropsType) { + this.file = props.file; + this.id = props.id; + this.component = props.component; + this.rawNode = props.rawNode; + this.props = getJSXElementAttributes(cloneJSXElementWithoutTrackingData(props.rawNode)); + } + + /** + * 返回克隆后的 ast 节点 + * @returns + */ + cloneRawNode() { + return cloneJSXElementWithoutTrackingData(this.rawNode); + } + + /** + * 清空节点的指向,交给 GC 去回收 + */ + destroy() { + this.file = null; + } +} diff --git a/packages/core/src/models/select-source.ts b/packages/core/src/models/select-source.ts new file mode 100644 index 0000000..66e0d9b --- /dev/null +++ b/packages/core/src/models/select-source.ts @@ -0,0 +1,119 @@ +import { ISelectedItemData, MousePoint } from '@music163/tango-helpers'; +import { action, computed, makeObservable, observable, toJS } from 'mobx'; +import { IViewFile, IWorkspace } from './interfaces'; + +type StartDataType = { + point: MousePoint; + element: HTMLElement; +}; + +export class SelectSource { + /** + * 选中元素列表 + */ + _items: ISelectedItemData[] = []; + + /** + * 用户选择的起点 + */ + _start: StartDataType = { + point: { + x: 0, + y: 0, + }, + element: null, + }; + + private readonly workspace: IWorkspace; + + get start() { + return toJS(this._start); + } + + get first() { + if (this._items.length) return this._items[0]; + return; + } + + get firstNode() { + if (!this.first) return; + return this.workspace.getNode(this.first.id, this.first.filename); + } + + get size() { + return this._items.length; + } + + /** + * 选中的结点数据 NodeData + */ + get selected() { + return toJS(this._items); + } + + /** + * 是否选中了结点 + */ + get isSelected() { + return !!this.selected.length; + } + + /** + * 选中结点位于的文件 + */ + get file(): IViewFile { + return this.firstNode?.file; + } + + /** + * 选中的结点 Nodes + */ + get nodes() { + return this._items + .map((item) => this.workspace.getNode(item.id, item.filename)) + .filter((node) => !!node); + } + + constructor(workspace: IWorkspace) { + this.workspace = workspace; + makeObservable(this, { + _items: observable, + _start: observable, + select: action, + setStart: action, + clear: action, + start: computed, + selected: computed, + first: computed, + firstNode: computed, + size: computed, + isSelected: computed, + file: computed, + nodes: computed, + }); + } + + // 增加一个选中项 + add() {} + + // 移除一个选中项 + remove() {} + + select(items: ISelectedItemData | ISelectedItemData[]) { + if (!items) { + this._items = []; + } else { + this._items = Array.isArray(items) ? items : [items]; + } + // 选中后清空起点位置信息 + this._start = null; + } + + setStart(data: StartDataType) { + this._start = data; + } + + clear() { + this._items = []; + } +} diff --git a/packages/core/src/models/workspace.ts b/packages/core/src/models/workspace.ts new file mode 100644 index 0000000..800258f --- /dev/null +++ b/packages/core/src/models/workspace.ts @@ -0,0 +1,1280 @@ +import { action, computed, makeObservable, observable } from 'mobx'; +import { JSXElement } from '@babel/types'; +import { + array2object, + ComponentPrototypeType, + hasFileExtension, + isString, + logger, + uniq, +} from '@music163/tango-helpers'; +import { + prototype2jsxElement, + inferFileType, + getFilepath, + isPathnameMatchRoute, + getJSXElementChildrenNames, + namesToImportDeclarations, + getBlockNameByFilename, + queryXFormItemFields, + getPrivilegeCode, +} from '../helpers'; +import { DropMethod } from './drop-target'; +import { HistoryMessage, TangoHistory } from './history'; +import { TangoNode } from './node'; +import { + TangoStoreEntryModule, + TangoRouteModule, + TangoServiceModule, + TangoStoreModule, + TangoViewModule, + TangoJsModule, +} from './module'; +import { TangoFile, TangoJsonFile, TangoLessFile } from './file'; +import { + FileItemType, + FileType, + PackageConfigType, + PageConfigType, + ProjectDataType, + ServiceFunctionPayloadType, +} from '../types'; +import { IWorkspace } from './interfaces'; +import { SelectSource } from './select-source'; +import { DragSource } from './drag-source'; + +export type WorkspaceOptionsType = { + /** + * 入口文件 + */ + entry?: string; + /** + * 初始化文件列表 + */ + files?: FileItemType[]; + /** + * 默认的激活的路由 + */ + defaultActiveRoute?: string; + /** + * 组件描述列表 + */ + prototypes?: Record; +}; + +/** + * 工作区 + */ +export class Workspace extends EventTarget implements IWorkspace { + history: TangoHistory; + selectSource: SelectSource; + dragSource: DragSource; + + /** + * 工作区的文件列表 + */ + files: Map; + + componentPrototypes: Map; + + entry: string; + + /** + * 当前路由 + */ + activeRoute: string; + + /** + * 当前选中的文件 + */ + activeFile: string; + + /** + * 当前选中的视图文件 + */ + activeViewFile: string; + + /** + * 本地区块 { [blockName]: filePath } + */ + localBlocks: Record; + + /** + * service 模块 + */ + serviceModule: TangoServiceModule; + + /** + * 路由配置模块 + */ + routeModule: TangoRouteModule; + + /** + * 模型入口配置模块 + */ + storeEntryModule: TangoStoreEntryModule; + + /** + * package.json 文件 + */ + packageJson: TangoJsonFile; + + /** + * tango.config.json 文件 + */ + tangoConfigJson: TangoJsonFile; + + /** + * appJson.json 文件 + */ + appJson: TangoJsonFile; + + /** + * 绑定事件 + * TODO: 是否需要自己来管理 listeners,并及时进行 gc + */ + on = this.addEventListener; + + /** + * 移除事件 + */ + off = this.removeEventListener; + + /** + * 工作区是否就绪 + */ + private isReady: boolean; + + /** + * 拷贝的暂存区 + */ + private copyTempNodes: TangoNode[]; + + /** + * 当前激活的视图模块 + */ + get activeViewModule() { + if (!this.activeViewFile) { + this.setActiveViewFile(this.activeRoute); + } + return this.files.get(this.activeViewFile) as TangoViewModule; + } + + /** + * store 模块列表 + */ + get storeModules() { + const mods: TangoStoreModule[] = []; + this.files.forEach((file) => { + if (file instanceof TangoStoreModule) { + mods.push(file); + } + }); + return mods; + } + + /** + * 获取页面列表 + */ + get pages() { + const appJsonPages = this.appJson?.getValue('pages'); + const pagesMap = array2object(appJsonPages || [], (item) => item.path); + const ret: PageConfigType[] = []; + this.routeModule?.routes.forEach((item) => { + const data = pagesMap[item.path]; + if (item.path !== '*') { + ret.push({ + ...data, + path: item.path, + }); + } + }); + return ret; + } + + get bizComps(): string[] { + const packages = this.tangoConfigJson?.getValue('packages'); + let list = this.tangoConfigJson?.getValue('bizDependencies') || []; + if (packages) { + list = [ + ...new Set([ + ...list, + ...Object.keys(packages).filter((e) => packages[e].type === 'bizDependency'), + ]), + ]; + } + return list; + } + + get baseComps(): string[] { + const packages = this.tangoConfigJson?.getValue('packages'); + let list = this.tangoConfigJson?.getValue('baseDependencies') || []; + if (packages) { + list = [ + ...new Set([ + ...list, + ...Object.keys(packages).filter((e) => packages[e].type === 'baseDependency'), + ]), + ]; + } + return list; + } + + get blocks() { + return Object.keys(this.localBlocks); + } + + constructor(options?: WorkspaceOptionsType) { + super(); + this.history = new TangoHistory(this); + this.selectSource = new SelectSource(this); + this.dragSource = new DragSource(this); + this.componentPrototypes = new Map(); + this.localBlocks = {}; + this.entry = options?.entry; + this.activeRoute = options?.defaultActiveRoute || '/'; + this.activeFile = options?.entry; + this.activeViewFile = ''; + this.files = new Map(); + this.isReady = false; + + if (options?.files) { + this.addFiles(options.files); + } + + if (options?.prototypes) { + this.setComponentPrototypes(options.prototypes); + } + + makeObservable(this, { + files: observable, + activeRoute: observable, + activeFile: observable, + activeViewFile: observable, + localBlocks: observable, + blocks: computed, + pages: computed, + bizComps: computed, + setActiveRoute: action, + setActiveFile: action, + addFile: action, + removeFile: action, + }); + } + + getPrototype(name: string | ComponentPrototypeType) { + if (isString(name)) { + return this.componentPrototypes.get(name); + } + return name as ComponentPrototypeType; + } + + getProjectData() { + const pages = this.pages.map((item) => { + const filename = this.getFilenameByRoutePath(item.path); + return { + title: item.name, + path: item.path, + filename, + includes: { + variables: (this.getFile(filename) as TangoViewModule).variables, + }, + }; + }); + const stores = this.storeModules.reduce((acc, item) => { + acc[item.name] = { filename: item.filename }; + return acc; + }, {}); + const services = { + index: { + filename: this.serviceModule?.filename, + functions: Object.keys(this.serviceModule.serviceFunctions), + }, + }; + const data: ProjectDataType = { + pages, + stores, + services, + }; + return data; + } + + /** + * 设置当前路由 + * @param routePath 路由路径 + */ + setActiveRoute(routePath: string) { + if (routePath === this.activeRoute) { + return; + } + this.selectSource.clear(); + this.activeRoute = routePath; + this.setActiveViewFile(routePath); + } + + /** + * 设置当前选中的文件 + * @param filename + */ + setActiveFile(filename: string, isViewFile = false) { + this.activeFile = filename; + if (isViewFile) { + this.activeViewFile = filename; + } + } + + /** + * 根据当前的路由计算当前的视图模块 + */ + setActiveViewFile(routePath: string) { + let filename = this.getFilenameByRoutePath(routePath); + if (!filename) { + // 没有找到 route 对应的文件,使用默认的 entry + for (const [key, file] of this.files) { + if (file.type === FileType.JsxViewModule) { + filename = file.filename; + break; + } + } + } + if (filename) { + this.setActiveFile(filename, true); + } + } + + setComponentPrototypes(prototypes: Record) { + Object.keys(prototypes).forEach((name) => { + this.componentPrototypes.set(name, prototypes[name]); + }); + } + + /** + * 添加一组文件到工作区 + * @param files + */ + addFiles(files: FileItemType[] = []) { + files.forEach((file) => { + this.addFile(file.filename, file.code, file.type); + }); + } + + /** + * 添加文件到工作区 + * @param filename 文件名 + * @param code 代码片段 + * @param fileType 模块类型 + */ + addFile(filename: string, code: string, fileType?: FileType) { + if (!this.files.has(filename)) { + const moduleType = fileType || inferFileType(filename); + const props = { + filename, + code, + type: moduleType, + }; + + let module; + switch (moduleType) { + case FileType.StoreEntryModule: + module = new TangoStoreEntryModule(this, props); + this.storeEntryModule = module; + break; + case FileType.RouteModule: + module = new TangoRouteModule(this, props); + this.routeModule = module; + // check if activeRoute exists + const route = module.routes.find((item) => item.path === this.activeRoute); + if (!route) { + this.setActiveRoute(module.routes[0]?.path); + } + break; + case FileType.JsxViewModule: + module = new TangoViewModule(this, props); + break; + case FileType.ServiceModule: + module = new TangoServiceModule(this, props); + this.serviceModule = module; // 仅支持单个 service 文件 + break; + case FileType.StoreModule: + module = new TangoStoreModule(this, props); + break; + case FileType.BlockEntryModule: + const blockName = getBlockNameByFilename(props.filename); + const prototype: ComponentPrototypeType = { + name: blockName, + exportType: 'defaultExport', + package: props.filename, + type: 'block', + }; + this.localBlocks[blockName] = props.filename; + this.componentPrototypes.set(blockName, prototype); + module = new TangoViewModule(this, props); + break; + case FileType.Module: + module = new TangoJsModule(this, props); + break; + case FileType.Less: + module = new TangoLessFile(this, props); + break; + case FileType.PackageJson: + module = new TangoJsonFile(this, props); + this.packageJson = module; + break; + case FileType.TangoConfigJson: + module = new TangoJsonFile(this, props); + this.tangoConfigJson = module; + break; + case FileType.AppJson: + module = new TangoJsonFile(this, props); + this.appJson = module; + break; + case FileType.Json: + module = new TangoJsonFile(this, props); + break; + default: + module = new TangoFile(this, props); + } + + this.files.set(filename, module); + } + } + + updateFile(filename: string, code: string, shouldFormatCode = false) { + const file = this.getFile(filename); + file.update(code); + if (shouldFormatCode && file instanceof TangoViewModule) { + file.removeUnusedImportSpecifiers().update(); + } + this.history.push({ + message: HistoryMessage.UpdateCode, + data: { + [filename]: code, + }, + }); + } + + /** + * 删除工作区的文件 + * @param filename + */ + removeFile(filename: string) { + // TODO: refactor visitFile to share this logic + if (this.files.get(filename)) { + // 如果是文件,直接删除 + this.files.delete(filename); + } else { + // 没有匹配到,就是一个目录,直接删除整个目录 + // FIXME: 可能存在风险,如果文件夹中的模块被复用,则会导致误删除 + Array.from(this.files.keys()).forEach((key) => { + if (key.startsWith(`${filename}/`)) { + this.files.delete(key); + } + }); + } + } + + /** + * 重命名文件 + * @param oldFilename + * @param newFilename + */ + renameFile(oldFilename: string, newFilename: string) { + const file = this.files.get(oldFilename); + this.removeFile(oldFilename); + this.addFile(newFilename, file.code); + } + + /** + * 根据文件名获取文件对象 + * @param filename + * @returns + */ + getFile(filename: string) { + return this.files.get(filename); + } + + /** + * 获取文件列表 + * @returns { [filename]: fileCode } + */ + listFiles() { + const ret = {}; + this.files.forEach((file) => { + ret[file.filename] = file.cleanCode; + }); + return ret; + } + + listStoreModules() { + return Array.from(this.files.values()).filter( + (file) => file instanceof TangoStoreModule, + ) as TangoStoreModule[]; + } + + getStoreModuleByName(storeName: string) { + let mod; + const files = this.files.values(); + for (const file of files) { + if (file instanceof TangoStoreModule && file.name === storeName) { + mod = file; + break; + } + } + return mod; + } + + /** + * 删除视图模块 + * @param route 路由名称 + */ + removeViewModule(routePath: string) { + // get filename first + const filename = this.getFilenameByRoutePath(routePath); + if (this.routeModule) { + this.routeModule.removeRoute(routePath).update(); + this.setActiveRoute(this.routeModule.routes[0]?.path || '/'); + } + // remove appJson page + this.appJson + ?.setValue('pages', (pages) => { + return (pages as PageConfigType[]).filter((page) => page.path !== routePath); + }) + .update(); + this.removeFile(filename); + } + + /** + * 添加新的视图文件 + * @deprecated + * @param route 视图名 + * @param code 视图代码 + */ + addViewPage(routeConfig: string | PageConfigType, code: string) { + const config = + typeof routeConfig === 'string' + ? { + name: routeConfig, + path: routeConfig.startsWith('/') ? routeConfig : `/${routeConfig}`, + } + : routeConfig; + + const filename = getFilepath(config.path, '/src/pages', '.js'); + this.addFile(filename, code); + this.addRoute(config, filename); + } + + /** + * 添加新的路由 + */ + addRoute(routeData: PageConfigType, importFilePath: string) { + this.routeModule?.addRoute(routeData.path, importFilePath).update(); + this.appJson + ?.setValue('pages', (pages) => { + (pages as PageConfigType[]).push({ + name: routeData.name || routeData.path, + path: routeData.path, + privilegeCode: getPrivilegeCode(this.packageJson?.getValue('name'), routeData.path), + }); + return pages; + }) + .update(); + } + + /** + * 更新页面路由配置 + * @param sourceRoutePath + * @param targetPageData + */ + updateRoute(sourceRoutePath: string, targetPageData: PageConfigType) { + if (sourceRoutePath !== targetPageData.path) { + this.routeModule?.updateRoute(sourceRoutePath, targetPageData.path).update(); + } + this.appJson + ?.setValue('pages', (pages) => { + for (const page of pages as PageConfigType[]) { + if (page.path === sourceRoutePath) { + page.path = targetPageData.path; + page.name = targetPageData.name; + break; + } + } + return pages; + }) + .update(); + } + + /** + * 复制视图文件 + * @param sourceRoute + * @param targetRouteConfig + */ + copyViewPage(sourceRoutePath: string, targetPageData: PageConfigType) { + const sourceFilePath = this.getRealViewFilePath(this.getFilenameByRoutePath(sourceRoutePath)); + const targetFilePath = getFilepath(targetPageData.path, '/src/pages'); + this.copyFiles(sourceFilePath, targetFilePath); + this.addRoute(targetPageData, targetFilePath); + } + + getNode(id: string, filename?: string) { + const file = filename ? this.getFile(filename) : this.activeViewModule; + if (file instanceof TangoViewModule) { + return file.getNode(id); + } + return; + } + + /** + * TODO: 仅获取当前视图即可 + * 获取当前视图的弹窗列表 + * @returns + */ + listModals() { + const modals: Array<{ label: string; value: string }> = []; + const activeViewNodes = this.activeViewModule?.nodes || new Map(); + + Array.from(activeViewNodes.values()).forEach((node) => { + if (['Modal', 'Drawer'].includes(node.component) && node.props.id) { + modals.push({ + label: `${node.component}(${node.props.id})`, + value: node.props.id, + }); + } + }); + + return modals; + } + + /** + * TODO: 获取当前视图的表单列表 + */ + listForms() { + const forms: Record = {}; + const activeViewNodes = this.activeViewModule?.nodes; + Array.from(activeViewNodes.values()).forEach((node) => { + if ( + ['XAction', 'XColumnAction', 'XForm', 'XStepForm', 'XSearchForm', 'XFormList'].includes( + node.component, + ) + ) { + forms[node.id] = queryXFormItemFields(node.rawNode); + } + }); + return forms; + } + + /** + * 应用代码初始化完成 + */ + ready() { + if (!this.isReady) { + this.isReady = true; + + this.history.push({ + message: HistoryMessage.InitView, + data: { + [this.activeViewModule?.filename]: this.activeViewModule?.code, + }, + }); + } + } + + /** + * 添加区块文件 + * @param files 文件 + * @param name 区块文件名 + */ + addBlock(files: Object, name: string) { + const blockFiles = {}; + Object.keys(files).forEach((path) => { + if (!path.includes('/src')) return; + blockFiles[path.replace('/src/', '')] = files[path]; + }); + this.addFiles( + Object.keys(blockFiles).map((filepath) => ({ + filename: `/src/blocks/${name}/${filepath}`, + code: blockFiles[filepath], + })), + ); + const { dependencies } = JSON.parse(files['/package.json']); + Object.keys(dependencies).forEach((pkg) => { + this.packageJson?.setValue('dependencies', (deps) => { + if (!deps[pkg]) { + deps[pkg] = dependencies[pkg]; + } + return deps; + }); + }); + } + + /** + * 添加新的模型文件 + * @param name 模型名 + * @param code 模型代码 + */ + addStoreModule(name: string, code: string) { + const filename = getFilepath(name, '/src/stores', '.js'); + this.addFile(filename, code); + this.storeEntryModule?.addStore(name).update(); + } + + /** + * 删除模型文件 + * @param name + */ + removeStoreModule(name: string) { + const filename = getFilepath(name, '/src/stores', '.js'); + this.storeEntryModule.removeStore(name).update(); + this.removeFile(filename); + } + + /** + * 添加模型属性 + * @param storeName + * @param stateName + * @param initValue + */ + addStoreState(storeName: string, stateName: string, initValue: string) { + this.getStoreModuleByName(storeName).addState(stateName, initValue).update(); + } + + /** + * 删除模型属性 + * @param storeName + * @param stateName + */ + removeStoreState(storeName: string, stateName: string) { + this.getStoreModuleByName(storeName).removeState(stateName).update(); + } + + /** + * 根据变量路径更新模块内容 + * TODO: 改名,不直观 + * @param variablePath 变量路径 + * @param code 变量代码 + */ + updateModuleCodeByVariablePath(variablePath: string, code: string) { + if (/^stores\.\w+\.\w+$/.test(variablePath)) { + const [type, storeName, stateName] = variablePath.split('.'); + this.getStoreModuleByName(storeName).updateState(stateName, code).update(); + } + } + + /** + * 更新服务函数 + */ + updateServiceFunction(payload: any) { + this.serviceModule.updateServiceFunction(payload).update(); + } + + /** + * 新增服务函数,支持批量添加 + */ + addServiceFunction(payload: ServiceFunctionPayloadType | ServiceFunctionPayloadType[]) { + if (Array.isArray(payload)) { + this.serviceModule.addServiceFunctions(payload).update(); + } else { + this.serviceModule.addServiceFunction(payload).update(); + } + } + + /** + * 删除服务函数 + * @param name + */ + removeServiceFunction(name: string) { + this.serviceModule.deleteServiceFunction(name).update(); + } + + /** + * 更新服务的基础配置 + */ + updateServiceBaseConfig(name: string, value: any) { + this.serviceModule.updateBaseConfig(name, value).update(); + } + + /** + * 获取 package.json 中的依赖列表 + * @returns + */ + listDependencies() { + return this.packageJson?.getValue('dependencies'); + } + + /** + * 更新依赖,没有就添加 + * @param name + * @param version + */ + updateDependency( + name: string, + version: string, + options?: { + package?: PackageConfigType; + [x: string]: any; + }, + ) { + this.packageJson + ?.setValue('dependencies', (deps = {}) => { + deps[name] = version; + return deps; + }) + .update(); + + this.tangoConfigJson + ?.setValue('packages', (packages) => { + // 兼容以前的逻辑,只在拥有 package 参数时,才会更新 packages 字段 + if (!packages) { + return undefined; + } + if (options?.package || packages[name]) { + packages[name] = { + type: packages[name]?.type, + // 如果没有传入 package 信息,则沿用 tango.config.json 中已记录的数据 + // 如果传入了,则全量使用传入的信息,适配可能在某个版本中如 resources 等字段被删除的情况 + ...(options?.package || packages[name]), + version, + }; + } + + return packages; + }) + .update(); + + this.history.push({ + message: HistoryMessage.UpdateDependency, + data: { + [this.packageJson.filename]: this.packageJson.code, + }, + }); + } + + /** + * 移除依赖 + * @param name + */ + removeDependency(name: string) { + this.packageJson + ?.setValue('dependencies', (deps) => { + if (deps[name]) { + delete deps[name]; + } + return deps; + }) + .update(); + + this.tangoConfigJson + ?.setValue('packages', (packages = {}) => { + if (packages?.[name]) { + delete packages[name]; + } + + return packages; + }) + .update(); + + this.history.push({ + message: HistoryMessage.RemoveDependency, + data: { + [this.packageJson.filename]: this.packageJson.code, + }, + }); + } + + /** + * 删除业务组件 + * @param name + */ + removeBizComp(name: string) { + this.tangoConfigJson + ?.setValue('bizDependencies', (deps?: string[]) => { + if (!deps) { + return undefined; + } + return deps.filter((dep) => dep !== name); + }) + .update(); + this.removeDependency(name); + } + + /** + * 添加业务组件 + * @param name + */ + addBizComp( + name: string, + version: string, + options?: { + package?: PackageConfigType; + [x: string]: any; + }, + ) { + const packages = this.tangoConfigJson.getValue('packages'); + this.updateDependency(name, version, { + ...options, + ...(!!packages && { + package: { + ...options?.package, + type: 'bizDependency', + }, + }), + }); + + // 兼容以前的逻辑 + if (!options?.package && !packages) { + // TODO: if tangoConfigJson not found, init this file + this.tangoConfigJson + ?.setValue('bizDependencies', (deps: string[] = []) => { + if (!deps.includes(name)) { + deps.push(name); + } + return deps; + }) + .update(); + } + + this.tangoConfigJson && + this.history.push({ + message: HistoryMessage.UpdateDependency, + data: { + [this.tangoConfigJson.filename]: this.tangoConfigJson.code, + }, + }); + } + + /** + * 删除选中节点 + */ + removeSelectedNode() { + const file = this.selectSource.file; + if (!file) return; + + // 选中的结点一定位于相同的文件中 + this.selectSource.nodes.forEach((node) => { + file.removeNode(node.id); + }); + file.update(); + this.selectSource.clear(); + this.history.push({ + message: HistoryMessage.RemoveNode, + data: { + [file.filename]: file.code, + }, + }); + } + + /** + * 复制选中结点 + */ + copySelectedNode() { + this.copyTempNodes = this.selectSource.nodes as TangoNode[]; + } + + /** + * 粘贴选中结点 + * TODO: 重构该逻辑,抽离出公共的方法 + */ + pasteSelectedNode() { + if (this.selectSource.size !== 1) return; + if (!this.copyTempNodes) return; + + // TODO: 潜在隐患,如果跨页的话,代码里的逻辑调用也要处理 + + const importDeclarations = this.getImportDeclarationByNodes( + this.copyTempNodes.map((node) => node.rawNode), + ); + + importDeclarations.forEach((importDeclaration) => { + this.activeViewModule.updateImportSpecifiers(importDeclaration); + }); + + this.copyTempNodes.forEach((node) => { + this.activeViewModule.insertAfter(this.selectSource.first.id, node.cloneRawNode()); + }); + + this.activeViewModule.update(); + + this.history.push({ + message: HistoryMessage.CloneNode, + data: { + [this.activeViewModule.filename]: this.activeViewModule.code, + }, + }); + } + + /** + * 克隆选中节点,追加到当前结点的后方 + */ + cloneSelectedNode() { + const file = this.selectSource.file; + file + .insertAfter( + this.selectSource.first.id, + this.selectSource.firstNode.cloneRawNode() as JSXElement, + ) + .update(); + + this.history.push({ + message: HistoryMessage.CloneNode, + data: { + [file.filename]: file.code, + }, + }); + } + + /** + * 在目标节点中插入子节点 + * @param targetNodeId 目标节点dnd-id + * @param sourceName 插入的组件名称 + * @returns + */ + insertToNode(targetNodeId: string, sourceName: string | ComponentPrototypeType) { + if (!targetNodeId || !sourceName) { + return; + } + + const sourcePrototype = this.getPrototype(sourceName); + const newNode = prototype2jsxElement(sourcePrototype); + const file = this.getNode(targetNodeId).file; + file.insertChild(targetNodeId, newNode, 'last', sourcePrototype).update(); + this.history.push({ + message: HistoryMessage.InsertNode, + data: { + [file.filename]: file.code, + }, + }); + } + + /** + * 替换目标节点 + */ + replaceNode(targetNodeId: string, sourceName: string | ComponentPrototypeType) { + if (!targetNodeId || !sourceName) { + return; + } + + const sourcePrototype = this.getPrototype(sourceName); + const newNode = prototype2jsxElement(sourcePrototype); + const file = this.getNode(targetNodeId).file; + file.replaceNode(targetNodeId, newNode, sourcePrototype).update(); + this.history.push({ + message: HistoryMessage.ReplaceNode, + data: { + [file.filename]: file.code, + }, + }); + } + + /** + * 在选中节点中插入子节点 + * @param childName 节点名 + */ + insertToSelectedNode(childName: string | ComponentPrototypeType) { + const insertedPrototype = this.getPrototype(childName); + if (insertedPrototype) { + const newNode = prototype2jsxElement(insertedPrototype); + const file = this.selectSource.file; + file.insertChild(this.selectSource.first.id, newNode, 'last', insertedPrototype).update(); + this.history.push({ + message: HistoryMessage.InsertNode, + data: { + [file.filename]: file.code, + }, + }); + } + } + + updateSelectedNodeAttributes( + attributes: Record = {}, + relatedImports: string[] = [], + ) { + const file = this.selectSource.file; + file.updateNodeAttributes(this.selectSource.first.id, attributes, relatedImports).update(); + this.history.push({ + message: HistoryMessage.UpdateAttribute, + data: { + [file.filename]: file.code, + }, + }); + } + + /** + * 将节点拽入视图中 + */ + dropNode() { + const dragSource = this.dragSource; + const dropTarget = dragSource.dropTarget; + + if (!dragSource.prototype || !dropTarget.id) { + // 无效的 drag source 或 drop target,提前退出 + logger.error('invalid dragSource or dropTarget'); + return; + } + + // TODO: 这里需要一个额外的信息,DropTarget 的最近容器节点,用于判断目标元素是否可以被置入容器中 + let dragSourcePrototype = dragSource.prototype; + + let newNode; + if (dragSource.id) { + // 来自画布,完整的克隆该节点 + newNode = dragSource.getNode().cloneRawNode(); + } else { + // 来自物料面板,创建新的初始化节点 + newNode = prototype2jsxElement(dragSource.prototype); + } + + if (!newNode) { + return; + } + + const targetFile = dropTarget.node?.file; + const sourceFile = dragSource.node?.file; + + let isValidOperation = true; + switch (dropTarget.method) { + // 直接往目标节点的 children 里添加一个节点 + case DropMethod.InsertChild: { + targetFile.insertChild(dropTarget.id, newNode, 'last', dragSourcePrototype); + break; + } + case DropMethod.InsertFirstChild: { + targetFile.insertChild(dropTarget.id, newNode, 'first', dragSourcePrototype); + break; + } + // 往目标节点的后边插入一个节点 + case DropMethod.InsertAfter: { + targetFile.insertAfter(dropTarget.id, newNode, dragSourcePrototype); + break; + } + // 往目标节点的前方插入一个节点 + case DropMethod.InsertBefore: { + targetFile.insertBefore(dropTarget.id, newNode, dragSourcePrototype); + break; + } + // 替换目标节点 + case DropMethod.ReplaceNode: { + targetFile.replaceNode(dropTarget.id, newNode, dragSourcePrototype); + break; + } + default: + isValidOperation = false; + break; + } + + // 如果拖拽来源有 ID,表示来自画布 + const isDraggingFromView = !!dragSource.id; + + if (isValidOperation) { + if (isDraggingFromView) { + sourceFile.removeNode(dragSource.id); + } + + this.selectSource.clear(); + + this.history.push({ + message: HistoryMessage.DropNode, + data: { + [targetFile.filename]: targetFile.code, + }, + }); + } + + targetFile.update(); + if (isDraggingFromView && sourceFile.filename !== targetFile.filename) { + sourceFile.update(); + } + + dragSource.clear(); + } + + /** + * 刷新目标文件 + * @param filenames + */ + refresh(filenames: string[]) { + this.dispatchEvent( + new CustomEvent('refresh', { + detail: { + filenames, + entry: this.entry, + }, + }), + ); + } + + /** + * 基于输入结点获得结点依赖的导入声明信息 + * @param nodes + */ + private getImportDeclarationByNodes(nodes: JSXElement[]) { + let names = nodes.reduce((prev, cur) => { + prev = prev.concat(getJSXElementChildrenNames(cur)); + return prev; + }, []); + names = uniq(names); + const importDeclarations = namesToImportDeclarations(names, this.selectSource.file.importMap); + return importDeclarations; + } + + /** + * 根据路由路径获取文件名 + * @param routePath + * @returns + */ + private getFilenameByRoutePath(routePath: string) { + let filename: string; + this.routeModule?.routes.forEach((route) => { + if (isPathnameMatchRoute(routePath, route.path) && route.importPath) { + const absolutePath = route.importPath.replace('.', '/src'); + filename = this.getRealViewFilePath(absolutePath); + } + }); + return filename; + } + + private getRealViewFilePath(filePath: string): string { + // 如果有后缀名直接返回 + if (hasFileExtension(filePath)) { + return filePath; + } + + const possiblePaths = [ + `${filePath}.js`, + `${filePath}.jsx`, + `${filePath}/index.js`, + `${filePath}/index.jsx`, + ]; + + for (const filepath of possiblePaths) { + if (this.files.has(filepath)) { + return filepath; + } + } + } + + /** + * 文件拷贝 + * @param sourcePath + * @param targetPath + */ + private copyFiles(sourceFilePath: string, targetFilePath: string) { + if (this.files.has(sourceFilePath)) { + // 来源是文件 + const file = this.files.get(sourceFilePath); + this.addFile(targetFilePath + '.js', file.cleanCode, file.type); + } else if (this.files.has(sourceFilePath + '/index.js')) { + // 来源是目录 + Array.from(this.files.keys()).forEach((key) => { + if (key.startsWith(sourceFilePath + '/')) { + const sourceFile = this.getFile(key); + this.addFile( + targetFilePath + key.slice(sourceFilePath.length), + sourceFile.cleanCode, + sourceFile.type, + ); + } + }); + } else { + logger.error('copyFiles failed, source: %s, target: %s', sourceFilePath, targetFilePath); + } + } +} diff --git a/packages/core/src/types/index.ts b/packages/core/src/types/index.ts new file mode 100644 index 0000000..fcb073f --- /dev/null +++ b/packages/core/src/types/index.ts @@ -0,0 +1 @@ +export * from './types'; diff --git a/packages/core/src/types/types.ts b/packages/core/src/types/types.ts new file mode 100644 index 0000000..c0b77cc --- /dev/null +++ b/packages/core/src/types/types.ts @@ -0,0 +1,276 @@ +import { JSXElement } from '@babel/types'; + +export type SimulatorMode = 'desktop' | 'tablet' | 'phone'; + +/** + * 文件类型枚举 + */ +export enum FileType { + // js 文件 + Module = 'module', + StoreEntryModule = 'storeEntryModule', + RouteModule = 'routeModule', + BlockEntryModule = 'blockEntryModule', + ServiceModule = 'serviceModule', + StoreModule = 'storeModule', + + JsxViewModule = 'jsxViewModule', + JsonViewModule = 'jsonViewModule', + + // 非 js 文件 + PackageJson = 'packageJson', + TangoConfigJson = 'tangoConfigJson', + AppJson = 'appJson', + File = 'file', + Json = 'json', + Less = 'less', + Scss = 'scss', +} + +export type FileItemType = { + /** + * 文件名 + */ + filename: string; + /** + * 原始代码 + */ + code: string; + /** + * 文件类型 + */ + type?: FileType; +}; + +export type ModulePropsType = FileItemType; + +/** + * 视图节点数据类型 + */ +export type TangoViewNodeDataType = { + /** + * 节点 ID + */ + id: string; + /** + * 父亲节点的 ID + */ + parentId: string; + /** + * 组件名 + */ + component: string; + /** + * 组件的属性集合 + */ + props?: Record; + /** + * 原始的 ast 节点 + */ + rawNode?: T; + /** + * 子节点列表 + */ + children?: Array>; +}; + +/** + * 模块导入的参数类型 + */ +export type ImportDeclarationPayloadType = { + defaultSpecifier?: string; + specifiers?: string[]; + sourcePath: string; +}; + +export type ClassPropertyNodeType = { + reference: string; + propertyName: string; + propertyBody: string; +}; + +/** + * 服务函数参数类型 + */ +export type ServiceFunctionPayloadType = { + [key: string]: any; + /** + * 服务函数名 + */ + name: string; +}; + +/** + * Store 属性类型 + */ +export type StorePropertyType = { + /** + * 属性名 + */ + name: string; + /** + * 对应的源码 + */ + code?: string; + /** + * codemirror 中对应的类型 + * @see https://codemirror.net/6/docs/ref/#autocomplete + */ + type?: + | 'class' + | 'constant' + | 'enum' + | 'function' + | 'interface' + | 'keyword' + | 'method' + | 'namespace' + | 'property' + | 'text' + | 'type' + | 'variable' + | 'object'; +}; + +/* + * 服务函数的操作类型 + */ +export enum ESFOperationType { + ADD = 'add', + UPDATE = 'update', + DELETE = 'delete', +} + +/** + * 服务函数数据源类型 + */ +export enum ESFDataSourceType { + OvermindX = 'ox', + Custom = 'custom', +} + +/** + * 服务函数 HTTP Type + * 云音乐网关只支持 get 和 post + */ +export enum ESFHTTPMethodType { + GET = 'GET', + // PUT = 'PUT', + POST = 'POST', + // PATCH = 'PATCH', + // DELETE = 'DELETE', +} + +/** + * requestType + * headers: Content-Type + */ +export enum ESFHTTRequestType { + 'application/json' = 'json', + 'application/x-www-form-urlencoded' = 'x-www-form-urlencoded', +} + +/** + * 路由解析数据 + */ +export type RouteDataType = { + /** + * 路由 + */ + path: string; + /** + * 组件名 + */ + component?: string; + /** + * 导入路径 + */ + importPath?: string; + [key: string]: any; +}; + +/** + * 页面配置数据 + */ +export type PageConfigType = { + /** + * 路由 + */ + path: string; + /** + * 父菜单路由 + */ + parentPath?: string; + /** + * 页面标题 + */ + name?: string; + /** + * PMS 权限码 + */ + privilegeCode?: string; +}; + +/** + * 项目数据 + */ +export type ProjectDataType = { + /** + * 页面列表 + */ + pages: Array<{ + title?: string; + filename: string; + path?: string; + includes?: { variables: string[] }; + }>; + /** + * 模型列表 + */ + stores: { + [key: string]: { + filename: string; + }; + }; + /** + * 服务列表 + */ + services: { + [key: string]: { + filename: string; + functions: string[]; + }; + }; +}; + +export type InsertChildPositionType = 'first' | 'last'; + +/** + * tango.config.json 中 packages 定义 + */ +export type PackageConfigType = { + /** + * 依赖类型 + */ + type?: 'baseDependency' | 'bizDependency' | 'dependency'; + /** + * 版本号 + */ + version?: string; + /** + * umd 资源全局变量名 + */ + library?: string; + /** + * 描述 + */ + description?: string; + /** + * 基础包 umd 资源 + */ + resources?: string[]; + /** + * 设计态 umd 资源 + */ + designerResources?: string[]; +}; diff --git a/packages/core/tests/ast.test.ts b/packages/core/tests/ast.test.ts new file mode 100644 index 0000000..9d7b360 --- /dev/null +++ b/packages/core/tests/ast.test.ts @@ -0,0 +1,43 @@ +import { + object2node, + serviceConfig2Node, + isValidCode, + isValidExpressionCode, +} from '../src/helpers'; + +describe('helpers', () => { + test('isValidCode', () => { + expect(isValidCode('() => { hello world }')).toBeFalsy(); + expect(isValidCode('function() {}')).toBeFalsy(); + }); + + test('isValidExpression', () => { + expect(isValidExpressionCode('() => { }')).toBeTruthy(); + expect(isValidExpressionCode('1')).toBeTruthy(); + expect(isValidExpressionCode('"hello"')).toBeTruthy(); + expect(isValidExpressionCode('false')).toBeTruthy(); + expect(isValidExpressionCode('{ bizId: "vip", type: "category" }')).toBeTruthy(); + expect(isValidExpressionCode('[1,2,3]')).toBeTruthy(); + expect(isValidExpressionCode('
hello
')).toBeTruthy(); + expect(isValidExpressionCode('
hello
')).toBeTruthy(); + }); + + test('object2node', () => { + const node = object2node({ + url: '/api/backend/clientversion/appmarket/list', + method: 'POST', + formatter: '', + apiId: 647341, + }); + expect(node.type).toEqual('ObjectExpression'); + }); + + test('serviceConfig2Node', () => { + const node = serviceConfig2Node({ + formatter: '', + method: 'get', + url: 'https://nei.hz.netease.com/api/apimock-v2/cc974ffbaa7a85c77f30e4ce67deb67f/api/app-list', + } as any); + expect(node.type).toEqual('ObjectExpression'); + }); +}); diff --git a/packages/core/tests/engine.test.ts b/packages/core/tests/engine.test.ts new file mode 100644 index 0000000..0419b92 --- /dev/null +++ b/packages/core/tests/engine.test.ts @@ -0,0 +1,30 @@ +import { createEngine } from '../src'; + +describe('engine', () => { + it('engine init', () => { + const engine = createEngine({ + entry: '/src/index.js', + }); + expect(engine.workspace.entry).toEqual('/src/index.js'); + }); + + it('engine init without required files', () => { + const engine = createEngine({ + entry: '/src/index.js', + files: [ + { + filename: '/src/index.js', + code: 'console.log("hello")', + }, + { + filename: '/package.json', + code: JSON.stringify({ name: 'sample' }), + }, + ], + }); + expect(engine.workspace.activeViewModule).toBeUndefined(); + expect(engine.workspace.serviceModule).toBeUndefined(); + expect(engine.workspace.routeModule).toBeUndefined(); + expect(engine.workspace?.storeModules.length).toEqual(0); + }); +}); diff --git a/packages/core/tests/helpers.test.ts b/packages/core/tests/helpers.test.ts new file mode 100644 index 0000000..0b09dd1 --- /dev/null +++ b/packages/core/tests/helpers.test.ts @@ -0,0 +1,283 @@ +import { JSXElement } from '@babel/types'; +import { + code2ast, + code2expression, + value2node, + value2code, + expression2code, + upperCamelCase, + expressionCode2ast, + typeOf, + isPathnameMatchRoute, + namesToImportDeclarations, + getBlockNameByFilename, + getRelativePath, + isFilepath, + isValidComponentName, + getFilepath, + getPrivilegeCode, + isPlainObject, + getJSXElementAttributes, + inferFileType, + camelCase, + deepCloneNode, +} from '../src/helpers'; +import { FileType } from '../src/types'; + +describe('helpers', () => { + it('code2ast', () => { + expect(code2ast('function App() {}').type).toEqual('File'); + }); + + it('code2expression: null', () => { + expect(code2expression('')).toBeUndefined(); + }); + + it('code2expression: object', () => { + const code = ` + { + foo: 'bar', + } + `; + const node = code2expression(code); + expect(node.type).toEqual('ObjectExpression'); + }); + + it('code2expression: arrow function', () => { + expect(code2expression('() => {};').type).toEqual('ArrowFunctionExpression'); + }); + + it('code2expression: list', () => { + const code = ` + [ + { label: 'foo', value: 'foo' }, + { label: 'bar', value: 'bar' }, + ] + `; + const node = code2expression(code); + expect(node.type).toEqual('ArrayExpression'); + }); + + it('code2expression: jsxElement', () => { + const node = code2expression(''); + expect(node.type).toEqual('JSXElement'); + }); + + it('parse jsxElement attributes', () => { + const node = code2expression( + "", + ); + const attributes = getJSXElementAttributes(node as JSXElement); + expect(attributes).toEqual({ + dataIndex: 'col', + enumMap: { + 1: '已解决', + 2: '未解决', + }, + }); + }); + + it('code2expression: closed jsxElement', () => { + const node = code2expression(''); + expect(node.type).toEqual('JSXElement'); + }); + + it('value2node: number', () => { + expect(value2node(1).type).toEqual('NumericLiteral'); + }); + + it('value2node: string', () => { + expect(value2node('hello').type).toEqual('StringLiteral'); + }); + + it('value2node: arrowFunction', () => { + const node = value2node(() => {}); + expect(node.type).toEqual('ArrowFunctionExpression'); + }); + + it('value2node: object', () => { + const node = value2node({ + num: 1, + str: 'string', + fn: () => {}, + nest: '{this.hello}', + }); + expect(node.type).toEqual('ObjectExpression'); + }); + + it('expression2code: functionExpression', () => { + expect(expression2code(code2expression('function(){}'))).toEqual('function () {}'); + }); + + it('expression2code: arrowFunctionExpression', () => { + expect(expression2code(code2expression('() => {}'))).toEqual('() => {}'); + }); + + it('expression2code: memberExpression', () => { + expect(expression2code(code2expression('this.foo.bar'))).toEqual('this.foo.bar'); + }); + + it('expression2code: identifier', () => { + expect(expression2code(code2expression('data'))).toEqual('data'); + }); + + it('expressionCode2ast', () => { + expect(expressionCode2ast('').type).toEqual('File'); + expect(expressionCode2ast('{}').type).toEqual('File'); + expect(expressionCode2ast('() => ').type).toEqual('File'); + expect(expressionCode2ast('{() => }').type).toEqual('File'); + }); +}); + +describe('string helpers', () => { + it('camelCase', () => { + expect(camelCase('foo')).toEqual('foo'); + expect(camelCase('foo-bar')).toEqual('fooBar'); + }); + + it('upperCamelCase', () => { + expect(upperCamelCase('foo')).toEqual('Foo'); + expect(upperCamelCase('foo-bar')).toEqual('FooBar'); + }); + + it('value2code: empty array', () => { + expect(value2code([])).toEqual('[]'); + }); + + it('value2code: array', () => { + expect(value2code([{ label: 'foo' }])).toEqual('[{ label: "foo" }]'); + }); + + it('value2code: object', () => { + expect(value2code({ width: 200 })).toEqual('{ width: 200 }'); + }); + + it('typeOf', () => { + expect(typeOf()).toBe('undefined'); + expect(typeOf('')).toBe('string'); + expect(typeOf('hello')).toBe('string'); + expect(typeOf(5)).toBe('number'); + expect(typeOf({})).toBe('object'); + expect(typeOf([])).toBe('array'); + }); + + it('isPathnameMatchRoute', () => { + expect(isPathnameMatchRoute('/user/123', '/user/:id')).toBeTruthy(); + expect(isPathnameMatchRoute('/user/123?foo=bar', '/user/:id')).toBeTruthy(); + expect(isPathnameMatchRoute('/user/:id', '/user/:id')).toBeTruthy(); + expect(isPathnameMatchRoute('/user', '/user')).toBeTruthy(); + expect(isPathnameMatchRoute('/user/123/modify/123', '/user/:uid/modify/:rid')).toBeTruthy(); + expect(isPathnameMatchRoute('/user/123', '/user')).toBeFalsy(); + }); + + it('namesToImportDeclarations', () => { + expect( + namesToImportDeclarations(['Button', 'Box', 'React'], { + Button: { package: '@music/tango-cms' }, + Box: { package: '@music/tango-cms' }, + React: { package: 'react', isDefault: true }, + }), + ).toEqual([ + { sourcePath: '@music/tango-cms', specifiers: ['Button', 'Box'] }, + { sourcePath: 'react', defaultSpecifier: 'React' }, + ]); + }); + + it('getBlockNameByFilename', () => { + expect(getBlockNameByFilename('/src/blocks/local-comp/index.js')).toEqual('LocalComp'); + }); + + it('getRelativePath', () => { + expect(getRelativePath('/src/pages/index.js', '/src/blocks/sample-block/index.js')).toEqual( + '../blocks/sample-block/index.js', + ); + // TODO: fix me + // expect(getRelativePath('/src/pages/', '/src/pages/index.js')).toEqual('./index.js'); + }); + + it('getFilepath', () => { + expect(getFilepath('/user', '/src/pages')).toBe('/src/pages/user'); + expect(getFilepath('/user/:id', '/src/pages')).toBe('/src/pages/user@id'); + expect(getFilepath('/user/detail', '/src/pages')).toBe('/src/pages/user-detail'); + }); + + it('isFilepath', () => { + expect(isFilepath('./pages/index.js')).toBeTruthy(); + expect(isFilepath('../pages/index.js')).toBeTruthy(); + expect(isFilepath('./pages/index.css')).toBeTruthy(); + expect(isFilepath('/src/pages/index.js')).toBeTruthy(); + expect(isFilepath('path')).toBeFalsy(); + expect(isFilepath('path-browserify')).toBeFalsy(); + expect(isFilepath('@music/one')).toBeFalsy(); + }); + + it('getPrivilegeCode', () => { + expect(getPrivilegeCode('sample-app', '/user')).toBe('sample-app@%user'); + expect(getPrivilegeCode('sample-app', '/user/:id')).toBe('sample-app@%user%:id'); + }); + + it('isValidComponentName', () => { + expect(isValidComponentName('Button')).toBeTruthy(); + expect(isValidComponentName('Button.Group')).toBeTruthy(); + }); + + it('upperCamelCase', () => { + expect(upperCamelCase('about')).toBe('About'); + expect(upperCamelCase('not-found')).toBe('NotFound'); + expect(upperCamelCase('@music/input')).toBe('MusicInput'); + expect(upperCamelCase('@music/ct-input')).toBe('MusicCtInput'); + // TODO: FIXME + // expect(upperCamelCase('-not-found')).toBe('NotFound'); + // expect(upperCamelCase('not_found')).toBe('NotFound'); + // expect(upperCamelCase('_not_found')).toBe('NotFound'); + }); + + it('isPlainObject', () => { + expect(isPlainObject({})).toBeTruthy(); + expect(isPlainObject({ foo: 'foo' })).toBeTruthy(); + expect(isPlainObject(null)).toBeFalsy(); + expect(isPlainObject(undefined)).toBeFalsy(); + }); + + it('inferFileType', () => { + expect(inferFileType('/src/pages/template.js')).toBe(FileType.JsxViewModule); + expect(inferFileType('/src/pages/template.jsx')).toBe(FileType.JsxViewModule); + expect(inferFileType('/src/pages/template.ejs')).toBe(FileType.File); + expect(inferFileType('/src/index.scss')).toBe(FileType.Scss); + expect(inferFileType('/src/index.less')).toBe(FileType.Less); + expect(inferFileType('/src/index.json')).toBe(FileType.Json); + }); +}); + +describe('schema helpers', () => { + const schema = { + id: 'Section:1', + component: 'Section', + props: { + id: '111', + }, + children: [ + { + id: 'Button:1', + component: 'Button', + props: { + id: '222', + }, + }, + { + id: 'Button:2', + component: 'Button', + props: { + id: '333', + }, + }, + ], + }; + const cloned = deepCloneNode(schema); + console.log(cloned); + expect(cloned.props.id).toBe(schema.props.id); + expect(cloned.children[0].props.id).toBe(schema.children[0].props.id); + + expect(cloned.id).not.toBe(schema.id); + expect(cloned.children[0].id).not.toBe(schema.children[0].id); +}); diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 0000000..4082f16 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/core/tsconfig.prod.json b/packages/core/tsconfig.prod.json new file mode 100644 index 0000000..d84a5a3 --- /dev/null +++ b/packages/core/tsconfig.prod.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.prod.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src/**/*"] +} diff --git a/packages/designer/README.md b/packages/designer/README.md new file mode 100644 index 0000000..c708cd6 --- /dev/null +++ b/packages/designer/README.md @@ -0,0 +1,5 @@ +# Tango 低代码设计器 + +## 使用文档 + +https://tango-docs.st.netease.com/ diff --git a/packages/designer/package.json b/packages/designer/package.json new file mode 100644 index 0000000..d1d08d2 --- /dev/null +++ b/packages/designer/package.json @@ -0,0 +1,57 @@ +{ + "name": "@music163/tango-designer", + "version": "0.1.1", + "description": "lowcode designer", + "keywords": [ + "react" + ], + "author": "wwsun ", + "homepage": "", + "license": "MIT", + "main": "lib/cjs/index.js", + "module": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "files": [ + "dist", + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/netease/tango.git" + }, + "scripts": { + "clean": "rimraf lib/", + "build": "yarn clean && yarn build:esm && yarn build:cjs", + "build:esm": "tsc --project tsconfig.prod.json --outDir lib/esm/ --module ES2020", + "build:cjs": "tsc --project tsconfig.prod.json --outDir lib/cjs/ --module CommonJS", + "prepublishOnly": "yarn build" + }, + "peerDependencies": { + "react": ">= 16.8.0" + }, + "dependencies": { + "@ant-design/icons": "^4.8.0", + "@music163/request": "^0.1.0", + "@music163/tango-context": "^0.1.1", + "@music163/tango-core": "^0.1.1", + "@music163/tango-helpers": "^0.1.1", + "@music163/tango-sandbox": "^0.1.1", + "@music163/tango-setting-form": "^0.1.1", + "@music163/tango-ui": "^0.1.1", + "antd": "^4.24.2", + "cash-dom": "^8.1.2", + "classnames": "^2.3.2", + "coral-system": "^1.0.5", + "date-fns": "^2.29.2", + "lodash-es": "^4.17.21", + "react-resizable": "^3.0.5", + "semver": "^7.3.8" + }, + "devDependencies": { + "@types/react-resizable": "^3.0.4" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + } +} diff --git a/packages/designer/src/context.ts b/packages/designer/src/context.ts new file mode 100644 index 0000000..9030560 --- /dev/null +++ b/packages/designer/src/context.ts @@ -0,0 +1,30 @@ +import { createContext, TangoRemoteServicesType } from '@music163/tango-helpers'; +import type { DndQuery } from './framework'; + +/** + * TODO: 是不是直接合并到 Context 中 + */ +export interface IDesignerContext { + /** + * 沙箱查询实例 + */ + sandboxQuery: DndQuery; + /** + * 远程服务 + */ + remoteServices?: TangoRemoteServicesType; +} + +const [DesignerProvider, useDesigner] = createContext({ + name: 'DesignerContext', +}); + +export { DesignerProvider }; + +export const useSandboxQuery = () => { + return useDesigner()?.sandboxQuery; +}; + +export const useRemoteServices = () => { + return useDesigner()?.remoteServices; +}; diff --git a/packages/designer/src/designer.tsx b/packages/designer/src/designer.tsx new file mode 100644 index 0000000..852e527 --- /dev/null +++ b/packages/designer/src/designer.tsx @@ -0,0 +1,51 @@ +import React, { useEffect } from 'react'; +import { SystemProvider } from 'coral-system'; +import { ConfigProvider } from 'antd'; +import zhCN from 'antd/lib/locale/zh_CN'; +import { TangoEngineProvider, ITangoEngineContext } from '@music163/tango-context'; +import { DesignerProvider, IDesignerContext } from './context'; +import { theme as baseTheme } from './theme'; +import { createFromIconfontCN } from '@ant-design/icons'; + +export interface DesignerProps extends IDesignerContext, ITangoEngineContext { + /** + * 主题包 + */ + theme?: any; + /** + * 自定义图表库svg脚本地址 + */ + iconfontScriptUrl?: string; + children?: React.ReactNode; +} + +/** + * 设计器状态和设置容器 + * @param props + * @returns + */ +export function Designer(props: DesignerProps) { + const { + engine, + theme: themeProp, + sandboxQuery, + remoteServices = {}, + iconfontScriptUrl = '//at.alicdn.com/t/c/font_2891794_lzc7rtwuzf.js', + children, + } = props; + const theme = themeProp ?? baseTheme; + useEffect(() => { + createFromIconfontCN({ + scriptUrl: iconfontScriptUrl, + }); + }, [iconfontScriptUrl]); + return ( + + + + {children} + + + + ); +} diff --git a/packages/designer/src/framework/designer-panel.tsx b/packages/designer/src/framework/designer-panel.tsx new file mode 100644 index 0000000..21c0e02 --- /dev/null +++ b/packages/designer/src/framework/designer-panel.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { ReactComponentProps } from '@music163/tango-helpers'; + +export interface DesignerPanelProps extends ReactComponentProps { + /** + * 品牌图标 + */ + logo?: React.ReactNode; + /** + * 项目描述 + */ + description?: React.ReactNode; + /** + * 主行动点 + */ + actions?: React.ReactNode; + /** + * 自定义头部节点 + */ + header?: React.ReactNode; +} + +/** + * 设计器面板 + */ +export function DesignerPanel(props: DesignerPanelProps) { + const { header, logo, description, actions, children } = props; + return ( + + {header ?? ( + + + {logo} + {description} + + {actions} + + )} + + {children} + + + ); +} diff --git a/packages/designer/src/framework/dnd/dnd-query.ts b/packages/designer/src/framework/dnd/dnd-query.ts new file mode 100644 index 0000000..47ec276 --- /dev/null +++ b/packages/designer/src/framework/dnd/dnd-query.ts @@ -0,0 +1,212 @@ +import $, { Selector } from 'cash-dom'; +import { ISelectedItemData, MousePoint, SLOT } from '@music163/tango-helpers'; +import { + getElementData, + getElementBoundingData, + buildQueryBySlotId, + getRelativePoint, +} from '../../helpers'; + +export const DRAGGABLE_SELECTOR = `[${SLOT.dnd}]`; + +interface DndQueryOptions { + /** + * DOM 查询上下文选择器 + * TODO: 是不是可以合并成一个 API + */ + context?: string; + /** + * 二级上下文,适用于 iframe 中的 iframe + */ + secondaryContext?: string; + /** + * 上层容器选择器 + */ + container?: string; +} + +export class DndQuery { + /** + * dnd 上下文选择器,如果是 iframe,则是 iframe 里的 window 对象 + */ + private readonly _context: string; + /** + * dnd 二级上下文选择器,适用于存在 iframe 多层嵌套的场景 + */ + private readonly _secondaryContext: string; + /** + * 拖拽沙箱的外层容器选择器,用于辅助计算相对位置 + */ + private readonly _container: string; + + get container() { + return this._container ? $(this._container).get(0) : undefined; + } + + get context() { + if (this._context) { + // return the document object of iframe + return this._secondaryContext + ? $(this._context).contents().find(this._secondaryContext).contents().get(0) // iframe in iframe + : $(this._context).contents().get(0); // iframe + } + + return; + } + + /** + * 是否是隔离的沙箱环境,目前仅 iframe 环境为隔离沙箱 + */ + get isSeparated() { + if (this.context && 'defaultView' in this.context) { + return true; + } + return false; + } + + get window() { + if (this.context && 'defaultView' in this.context) { + return (this.context as unknown as Document).defaultView; + } + // 否则返回当前的 window + return window; + } + + get scrollTop() { + if (this.context && 'documentElement' in this.context) { + return (this.context as unknown as Document).documentElement.scrollTop; + } + + return 0; + } + + constructor({ context, secondaryContext, container }: DndQueryOptions) { + this._context = context; + this._secondaryContext = secondaryContext; + this._container = container; + } + + get(selector: Selector) { + return $(selector, this.context); + } + + getElement(selector: Selector) { + return $(selector, this.context).get(0); + } + + getElementBySlotId(slotId: string) { + return this.getElement(buildQueryBySlotId(slotId)); + } + + getElementData(element: HTMLElement) { + return getElementData(element, this.container); + } + + getElementBounding(element: HTMLElement) { + return getElementBoundingData(element, this.container); + } + + /** + * 获取相对容器的位置 + * @param point + */ + getRelativePoint(point: MousePoint) { + return getRelativePoint(point, this.container); + } + + isChildOfElement(parentElementSlotId: string, childElementSlotId: string) { + return !!this.get(buildQueryBySlotId(parentElementSlotId)).has( + this.getElementBySlotId(childElementSlotId), + ).length; + } + + getDraggableParents(selector: Selector) { + const closestElement = this.get(selector).closest(DRAGGABLE_SELECTOR).get(0); + const parents = this.get(selector).parents(DRAGGABLE_SELECTOR).get(); + + // 对于只有一层结构的组件,需要额外将自身加到列表里 + if (parents[0] !== closestElement) { + parents.unshift(closestElement); + } + return parents; + } + + /** + * 获取可拖拽的子元素 + * @param selector + * @param locateSelector + * @returns + */ + getDraggableDescendants(selector: Selector, descendantSelector: string = DRAGGABLE_SELECTOR) { + return this.get(selector).find(descendantSelector).get(); + } + + getDraggableParentsData(selector: Selector, hasParents: boolean): ISelectedItemData { + const targets = this.getDraggableParents(selector); + + if (!targets.length) { + return; + } + + if (hasParents) { + const parents = targets.map((target) => this.getElementData(target)); + const closet = parents[0]; + + return { + ...closet, + parents: parents.slice(1), + }; + } + + return this.getElementData(targets[0]); + } + + /** + * 获得最近的一个可拖拽的父结点的所有子结点 + * @param selector + * @param startPoint + * @returns + */ + getDraggableElementsDataByArea(selector: Selector, startPoint: MousePoint, endPoint: MousePoint) { + const firstChildElement = this.get(selector) + .closest(DRAGGABLE_SELECTOR) + .find(DRAGGABLE_SELECTOR) + .get(0); + if (!firstChildElement) { + return []; + } + let children = this.get(firstChildElement).siblings(DRAGGABLE_SELECTOR).get(); + children = [firstChildElement, ...children]; + const list: ISelectedItemData[] = []; + children.forEach((item) => { + const data = this.getElementData(item); + const { left, top } = data.bounding; + if (left > startPoint.x && top > startPoint.y && left < endPoint.x && top < endPoint.y) { + list.push(data); + } + }); + return list; + } + + scrollTo(leftOffset: number, topOffset: number) { + this.window.scrollTo(leftOffset, topOffset); + } + + reload() { + let iframe; + if (this._context) { + // ViteSandbox + iframe = $(this._context).contents().get(0); + } else { + // CodeSandbox + iframe = this.context; + } + + if (iframe && 'location' in iframe) { + (iframe as unknown as Document)?.location.reload(); + } + } +} + +// 兼容旧版 API +export const DomQuery = DndQuery; diff --git a/packages/designer/src/framework/dnd/hotkey.ts b/packages/designer/src/framework/dnd/hotkey.ts new file mode 100644 index 0000000..4fd89ea --- /dev/null +++ b/packages/designer/src/framework/dnd/hotkey.ts @@ -0,0 +1,30 @@ +/** + * 快捷键 + */ +export class Hotkey { + private readonly hotkeyMap = {}; + + constructor(hotkeys: Record) { + Object.keys(hotkeys).forEach((hotkey) => { + const keys = hotkey.split(','); + keys.forEach((key) => { + if (key) { + key = fixKey(key); + this.hotkeyMap[key] = hotkeys[hotkey]; + } + }); + }); + } + + run(hotkey: string) { + const callback = this.hotkeyMap[hotkey]; + callback?.(); + } +} + +function fixKey(key: string) { + if (key === 'esc') { + return 'escape'; + } + return key.replaceAll('command', 'meta'); +} diff --git a/packages/designer/src/framework/dnd/index.ts b/packages/designer/src/framework/dnd/index.ts new file mode 100644 index 0000000..f4c232c --- /dev/null +++ b/packages/designer/src/framework/dnd/index.ts @@ -0,0 +1,2 @@ +export * from './use-dnd'; +export * from './dnd-query'; diff --git a/packages/designer/src/framework/dnd/use-dnd.ts b/packages/designer/src/framework/dnd/use-dnd.ts new file mode 100644 index 0000000..aff025c --- /dev/null +++ b/packages/designer/src/framework/dnd/use-dnd.ts @@ -0,0 +1,436 @@ +import React, { useEffect, useMemo } from 'react'; +import { DropMethod, FileType, Designer, IWorkspace } from '@music163/tango-core'; +import { ISelectedItemData, events, getHotkey } from '@music163/tango-helpers'; +import { + setElementStyle, + getElementCSSDisplay, + distanceToRect, + getDragGhostElement, +} from '../../helpers'; +import { DndQuery, DRAGGABLE_SELECTOR } from '../dnd'; +import { Hotkey } from './hotkey'; +import { SelectModeType } from '../../types'; + +interface UseDndProps { + workspace: IWorkspace; + designer: Designer; + /** + * 沙箱内的 DOM 查询操作 + */ + sandboxQuery: DndQuery; + /** + * 选择模式 + * - point 点选 + * - area 框选 + */ + selectMode?: SelectModeType; + /** + * 沙箱视图变化时的回调 + * @param data + */ + onViewChange?: (data: any) => void; +} + +export function useDnd({ + sandboxQuery, + designer, + workspace, + selectMode = 'point', + onViewChange, +}: UseDndProps) { + const selectSource = workspace.selectSource; + + useEffect(() => { + workspace.ready(); + }, [workspace]); + + const hotkey = useMemo(() => { + return new Hotkey({ + esc: () => { + workspace.selectSource.clear(); + }, + 'del,backspace': () => { + workspace.removeSelectedNode(); + }, + 'command+c,ctrl+c': () => { + workspace.copySelectedNode(); + }, + 'command+v,ctrl+v': () => { + workspace.pasteSelectedNode(); + }, + }); + }, [workspace]); + + let moveListener: any; + let upListener: any; + + const onMouseDown = (e: React.MouseEvent) => { + if (designer.isPreview) { + return; + } + + const point = sandboxQuery.getRelativePoint({ x: e.clientX, y: e.clientY }); + selectSource.setStart({ + point, + element: e.target as HTMLElement, + }); + + const watchElement = sandboxQuery.context || sandboxQuery.container; + + moveListener = events.on(watchElement, 'mousemove', onMouseMove); + upListener = events.on(watchElement, 'mouseup', onMouseUp); + }; + + const onMouseMove = (e: React.MouseEvent) => { + const point = sandboxQuery.getRelativePoint({ x: e.clientX, y: e.clientY }); + setElementStyle('.SelectionMask', { + width: Math.abs(selectSource.start?.point.x - point.x) + 'px', + height: Math.abs(selectSource.start?.point.y - point.y) + 'px', + left: Math.min(selectSource.start?.point.x, point.x) + 'px', + top: Math.min(selectSource.start?.point.y, point.y) + 'px', + }); + }; + + const onMouseUp = (e: React.MouseEvent) => { + moveListener?.off(); + upListener?.off(); + const point = sandboxQuery.getRelativePoint({ x: e.clientX, y: e.clientY }); + if (point.x === selectSource.start?.point.x && point.y === selectSource.start?.point.y) { + // select current + const data = sandboxQuery.getDraggableParentsData(e.target as HTMLElement, true); + if (data && data.id) { + selectSource.select(data); + } + } else { + // select area + setElementStyle('.SelectionMask', { + width: 0, + height: 0, + left: 0, + top: 0, + }); + const targets = sandboxQuery.getDraggableElementsDataByArea( + selectSource.start.element, + selectSource.start.point, + point, + ); + selectSource.select(targets); + } + }; + + const onClick = (e: React.MouseEvent) => { + const data = sandboxQuery.getDraggableParentsData(e.target as HTMLElement, true); + if (data && data.id) { + selectSource.select(data); + } + }; + + const onDragStart = (e: React.DragEvent) => { + e.dataTransfer.effectAllowed = 'move'; + const dragSourceData = sandboxQuery.getDraggableParentsData(e.target as HTMLElement, false); + if (!dragSourceData || !dragSourceData.name) { + // 如果没有找到可拖拽元素,直接退出 + return; + } + + const prototype = workspace.componentPrototypes.get(dragSourceData.name); + if (!prototype) { + return; + } + + const { canDrag } = prototype.rules || {}; + if (canDrag && !canDrag()) { + e.preventDefault(); + e.stopPropagation(); + return; + } + + workspace.dragSource.set(dragSourceData); + + const ghost = getDragGhostElement(); + e.dataTransfer.setDragImage(ghost, 0, 0); + }; + + const onDragEnd = () => { + workspace.dragSource.clear(); + }; + + let latestEnterId: string; + + const onDrop = (e: React.DragEvent) => { + e.preventDefault(); + if ( + !workspace.dragSource.prototype || // 没有原型 + !workspace.dragSource.dropTarget.id || // 没有明确的着陆点 + workspace.dragSource.id === workspace.dragSource.dropTarget.id || // 着陆点为自己 + sandboxQuery.isChildOfElement(workspace.dragSource.id, workspace.dragSource.dropTarget.id) // 自己是着陆点的父元素 + ) { + return; + } + + workspace.dropNode(); + latestEnterId = undefined; + moveListener?.off(); + upListener?.off(); + }; + + const onDragEnter = (e: React.DragEvent) => { + if (!workspace.dragSource.data) { + return; + } + + const closetDropTargetData = sandboxQuery.getDraggableParentsData( + e.target as HTMLElement, + false, + ); + if (!closetDropTargetData || !closetDropTargetData.id) { + return; + } + + // 不重复触发次逻辑 + if (latestEnterId === closetDropTargetData.id) { + return; + } + + // 记录上次进入的区域 ID + latestEnterId = closetDropTargetData.id; + + const closetDropTargetElement = closetDropTargetData.element; + const closetDropTargetBounding = closetDropTargetData.bounding; + const closetDropTargetDisplay = getElementCSSDisplay(closetDropTargetElement); + const closetDropTargetPrototype = workspace.componentPrototypes.get(closetDropTargetData.name); + + // 如果探测的最近着陆点为拖拽的元素自己的话,则跳过检测 + if (closetDropTargetData.id === workspace.dragSource.id) { + return; + } + + if (!closetDropTargetPrototype) { + return; + } + + // 校验结点的拖拽规则 + if (closetDropTargetPrototype.rules) { + const { canMoveIn } = closetDropTargetPrototype.rules; + if (canMoveIn && !canMoveIn(workspace.dragSource.name)) { + return; + } + } + + let nextState: ISelectedItemData; + let nextMethod: DropMethod; + + if (closetDropTargetPrototype.type === 'placeholder') { + nextState = closetDropTargetData; + nextMethod = DropMethod.ReplaceNode; + } else if (closetDropTargetPrototype.hasChildren) { + let descendantSelector = DRAGGABLE_SELECTOR; + if (closetDropTargetPrototype.rules?.childrenContainerSelector) { + descendantSelector = `${closetDropTargetPrototype.rules?.childrenContainerSelector} ${DRAGGABLE_SELECTOR}`; + } + const children = sandboxQuery.getDraggableDescendants( + closetDropTargetElement, + descendantSelector, + ); + + if (children.length) { + // 容器组件中有子组件,定位到与当前位置最近的子元素,插入位置为该子元素的尾部 + let closetChildElement; + let closetDistance; + for (let i = 0; i < children.length; i++) { + const distance = distanceToRect(e, children[i].getBoundingClientRect()); + if (!closetDistance || distance < closetDistance) { + closetDistance = distance; + closetChildElement = children[i]; + } + } + const closetChildElementData = sandboxQuery.getElementData(closetChildElement); + + if (!closetChildElementData.id || !closetChildElementData.name) { + // 如果子元素没有特定的属性,直接提前结束 + return; + } + + const closetChildElementBounding = closetChildElementData.bounding; + const closetChildElementDisplay = getElementCSSDisplay(closetChildElement); + + nextState = closetChildElementData; + + switch (closetChildElementDisplay) { + case 'inline': + case 'inline-block': + case 'inline-flex': + case 'inline-grid': { + // 行内元素 + if (e.pageX < closetChildElementBounding.left + closetChildElementBounding.width / 2) { + nextMethod = DropMethod.InsertBefore; + } else { + nextMethod = DropMethod.InsertAfter; + } + break; + } + default: { + // 块级元素 + if (e.pageY < closetChildElementBounding.top + closetChildElementBounding.height / 2) { + nextMethod = DropMethod.InsertBefore; + } else { + nextMethod = DropMethod.InsertAfter; + } + break; + } + } + } else { + // 没有孩子节点的容器节点 + nextState = closetDropTargetData; + nextMethod = DropMethod.InsertChild; + } + } else { + // dropTarget is not a container + nextState = closetDropTargetData; + + switch (closetDropTargetDisplay) { + case 'inline': + case 'inline-block': + case 'inline-flex': + case 'inline-grid': + case 'table-cell': { + // 行内元素 + if ( + closetDropTargetBounding.left < e.pageX && + e.pageX < closetDropTargetBounding.left + closetDropTargetBounding.width / 2 + ) { + nextMethod = DropMethod.InsertBefore; + } else if ( + closetDropTargetBounding.left + closetDropTargetBounding.width / 2 < e.pageX && + e.pageX < closetDropTargetBounding.left + closetDropTargetBounding.width + ) { + nextMethod = DropMethod.InsertAfter; + } + break; + } + default: { + // 块级元素 + if ( + closetDropTargetBounding.top < e.pageY && + e.pageY < closetDropTargetBounding.top + closetDropTargetBounding.height / 2 + ) { + nextMethod = DropMethod.InsertBefore; + } else { + nextMethod = DropMethod.InsertAfter; + } + break; + } + } + } + + const closetDropTargetNode = workspace.getNode(nextState.id); + + // 区块不能拖拽到区块中 + if ( + workspace.dragSource.prototype.type === 'block' && + closetDropTargetNode.file.type === FileType.BlockEntryModule + ) { + return; + } + + if (nextState) { + // 更新拖拽放置的目标元素 + workspace.dragSource.dropTarget.set(nextState, nextMethod); + } + }; + + const onDragOver = (e: React.DragEvent) => { + e.preventDefault(); + e.dataTransfer.dropEffect = 'move'; + }; + + let timer = 0; + // 目前只有 iframe 的沙箱需要监听 + const onScroll = () => { + if (!sandboxQuery.context) { + return; + } + + if (selectSource.isSelected) { + if (timer) { + cancelAnimationFrame(timer); + } + // TIP: 这里根据沙箱的滚动去修正选中框的位置 + timer = requestAnimationFrame(() => { + // 重新获取选中元素的外观数据 + selectSource.selected.forEach((item) => { + if (item.element) { + const bounding = sandboxQuery.getElementBounding(item.element); + setElementStyle(`[data-selection-id="${item.id}"]`, { + transform: `translate(${bounding.left}px, ${bounding.top}px)`, + }); + } + }); + }); + } + }; + + const onKeyDown = (e: React.KeyboardEvent) => { + const isInputElement = isInputElements((e.target as HTMLElement).nodeName); + // 禁用输入事件的触发的快捷键逻辑 + if (!isInputElement) { + const key = getHotkey(e); + hotkey.run(key); + } + }; + + const onTango = (e: CustomEvent) => { + const detail = e.detail || {}; + + switch (detail.type) { + case 'insertChild': + workspace.insertToNode(detail.targetId, detail.sourceName); + break; + case 'replaceNode': + workspace.replaceNode(detail.targetId, detail.sourceName); + break; + case 'viewChange': + // FIXME: 内部路由跳转,更新 activeRoute 等信息,有风险,先去掉 + // const location = detail.data || {}; + // workspace.setActiveRoute(location.pathname + location.search); + onViewChange?.(detail.data); + break; + case 'openSmartWizard': + // 修正 selectSource + if (detail.targetId !== selectSource.first?.id) { + const element = sandboxQuery.getElementBySlotId(detail.targetId); + const elementData = sandboxQuery.getElementData(element); + selectSource.select(elementData); + } + + // 打开智能向导弹窗 + designer.toggleSmartWizard(true); + break; + default: + break; + } + }; + + const selectHandler = selectMode === 'point' ? { onClick } : { onMouseDown }; + + return { + onDragStart, + onDragEnter, + onDragOver, + onDrop, + onDragEnd, + onScroll, + onKeyDown, + onTango, + ...selectHandler, + }; +} + +const inputElements = ['input', 'textarea', 'text']; + +function isInputElements(elementType: string) { + if (inputElements.includes(elementType?.toLowerCase())) { + return true; + } + return false; +} diff --git a/packages/designer/src/framework/editor/editor.tsx b/packages/designer/src/framework/editor/editor.tsx new file mode 100644 index 0000000..dc0999d --- /dev/null +++ b/packages/designer/src/framework/editor/editor.tsx @@ -0,0 +1,132 @@ +import React, { useRef, useEffect, useCallback } from 'react'; +import { Box } from 'coral-system'; +import { MultiEditor, MultiEditorProps } from '@music163/tango-ui'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { isValidCode } from '@music163/tango-core'; +import { Modal } from 'antd'; + +const ideConfig = { + // disableFileOps: { + // add: true, + // delete: true, + // }, + // disableFolderOps: { + // add: true, + // delete: true, + // rename: true, + // }, + disablePrettier: true, + disableEslint: true, + saveWhenBlur: true, + // disableSetting: true, +}; + +export interface CodeEditorProps extends Partial { + /** + * 是否自动清楚未使用的导入 + */ + autoRemoveUnusedImports?: boolean; +} + +export const CodeEditor = observer( + ({ autoRemoveUnusedImports = true, ...rest }: CodeEditorProps) => { + const editorRef = useRef(null); + const workspace = useWorkspace(); + const files = workspace.listFiles(); + const activeFile = workspace.activeFile; + + let loc: any; // 记录视图代码的选中位置 + const selectNode = workspace.selectSource.firstNode; + if (selectNode && activeFile === workspace.activeViewFile) { + loc = selectNode.loc; + } + + useEffect(() => { + editorRef.current?.refresh(files, activeFile, loc); + }, [files, activeFile, loc]); + + const fileSave = useCallback( + (path: string, value: string) => { + if (!isJsFile(path)) { + // 非 js 文件直接保存 + workspace.updateFile(path, value, autoRemoveUnusedImports); + return; + } + + // js 文件需要先检查语法,只有语法正确才会保存 + if (isValidCode(value)) { + workspace.updateFile(path, value, autoRemoveUnusedImports); + } else { + Modal.confirm({ + title: '检测到代码中存在语法错误,暂时无法将代码同步给设计器,是否回退到安全代码?', + onOk: () => { + editorRef.current?.refresh(files, activeFile); + }, + onCancel: () => {}, + }); + } + }, + [workspace, autoRemoveUnusedImports, activeFile, files], + ); + + const handleRenameFile = useCallback( + (oldFilename: string, newFilename: string) => { + workspace.renameFile(oldFilename, newFilename); + workspace.setActiveFile(newFilename); + }, + [workspace], + ); + + const handleFileChange = useCallback( + (type: string, info: any) => { + switch (type) { + case 'addFile': + workspace.addFile(info.path, info.value); + break; + case 'deleteFile': + case 'deleteFolder': + workspace.removeFile(info.path); + break; + case 'renameFile': + case 'renameFolder': + case 'addFolder': + default: + break; + } + }, + [workspace], + ); + + const handlePathChange = useCallback( + (path: string) => { + workspace.setActiveFile(path); + }, + [workspace], + ); + + return ( + + + + ); + }, +); + +function isJsFile(path: string) { + return /.jsx?$/.test(path); +} diff --git a/packages/designer/src/framework/editor/index.ts b/packages/designer/src/framework/editor/index.ts new file mode 100644 index 0000000..4b7a3b5 --- /dev/null +++ b/packages/designer/src/framework/editor/index.ts @@ -0,0 +1,2 @@ +export * from './editor'; +// export { LegacyCodeEditor as CodeEditor } from './legacy-editor'; diff --git a/packages/designer/src/framework/index.ts b/packages/designer/src/framework/index.ts new file mode 100644 index 0000000..52c6628 --- /dev/null +++ b/packages/designer/src/framework/index.ts @@ -0,0 +1,9 @@ +export * from './designer-panel'; +export * from './sidebar-panel'; +export * from './setting-panel'; +export * from './workspace-panel'; +export * from './toolbar-panel'; +export * from './view-panel'; +export * from './editor'; +export * from './sandbox'; +export * from './dnd'; diff --git a/packages/designer/src/framework/resizable-box.tsx b/packages/designer/src/framework/resizable-box.tsx new file mode 100644 index 0000000..877eb8d --- /dev/null +++ b/packages/designer/src/framework/resizable-box.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useState } from 'react'; +import cx from 'classnames'; +import { Box, HTMLCoralProps, css } from 'coral-system'; +import { Resizable } from 'react-resizable'; + +const resizeHandleStyle = css` + position: absolute; + top: 0; + z-index: 999; + width: 4px; + height: 100%; + cursor: col-resize; + + &:hover, + &:active { + background-color: var(--tango-colors-brand); + } +`; + +export interface ResizableBoxProps extends HTMLCoralProps<'div'> { + width?: number; + height?: number; + resizeHandlePosition?: 'left' | 'right'; +} + +export function ResizableBox({ + resizeHandlePosition = 'right', + width: widthProp, + height, + children, + className, + style, +}: ResizableBoxProps) { + const [width, setWidth] = useState(widthProp); + const barStyle = resizeHandlePosition === 'right' ? { right: '-4px' } : { left: '-4px' }; + return ( + { + setWidth(size.width); + }} + onResizeStart={() => { + document.body.style.pointerEvents = 'none'; + document.body.style.userSelect = 'none'; + }} + onResizeStop={() => { + document.body.style.pointerEvents = 'auto'; + document.body.style.userSelect = 'auto'; + }} + handle={} + > +
+ {children} +
+
+ ); +} diff --git a/packages/designer/src/framework/sandbox/index.ts b/packages/designer/src/framework/sandbox/index.ts new file mode 100644 index 0000000..b9a08eb --- /dev/null +++ b/packages/designer/src/framework/sandbox/index.ts @@ -0,0 +1 @@ +export * from './sandbox'; diff --git a/packages/designer/src/framework/sandbox/navigator.tsx b/packages/designer/src/framework/sandbox/navigator.tsx new file mode 100644 index 0000000..e2931e9 --- /dev/null +++ b/packages/designer/src/framework/sandbox/navigator.tsx @@ -0,0 +1,129 @@ +import React from 'react'; +import { Box, css, Group } from 'coral-system'; +import { IconButton, ToggleButton } from '@music163/tango-ui'; +import { observer, useDesigner } from '@music163/tango-context'; +import { Input } from 'antd'; +import { + DesktopOutlined, + MobileOutlined, + ReloadOutlined, + ArrowLeftOutlined, + ArrowRightOutlined, +} from '@ant-design/icons'; + +const navigatorStyle = css` + display: flex; + column-gap: 12px; + + .navigatorInput { + flex: 1; + } +`; + +interface NavigatorProps { + disabled?: boolean; + startRoute?: string; + onBack?: () => void; + onForward?: () => void; + onRefresh?: () => void; + onInputEnter?: (text: string, e: React.KeyboardEvent) => void; +} + +interface NavigatorState { + relativeUrl: string; +} + +export class Navigator extends React.Component { + constructor(props: NavigatorProps) { + super(props); + this.state = { + relativeUrl: props.startRoute || '/', + }; + } + + componentDidUpdate(prevProps: Readonly, prevState: Readonly) { + if ( + this.props.startRoute && + prevProps.startRoute !== this.props.startRoute && + this.props.startRoute !== prevState.relativeUrl + ) { + this.setState({ + relativeUrl: this.props.startRoute, + }); + } + } + + changeRelativeUrl = (newUrl: string) => { + if (newUrl !== this.state.relativeUrl) { + this.setState({ + relativeUrl: newUrl, + }); + } + }; + + render() { + const { disabled, onBack, onForward, onRefresh } = this.props; + return ( + + + } onClick={onBack} title="返回" /> + } onClick={onForward} title="前进" /> + } onClick={onRefresh} title="刷新" /> + + + + + ); + } + + private onInputChange = (e: React.ChangeEvent) => { + const path = e.target.value.startsWith('/') ? e.target.value : `/${e.target.value}`; + this.changeRelativeUrl(path); + }; + + private onPressEnter = (e: React.KeyboardEvent) => { + const newUrl = e.currentTarget.value; + this.props.onInputEnter?.(newUrl, e); + }; +} + +const ViewportSwitch = observer(() => { + const designer = useDesigner(); + return ( + + { + designer.setSimulator('desktop'); + }} + > + + + { + designer.setSimulator('phone'); + }} + > + + + + ); +}); diff --git a/packages/designer/src/framework/sandbox/sandbox.tsx b/packages/designer/src/framework/sandbox/sandbox.tsx new file mode 100644 index 0000000..985340f --- /dev/null +++ b/packages/designer/src/framework/sandbox/sandbox.tsx @@ -0,0 +1,509 @@ +import React, { useImperativeHandle, ForwardedRef, useRef, useState, useEffect } from 'react'; +import { Box } from 'coral-system'; +import { CodeSandbox, CodeSandboxProps } from '@music163/tango-sandbox'; +import { getValue, logger, pick, setValue } from '@music163/tango-helpers'; +import { observer, useWorkspace, useDesigner } from '@music163/tango-context'; +import { Simulator, Viewport } from '../simulator'; +import { useSandboxQuery } from '../../context'; +import { DndQuery, useDnd } from '../dnd'; +import { Navigator } from './navigator'; +import { SelectionToolsProps } from '../simulator/selection'; + +type SandboxEventHandlerConfig = { + sandboxQuery?: DndQuery; + sandboxType?: 'design' | 'preview'; + isActive: boolean; + [x: string]: any; +}; + +export type SandboxProps = Omit & { + isPreview?: boolean; + selectionTools?: SelectionToolsProps['actions']; + sandboxType?: 'design' | 'preview'; + mode?: 'single' | 'combined'; + injectScript?: string; + onViewChange?: (data: any, config?: SandboxEventHandlerConfig) => void; + onMessage?: (data: any, config?: SandboxEventHandlerConfig) => void; + onLoad?: (config?: SandboxEventHandlerConfig) => void; +}; + +export type CombinedSandboxRef = { + designSandbox: CodeSandbox; + previewSandbox: CodeSandbox; +}; + +const LANDING_PAGE_PATH = '/__background_landing_page__'; + +function useSandbox({ + isPreview: isPreviewProp, + onViewChange, + onMessage: onMessageProp, + onLoad: onLoadProp, + sandboxType, + startRoute, + injectScript, +}: SandboxProps = {}): CodeSandboxProps & { display: string } { + const workspace = useWorkspace(); + const designer = useDesigner(); + const sandboxQuery = useSandboxQuery(); + const isPreview = isPreviewProp ?? designer.isPreview; + + // 组件不一定会立即刷新,因此 isActive 需要实时获取 + const getIsActive = () => isPreview === designer.isPreview; + const isActive = getIsActive(); + + const getSandboxConfig = () => ({ + sandboxQuery, + isPreview, + isActive: getIsActive(), + sandboxType, + }); + + const dndHandlers = useDnd({ + sandboxQuery, + workspace, + designer, + onViewChange: (data) => onViewChange && onViewChange(data, getSandboxConfig()), + }); + + let files = Array.from(workspace.files.keys()).reduce((prev, filename) => { + let code = workspace.getFile(filename).code; + if (filename === '/tango.config.json') { + code = mergeTangoConfigJson(code, isPreview, { injectScript }); + } + prev[filename] = { code }; + return prev; + }, {}); + files = normalizeFiles(files, workspace.entry); + + const onMessage = (data: any) => onMessageProp && onMessageProp(data, getSandboxConfig()); + const onLoad = () => onLoadProp && onLoadProp(getSandboxConfig()); + + // 根据当前 workspace 状态与组件传入的状态是否一致,控制是否需要切换到空白路由 + const display = isActive ? 'block' : 'none'; + const routePath = isActive ? startRoute || workspace.activeRoute : LANDING_PAGE_PATH; + + const sandboxProps = isPreview + ? { + files, + eventHandlers: pick(dndHandlers, ['onTango']), + onMessage, + display, + startRoute: routePath, + onLoad, + } + : { + files, + eventHandlers: dndHandlers as any, + onMessage, + display, + startRoute: routePath, + onLoad, + }; + + return sandboxProps; +} + +const PreviewSandbox = observer( + (props: SandboxProps, ref: ForwardedRef) => { + const { onViewChange, onMessage, startRoute, isPreview = true, injectScript, ...rest } = props; + const { display, ...sandboxProps } = useSandbox({ + isPreview, + onViewChange, + onMessage, + startRoute, + injectScript, + sandboxType: 'preview', + }); + + return ( + + + + ); + }, + { + forwardRef: true, + }, +); +PreviewSandbox.displayName = 'PreviewSandbox'; + +const DesignSandbox = observer( + (props: SandboxProps, ref: ForwardedRef) => { + const { onViewChange, onMessage, startRoute, isPreview = false, injectScript, ...rest } = props; + const workspace = useWorkspace(); + const { display, ...sandboxProps } = useSandbox({ + isPreview, + onViewChange, + onMessage: (data, config) => { + if (onMessage) { + onMessage(data, config); + } + + const { sandboxQuery } = config; + + const sandboxRendered = ['success', 'resize'].includes(data.type); + + // 根据代码更新情况重设选中元素的外框 + if (sandboxRendered && workspace.selectSource.isSelected) { + const items = workspace.selectSource.selected.map((item) => { + const element = sandboxQuery.getElementBySlotId(item.id); + if (element) { + const bounding = sandboxQuery.getElementBounding(element); + item.bounding = bounding; + item.element = element; + } + return item; + }); + workspace.selectSource.select(items); + } + }, + startRoute, + injectScript, + sandboxType: 'design', + }); + + return ( + + + + ); + }, + { + forwardRef: true, + }, +); + +export const CombinedSandbox = observer( + ( + { onViewChange: onViewChangeProp, ...rest }: SandboxProps, + ref: ForwardedRef, + ) => { + const workspace = useWorkspace(); + const designer = useDesigner(); + const designSandboxRef = useRef(); + const previewSandboxRef = useRef(); + const routePath = useRef(); + const activeSandbox = useRef(); + const [startRoute, setStartRoute] = useState(workspace.activeRoute); + + const onViewChange = (data: any, config: SandboxEventHandlerConfig) => { + if (config.isActive) { + const curPath = data?.pathname + data?.search; + const isSandboxChanged = config.sandboxType !== activeSandbox.current; + + // 沙箱从 inactive -> active,通过跳转回上一页把 landing page pop 出去 + // onViewChange 似乎被 memo 了?useCallback 不生效,使用 ref 存储当前的 sandbox 类型 + if (isSandboxChanged) { + const curSandbox = config.isPreview + ? previewSandboxRef.current + : designSandboxRef.current; + if (curSandbox) { + try { + // 当 sandbox 状态变为 active 时,此事件后于 isPreview 触发,sandbox 已经开始加载 startRoute + // iframe 从 landing page 跳转到 startRoute,因此相较于切换前,历史记录多了 landing page 和 startRoute + // 而在此事件中调用的 history.back() 晚于上述跳转的逻辑,所以 history.back() 实际是跳到 landing page + // 但是如果不 history.back(),用户主动点击返回按钮,会进入 landing page,因为沙箱始终用 push + // + // 如果只后退一次,再 replace 到当前路由,其虽然消解了 landing page 的问题,但是会多出一个重复的前进路由 + // 因此回退两次,再 push 当前的路由,从而将之前沙箱内部的 push 销毁掉 + curSandbox.iframe.contentWindow.history.go(-2); + // sandbox 切换 active 状态时,curPath 是切换时 sandbox 接受到的 startRoute prop + // 而当时的 startRoute 还没变更(下面的 useEffect 注定晚于 isPreview 变更,所以 startRoute 还是之前的) + // 因此 pop 路由时,取上一次 iframe 记录的 routePath + curSandbox.iframe.contentWindow.history.pushState(null, null, routePath.current); + curSandbox.iframe.contentWindow.dispatchEvent(new PopStateEvent('popstate')); + } catch (err) { + // 跨域? + console.error(err); + } + } + } else { + // 如上所述,每次切换预览态时,sandbox 第一次抛出的 curPath 都是上一次 sandbox 的 startRoute,不应该记录 + routePath.current = curPath; + } + + // 切换沙箱后,需要使用之前沙箱的路由 + activeSandbox.current = config.sandboxType; + } + + if (onViewChangeProp) { + onViewChangeProp(data, config); + } + }; + + useEffect(() => { + // 主动切换 activeRoute 时,需要重置沙箱的路由 + routePath.current = workspace.activeRoute; + setStartRoute(workspace.activeRoute); + }, [workspace.activeRoute]); + + // startRoute 只在切换 sandbox 时才重新设置,避免沙箱自行 pushState + useEffect(() => { + setStartRoute(routePath.current); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [designer.isPreview]); + + useImperativeHandle(ref, () => ({ + designSandbox: designSandboxRef.current, + previewSandbox: previewSandboxRef.current, + })); + + return ( + + + + + ); + }, + { + forwardRef: true, + }, +); + +export const Sandbox = observer( + ({ + isPreview: isPreviewProp, + selectionTools, + bundlerURL, + mode = 'combined', + ...props + }: SandboxProps) => { + const bundlerUrl = bundlerURL ?? 'https://codesandbox.fn.netease.com'; + const lastScrollTopRef = useRef(); + const sandboxRef = useRef(null); + const combinedSandboxRef = useRef(null); + const navigatorRef = useRef(null); + const workspace = useWorkspace(); + const designer = useDesigner(); + + let sandbox = sandboxRef.current; + if (mode === 'combined') { + sandbox = designer.isPreview + ? combinedSandboxRef.current?.previewSandbox + : combinedSandboxRef.current?.designSandbox; + } + + const onViewChange = (data: any, { isActive }: SandboxEventHandlerConfig) => { + if (isActive) { + navigatorRef.current.changeRelativeUrl(data?.pathname + data?.search); + } + }; + const onMessage = (data: any, config: any = {}) => { + const { sandboxQuery, isActive } = config; + if (data.type === 'start' && isActive) { + // 每次沙箱重新渲染前记住 iframe 内的 scrollTop + lastScrollTopRef.current = sandboxQuery?.scrollTop; + } + }; + + return ( + + { + if (newUrl?.split('?')[0] === workspace.activeRoute) { + // 只是输入了路由参数,默认为调试模式,直接更新沙箱内的路由地址 + sandbox?.updateRoute(newUrl); + } else { + // 如果是输入了其他路由,则直接跳转 + workspace.setActiveRoute(newUrl); + } + }} + onBack={() => { + sandbox?.manager.iframeProtocol.dispatch({ type: 'urlback' }); + }} + onForward={() => { + sandbox?.manager.iframeProtocol.dispatch({ type: 'urlforward' }); + }} + onRefresh={() => { + if (!sandbox) { + return; + } + + if ( + !canAccessIFrame(sandbox.iframe) || + sandbox.iframe.contentWindow.origin !== sandbox.props.bundlerURL + ) { + sandbox.iframe.src = `${bundlerUrl}${workspace.activeRoute}`; + } else { + sandbox.manager.iframeProtocol.dispatch({ type: 'refresh' }); + } + workspace.selectSource.clear(); + }} + /> + + + {mode === 'single' && ( + + )} + {mode === 'combined' && ( + + )} + + + + ); + }, +); + +// 兼容 tango.config.json,转成 sandbox.config.json +function normalizeFiles(files: object, entry = '/src/index.js') { + if (files['/tango.config.json']) { + const tangConfigJsonStr = files['/tango.config.json'].code; + const tangConfigJson = JSON.parse(tangConfigJsonStr); + files['/sandbox.config.json'] = { + code: JSON.stringify(tangConfigJson.sandbox, null, 2), + }; + } + if (!files['/index.html']) { + files['/index.html'] = { + code: ` + + + + + + + Vite App + + +
+ + + + `, + }; + } + + return files; +} + +function mergeTangoConfigJson(code: string, isPreview: boolean, config?: { [x: string]: any }) { + if (isPreview) { + code = code.replaceAll('/umd/designer.', '/umd/index.').replaceAll('/es/designer?', '?'); + } + let json; + try { + json = JSON.parse(code); + } catch (err) { + logger.error(err); + return code; + } + + const ox = getValue(json, 'dataSource.ox'); + const userJs = getValue(json, 'sandbox.evaluateJavaScript') || ''; + let mergedUserJs = userJs; + const { injectScript } = config || {}; + + if (ox) { + // TIP: 自动拼装 __tango_ox__ 注入到沙箱中 + mergedUserJs = `window.__tango_ox__=${JSON.stringify(ox)};${mergedUserJs}`; + } + if (injectScript) { + mergedUserJs = `${mergedUserJs};${injectScript}`; + } + + if (userJs !== mergedUserJs) { + setValue(json, 'sandbox.evaluateJavaScript', mergedUserJs); + } + + const i18n = getValue(json, 'i18n'); + if (i18n) { + // TIP: 合并 i18n 配置到沙箱配置中 + setValue(json, 'sandbox.i18n', { + id: i18n.appId, + preModule: i18n.preModule, + }); + } + + // 合并 packages 内的信息至 sandbox + const packages = getValue(json, 'packages'); + const externals = getValue(json, 'sandbox.externals') || {}; + const externalResources = getValue(json, 'sandbox.externalResources') || []; + const newExternalResources = getValue(json, 'externalResources') || []; + if (packages) { + // 追加 umd 资源,并替换 url 中的 token,如版本号等 + const pushExternalResources = (list: string[], tokenMap?: { [x: string]: any }) => { + const result = list.map((item) => + item.replace(/{{(.*?)}}/g, (matched, token) => { + return tokenMap?.[token] || matched; + }), + ); + externalResources.push(...result); + }; + // 追加 externals + const pushExternals = (name: string, library?: string) => { + if (library) { + externals[name] = library; + } + }; + + Object.keys(packages).forEach((name) => { + const item = packages[name]; + // 如果是设计态,且拥有设计器资源,则使用设计器资源,否则使用默认资源 + if (item.designerResources && !isPreview) { + pushExternalResources(item.designerResources, { + name, + version: item.version, + }); + pushExternals(name, item.library); + } else if (item.resources) { + pushExternalResources(item.resources, { + name, + version: item.version, + }); + pushExternals(name, item.library); + } + }); + } + if (newExternalResources?.length) { + externalResources.push(...newExternalResources); + } + setValue(json, 'sandbox.externals', externals); + setValue(json, 'sandbox.externalResources', [...new Set(externalResources)]); + + return JSON.stringify(json); +} + +function canAccessIFrame(iframe: HTMLIFrameElement) { + let html = null; + try { + // deal with older browsers + const doc = iframe.contentDocument || iframe.contentWindow.document; + html = doc.body.innerHTML; + } catch (err) { + // do nothing + } + return html !== null; +} diff --git a/packages/designer/src/framework/setting-panel.tsx b/packages/designer/src/framework/setting-panel.tsx new file mode 100644 index 0000000..4d2f0c6 --- /dev/null +++ b/packages/designer/src/framework/setting-panel.tsx @@ -0,0 +1,119 @@ +import React, { useCallback } from 'react'; +import { Box } from 'coral-system'; +import { SettingForm, FormModel, SettingFormProps } from '@music163/tango-setting-form'; +import { Panel } from '@music163/tango-ui'; +import { clone } from '@music163/tango-helpers'; +import { observer, useDesigner, useWorkspace, useWorkspaceData } from '@music163/tango-context'; +import { useSandboxQuery } from '../context'; + +export interface SettingPanelProps extends SettingFormProps { + title?: React.ReactNode; +} + +const headerProps = { + fontSize: '18px', +}; + +export const SettingPanel = observer(({ title = '设置面板', ...props }: SettingPanelProps) => { + const sandbox = useSandboxQuery(); + const workspace = useWorkspace(); + const designer = useDesigner(); + const { modelVariables, actionVariables, expressionVariables, routeOptions } = useWorkspaceData(); + + const onAction = useCallback( + (action: string, args: unknown[]) => { + workspace[action]?.(...args); + }, + [workspace], + ); + + if (!designer.showRightPanel) { + return ; + } + + let display = 'flex'; + if (designer.activeView !== 'design' || designer.isPreview) { + display = 'none'; + } + + const getSettingValue = (attributes: Record) => { + const ret = {}; + const keys = Object.keys(attributes); + for (const key of keys) { + if (/^data-/.test(key)) { + continue; + } + ret[key] = attributes[key]; + } + return ret; + }; + + const formValue = getSettingValue(workspace.selectSource.firstNode?.props || {}); + const formModel = new FormModel(formValue, { + onChange(name, value, field) { + if (!name) { + return; + } + + let firstName = name; + let realValue = value; + + const namePaths = name.split('.'); + if (namePaths.length > 1) { + firstName = namePaths[0]; + realValue = clone(formModel.getValue(firstName), false); + if (!Object.keys(realValue).length) { + realValue = undefined; + } + } + + if (!field) { + // 针对 Form.Object 清空的情况 + workspace.updateSelectedNodeAttributes({ + [firstName]: realValue, + }); + } else if (!field.error) { + // 针对 Form.Item 变化的情况 + workspace.updateSelectedNodeAttributes({ [firstName]: realValue }, field.detail?.relatedImports); + } + }, + }); + + const prototype = workspace.componentPrototypes.get(workspace.selectSource.first?.name); + + return ( + + {workspace.selectSource.isSelected ? ( + prototype ? ( + + ) : ( + 该节点没有可配置信息 + ) + ) : ( + 请先选择一个节点 + )} + + ); +}); diff --git a/packages/designer/src/framework/sidebar-panel.tsx b/packages/designer/src/framework/sidebar-panel.tsx new file mode 100644 index 0000000..09e97d3 --- /dev/null +++ b/packages/designer/src/framework/sidebar-panel.tsx @@ -0,0 +1,338 @@ +import React, { useMemo } from 'react'; +import cx from 'classnames'; +import { Box, Text, css, HTMLCoralProps } from 'coral-system'; +import { + ClusterOutlined, + HistoryOutlined, + FunctionOutlined, + SettingOutlined, + ApiOutlined, + AppstoreOutlined, + BuildOutlined, +} from '@ant-design/icons'; +import { Badge } from 'antd'; +import { + DataSourceView, + HistoryView, + DependencyView, + ModelView, + SettingView, + PagesView, +} from '../widgets/sidebar'; +import { ReactComponentProps } from '@music163/tango-helpers'; +import { observer, useDesigner } from '@music163/tango-context'; +import { ResizableBox } from './resizable-box'; + +const sidebarStyle = css` + position: relative; + background-color: var(--tango-colors-custom-sidebarBg); + border-right: 1px solid var(--tango-colors-line-normal); + box-shadow: rgb(0 0 0 / 5%) 0px 0px 18px; + height: 100%; + + .SidebarPanelBarList { + width: 50px; + list-style: none; + user-select: none; + transition: all 0.3s ease; + } + + .SidebarPanelBarListItem { + &.active { + background-color: var(--tango-colors-custom-sidebarItemActiveBg); + } + + &:hover { + background-color: var(--tango-colors-custom-sidebarItemHoverBg); + } + } +`; + +export interface SidebarPanelProps extends ReactComponentProps { + /** + * 面板宽度 + */ + panelWidth?: number; + /** + * 底部附加内容 + */ + footer?: React.ReactNode; +} + +export interface SidebarPanelItemProps + extends Omit, + HTMLCoralProps<'div'> { + /** + * 面板唯一标识符 + */ + key?: string; + /** + * 面板标题 + * @deprecated + */ + title?: string; + /** + * 文档地址 + * @deprecated + */ + doc?: string; + /** + * 是否为浮动面板 + */ + isFloat?: boolean; + /** + * 面板宽度 + */ + width?: number; +} + +const INTERNAL_SIDEBAR_PANEL_MAP: Record = { + components: { + label: '组件', + title: '组件列表', + icon: , + }, + outline: { + label: '结构', + title: '结构', + icon: , + children: , + }, + dependency: { + label: '依赖', + title: '项目依赖', + icon: , + children: , + }, + model: { + label: '变量', + title: '变量管理', + icon: , + children: , + width: 440, + }, + dataSource: { + label: '接口', + title: '数据源与接口', + icon: , + children: , + width: 600, + }, + history: { + label: '历史', + title: '历史记录', + icon: , + children: , + }, + setting: { + label: '设置', + title: '应用设置', + icon: , + children: , + width: 400, + }, +}; + +function BaseSidebarPanel({ + panelWidth: defaultPanelWidth = 280, + footer, + children, +}: SidebarPanelProps) { + const items = useMemo(() => { + const ret: Record = {}; + React.Children.forEach(children, (child) => { + if (child && React.isValidElement(child)) { + ret[child.key] = { + ...INTERNAL_SIDEBAR_PANEL_MAP[child.key], + ...child.props, + }; + } + }); + return ret; + }, [children]); + + const designer = useDesigner(); + const panel = items[designer.activeSidebarPanel]; + const floatPanelStyle: any = panel?.isFloat + ? { + position: 'absolute', + left: '50px', + top: 0, + zIndex: 1000, + height: '100%', + boxShadow: 'var(--tango-shadows-lowRight)', + } + : {}; + const panelWidth = typeof panel?.width === 'number' ? panel?.width : defaultPanelWidth; + + return ( + + + + {Object.keys(items).map((key) => { + const item = items[key]; + const isActive = key === designer.activeSidebarPanel; + return ( +
  • { + designer.setActiveSidebarPanel(key); + }} + > + +
  • + ); + })} +
    + + {footer} + +
    + {panel ? ( + + { + designer.closeSidebarPanel(); + }} + > + {panel.children} + + + ) : null} +
    + ); +} + +BaseSidebarPanel.Item = function ({ key, title, doc, isFloat, width }: SidebarPanelItemProps) { + return <>; +}; + +export const SidebarPanel = observer(BaseSidebarPanel); + +interface SidebarPanelBarItemProps { + /** + * 是否选中 + */ + isActive?: boolean; + /** + * 侧边栏图标 + */ + icon?: React.ReactNode; + /** + * 侧边栏图标说明,推荐使用 2 个字 + */ + label?: string; + /** + * 是否展示徽标 + */ + showBadge?: + | false + | { + /** + * 是否显示小圆点 + */ + dot?: boolean; + /** + * 展示的数字 + */ + count?: number; + }; +} + +function SidebarPanelBarItem({ + isActive, + icon: iconProp, + label, + showBadge, +}: SidebarPanelBarItemProps) { + const color = isActive ? 'brand' : 'text.body'; + let icon = ( + + {iconProp} + + ); + if (showBadge) { + icon = ( + + {icon} + + ); + } + + return ( + + {icon} + + {label} + + + ); +} + +const expandPanelStyle = css` + flex: 1; + height: 100%; + display: flex; + flex-direction: column; + background-color: var(--tango-colors-white); + border-left: 1px solid var(--tango-colors-line-normal); + position: relative; + + &.isFloat { + position: absolute; + left: 0; + top: 0; + z-index: 1000; + height: 100%; + width: 100%; + box-shadow: var(--tango-shadows-lowRight); + } +`; + +function SidebarPanelExpandedContent({ + closeable, + onClose, + isFloat, + className, + children, + ...rest +}: Omit & { + closeable?: boolean; + onClose: React.MouseEventHandler; +}) { + const classNames = cx( + 'SidebarPanelExpanded', + { + isFloat, + }, + className, + ); + return ( + + {children} + + ); +} diff --git a/packages/designer/src/framework/simulator/bottom-bar.tsx b/packages/designer/src/framework/simulator/bottom-bar.tsx new file mode 100644 index 0000000..43e53ed --- /dev/null +++ b/packages/designer/src/framework/simulator/bottom-bar.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { Box, HTMLCoralProps, css } from 'coral-system'; +import { Breadcrumb } from 'antd'; +import { observer, useWorkspace, useDesigner } from '@music163/tango-context'; + +const itemWrapperStyle = css` + user-select: none; + + &:hover { + color: var(--tango-colors-brand); + } +`; + +const ItemWrapper = (props: HTMLCoralProps<'div'>) => { + return ; +}; + +export const BottomBar = observer(() => { + const workspace = useWorkspace(); + const designer = useDesigner(); + + if (workspace.selectSource.size !== 1) { + return null; + } + + const parents = workspace.selectSource?.first?.parents || []; + const reversedParents = [...parents].reverse(); + const length = parents.length; + + return ( + + + {reversedParents.map((parent, index) => ( + { + workspace.selectSource.select({ + ...parent, + parents: parents.slice(length - index), + }); + }} + > + {parent.name} + + ))} + + {workspace.selectSource.first.name} + + + + ); +}); diff --git a/packages/designer/src/framework/simulator/error-boundary.tsx b/packages/designer/src/framework/simulator/error-boundary.tsx new file mode 100644 index 0000000..207c031 --- /dev/null +++ b/packages/designer/src/framework/simulator/error-boundary.tsx @@ -0,0 +1,35 @@ +import React from 'react'; + +interface Props { + children?: React.ReactNode; +} + +interface State { + hasError: boolean; +} + +// TODO: enable ErrorBoundary +export class ErrorBoundary extends React.Component { + state = { + hasError: false, + }; + + static getDerivedStateFromError(error: any) { + // Update state so the next render will show the fallback UI. + return { hasError: true }; + } + + componentDidCatch(error: any, errorInfo: any) { + // You can also log the error to an error reporting service + // logErrorToMyService(error, errorInfo); + } + + render() { + if (this.state.hasError) { + // You can render any custom fallback UI + return

    Something went wrong.

    ; + } + + return this.props.children; + } +} diff --git a/packages/designer/src/framework/simulator/ghost.tsx b/packages/designer/src/framework/simulator/ghost.tsx new file mode 100644 index 0000000..eaba0cc --- /dev/null +++ b/packages/designer/src/framework/simulator/ghost.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import styled from 'styled-components'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { DRAG_GHOST_ID } from '../../helpers'; + +const GhostWrapper = styled.div` + display: inline-block; + position: absolute; + top: -50%; + left: -50%; + z-index: -1; + background-color: rgba(30, 167, 253, 0.5); + color: #fff; + font-size: 12px; + line-height: 2; + padding: 0 12px; + pointer-events: none; + white-space: nowrap; +`; + +export const Ghost = observer(() => { + const workspace = useWorkspace(); + const text = workspace.dragSource.name || ''; + return {text}; +}); diff --git a/packages/designer/src/framework/simulator/index.tsx b/packages/designer/src/framework/simulator/index.tsx new file mode 100644 index 0000000..fb9943f --- /dev/null +++ b/packages/designer/src/framework/simulator/index.tsx @@ -0,0 +1,3 @@ +export * from './simulator'; +export * from './viewport'; +export * from './bottom-bar'; diff --git a/packages/designer/src/framework/simulator/insertion.tsx b/packages/designer/src/framework/simulator/insertion.tsx new file mode 100644 index 0000000..b0f078b --- /dev/null +++ b/packages/designer/src/framework/simulator/insertion.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { Box, css } from 'coral-system'; +import { DropMethod } from '@music163/tango-core'; +import { observer, useWorkspace } from '@music163/tango-context'; + +const insertionStyle = css` + display: none; + z-index: 1000; + position: absolute; + pointer-events: none; + transition: left 0.2s ease-out, top 0.2s ease-out; +`; + +/** + * 插入提示符 + */ +export const InsertionPrompt = observer(() => { + const workspace = useWorkspace(); + const dragSource = workspace.dragSource; + const dropTarget = dragSource.dropTarget; + + if (!dragSource.isDragging || !dropTarget.bounding) { + // 没有拖拽,或没有着陆点的轮廓信息,不渲染 + return null; + } + + let style: React.CSSProperties; + const bounding = dropTarget.bounding; + switch (dropTarget.display) { + case 'inline': + case 'inline-block': + case 'inline-flex': + case 'inline-grid': { + if (dropTarget.method === DropMethod.InsertBefore) { + style = { + display: 'block', + left: bounding.left, + top: bounding.top, + width: 2, + height: bounding.height, + }; + } else if (dropTarget.method === DropMethod.InsertAfter) { + style = { + display: 'block', + left: bounding.left + bounding.width, + top: bounding.top, + width: 2, + height: bounding.height, + }; + } + break; + } + default: { + if (dropTarget.method === DropMethod.InsertBefore) { + style = { + display: 'block', + left: bounding.left, + top: bounding.top, + width: bounding.width, + height: 2, + }; + } else if (dropTarget.method === DropMethod.InsertAfter) { + style = { + display: 'block', + left: bounding.left, + top: bounding.top + bounding.height, + width: bounding.width, + height: 2, + }; + } + } + } + + return ; +}); diff --git a/packages/designer/src/framework/simulator/mask.tsx b/packages/designer/src/framework/simulator/mask.tsx new file mode 100644 index 0000000..95beb1f --- /dev/null +++ b/packages/designer/src/framework/simulator/mask.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import cx from 'classnames'; +import styled from 'styled-components'; +import { DropMethod } from '@music163/tango-core'; +import { ElementBoundingType } from '@music163/tango-helpers'; +import { observer, useWorkspace } from '@music163/tango-context'; + +const MaskWrapper = styled.div` + position: absolute; + top: 0; + left: 0; + pointer-events: none; + + &.dragging { + background-color: rgba(23, 97, 144, 0.26); + } + + &.dropping { + background-color: rgba(38, 169, 252, 0.34); + } +`; + +interface MaskProps { + dragging?: boolean; + dropping?: boolean; + bounding?: ElementBoundingType; +} + +const Mask = observer(({ dragging, dropping, bounding }: MaskProps) => { + if (!bounding) { + return null; + } + + const clazz = cx({ + dragging, + dropping, + }); + + const style = { + width: bounding.width, + height: bounding.height, + transform: `translate(${bounding.left}px, ${bounding.top}px)`, + }; + + return ; +}); + +const showDroppingMaskMethods = [DropMethod.InsertChild, DropMethod.ReplaceNode]; + +/** + * 拖拽遮罩提示 + */ +export const DraggingMask = observer(() => { + const workspace = useWorkspace(); + const dragSource = workspace.dragSource; + const dropTarget = dragSource.dropTarget; + + const dragging = !!dragSource.id; + const dropping = !!( + dragSource.isDragging && + showDroppingMaskMethods.includes(dropTarget.method) && + dropTarget.bounding + ); + + return ( + + + + + ); +}); diff --git a/packages/designer/src/framework/simulator/selection-mask.tsx b/packages/designer/src/framework/simulator/selection-mask.tsx new file mode 100644 index 0000000..2e383d3 --- /dev/null +++ b/packages/designer/src/framework/simulator/selection-mask.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { observer, useWorkspace } from '@music163/tango-context'; + +export const SelectionMask = observer(() => { + const {selectSource} = useWorkspace(); + const display = selectSource.start?.point.x && selectSource.start?.point.y ? 'block' : 'none'; + return ( + + ); +}); diff --git a/packages/designer/src/framework/simulator/selection.tsx b/packages/designer/src/framework/simulator/selection.tsx new file mode 100644 index 0000000..fdd96ba --- /dev/null +++ b/packages/designer/src/framework/simulator/selection.tsx @@ -0,0 +1,381 @@ +import React from 'react'; +import styled, { css, keyframes } from 'styled-components'; +import { Box, Button, Group, HTMLCoralProps } from 'coral-system'; +import { PlusSquareOutlined, HolderOutlined, InfoCircleOutlined } from '@ant-design/icons'; +import { ISelectedItemData, isString, noop } from '@music163/tango-helpers'; +import { observer, useDesigner, useWorkspace } from '@music163/tango-context'; +import { IconButton } from '@music163/tango-ui'; +import { getDragGhostElement } from '../../helpers'; +import { CopyNode, DeleteNode, ViewSource } from '../../widgets/selector'; + +/** + * 选择辅助工具的对齐方式 + */ +type SelectionHelperAlignType = 'top-right' | 'top-left' | 'inner-top-right'; + +const boundingOffset = 100; // 检测选中模块的工具栏是否溢出的偏移值 + +const internalSelectionTools = { + source: , + copy: , + delete: , +}; + +export const INTERNAL_SELECTION_TOOLS = ['source', 'create', 'copy', 'delete']; + +export interface SelectionToolsProps { + /** + * 动作列表,内置的动作列表有 source-定位到源码, block-创建区块, copy-复制节点, delete-删除节点 + */ + actions?: Array; +} + +export const SelectionTools = observer( + ({ actions: actionsProp = INTERNAL_SELECTION_TOOLS }: SelectionToolsProps) => { + const workspace = useWorkspace(); + const selectSource = workspace.selectSource; + const actions = actionsProp.map((item) => { + if (isString(item)) { + return internalSelectionTools[item] + ? React.cloneElement(internalSelectionTools[item], { key: item }) + : null; + } + return item; + }); + return ( + <> + {selectSource.selected.map((item) => ( + + ))} + + ); + }, +); + +const selectionBoxStyle = css` + display: none; + border: 2px solid var(--tango-colors-brand); + pointer-events: none; + position: absolute; + z-index: 999; /* 需要比 antd modal(1000) 的层级小 */ + left: 0; + top: 0; +`; + +export interface SelectionBoxProps { + /** + * 是否显示操作按钮 + */ + showActions?: boolean; + /** + * 动作列表 + */ + actions?: React.ReactElement[]; + /** + * 选中的数据 + */ + data: ISelectedItemData; +} + +function SelectionBox({ showActions, actions, data }: SelectionBoxProps) { + const workspace = useWorkspace(); + const designer = useDesigner(); + + if (!data.bounding) { + return null; + } + + if (!data.bounding.height && !data.bounding.width) { + // 没有尺寸的元素不显示选中框 + return null; + } + + const prototype = workspace.componentPrototypes.get(data.name); + const isPage = prototype?.type === 'page'; + + // 如果声明了 childrenName,提供快捷子元素创建入口 + let insertedList: ISelectedItemData[] = []; + if (prototype?.childrenName) { + const names = Array.isArray(prototype?.childrenName) + ? prototype.childrenName + : [prototype.childrenName]; + insertedList = names.map((child) => ({ + id: child, + name: child, + })); + } + + let selectionHelpersAlign: SelectionHelperAlignType = 'top-right'; + if (data.bounding) { + if (data.bounding.left + data.bounding.width + boundingOffset < designer.viewport.width) { + // 选中模块已靠近右侧边界位置 + selectionHelpersAlign = 'top-left'; + } else if (data.bounding.top < 20) { + // 选中模块位于最顶部位置 + selectionHelpersAlign = 'inner-top-right'; + } + } + + const isFromCurrentFile = data.filename === workspace.activeViewFile; + + let style: React.CSSProperties; + if (data.bounding) { + style = { + display: 'block', + width: data.bounding.width, + height: data.bounding.height, + transform: `translate(${data.bounding.left}px, ${data.bounding.top}px)`, + ['--color-active' as any]: isFromCurrentFile + ? 'var(--tango-colors-brand)' + : 'var(--tango-colors-gray-60)', + ['--color-active-hover' as any]: isFromCurrentFile + ? 'var(--tango-colors-primary-50)' + : 'var(--tango-colors-gray-50)', + }; + } + + return ( + + {showActions && ( + + { + e.dataTransfer.effectAllowed = 'move'; + workspace.dragSource.set(data); + const ghost = getDragGhostElement(); + e.dataTransfer.setDragImage(ghost, 0, 0); + }} + onDragEnd={() => { + workspace.dragSource.clear(); + }} + /> + ) + } + label={ + <> + { + workspace.selectSource.select(data); + }} + /> + {!isFromCurrentFile && ( + } + /> + )} + + } + /> + {insertedList.length > 0 && ( + } + label={ + insertedList.length === 1 ? ( + { + workspace.insertToSelectedNode(insertedList[0].name); + }} + > + 添加 {insertedList[0].name} + + ) : ( + { + workspace.insertToSelectedNode(data.name); + }} + /> + ) + } + /> + )} + {!isPage && actions} + + )} + + ); +} + +const selectionHelpersStyle = css` + pointer-events: auto; + white-space: nowrap; + position: absolute; + user-select: none; + column-gap: 2px; + + &[data-align='top-right'] { + bottom: 100%; + right: -2px; + } + + &[data-align='inner-top-right'] { + top: 0; + right: 4px; + } + + &[data-align='top-left'] { + bottom: 100%; + left: -2px; + } +`; + +interface SelectionHelpersProps { + align: SelectionHelperAlignType; + children?: React.ReactNode; +} + +const SelectionHelpers = ({ align = 'top-right', children }: SelectionHelpersProps) => { + return ( + + {children} + + ); +}; + +const selectionHelperStyle = css` + outline: none; + cursor: pointer; + background: var(--color-active, var(--tango-colors-brand)); + + svg { + margin-right: 4px; + } + + &:hover { + background: var(--color-active-hover, var(--tango-colors-primary-50)); + } +`; + +interface SelectionHelperProps extends HTMLCoralProps<'button'> { + icon?: React.ReactNode; + label?: React.ReactNode; +} + +const SelectionHelper = ({ icon, label, children, ...rest }: SelectionHelperProps) => { + return ( + + ); +}; + +const SelectionToolSetStyle = css` + display: flex; + align-items: center; + position: relative; + + > :first-child { + border-top-left-radius: var(--tango-radii-s); + border-bottom-left-radius: var(--tango-radii-s); + } + + > :last-child { + border-top-right-radius: var(--tango-radii-s); + border-bottom-right-radius: var(--tango-radii-s); + } +`; + +const SelectionToolSet = ({ children }: HTMLCoralProps<'div'>) => { + return ( + + {children} + + ); +}; + +const slideDown = keyframes` + from { + transform: translateY(-10%); + opacity: 0; + } + + to { + transform: translateY(0); + opacity: 0.8; + } +`; + +const NameSelectorWrapper = styled.div` + display: inline-block; + &:hover > ul { + display: block; + } + + ul { + display: none; + animation: ${slideDown} 0.2s; + position: absolute; + left: 0; + list-style: none; + padding: 0; + text-align: left; + } + + li { + margin-top: 4px; + } +`; + +interface NameSelectorProps { + label?: string; + parents?: ISelectedItemData['parents']; + onSelect?: (data: ISelectedItemData) => void; +} + +const NameSelector = ({ label, parents = [], onSelect = noop }: NameSelectorProps) => { + return ( + + + {label} + +
      + {parents.map((parent, index) => ( + + onSelect({ + ...parent, + parents: parents.slice(index + 1), + }) + } + > + {parent.name} + + ))} +
    +
    + ); +}; diff --git a/packages/designer/src/framework/simulator/simulator.tsx b/packages/designer/src/framework/simulator/simulator.tsx new file mode 100644 index 0000000..40ef980 --- /dev/null +++ b/packages/designer/src/framework/simulator/simulator.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { Box, HTMLCoralProps } from 'coral-system'; +import { css } from 'styled-components'; +import { observer, useDesigner } from '@music163/tango-context'; + +export interface SimulatorProps { + children?: React.ReactNode; +} + +/** + * PC Simulator + * 页面模拟容器,支持模拟多种设备 + */ +export const Simulator = observer(({ children }: SimulatorProps) => { + const designer = useDesigner(); + const Sim = designer.simulator.name === 'desktop' ? DesktopSimulator : MobileSimulator; + return {children}; +}); + +function DesktopSimulator({ children }: HTMLCoralProps<'div'>) { + return ( + + {children} + + ); +} + +const mobileStyle = css` + --device-viewport-width: 375px; + --device-viewport-height: 812px; + --device-frame-width: 13px; + background-image: url(https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/21897838692/b1c5/2665/56db/10558c1bb2030d55ceabbcc74431de99.png); + background-repeat: no-repeat; + background-size: 100% 100%; + box-shadow: 0 2px 8px rgb(2 8 20 / 10%), 0 8px 16px rgb(2 8 20 / 8%); + border-radius: 62px; + overflow: hidden; + + .MobileSimulatorDeviceFrame { + border-radius: 50px; + width: var(--device-viewport-width); + height: var(--device-viewport-height); + margin: var(--device-frame-width); + overflow: hidden; + } +`; + +function MobileSimulator({ children }: HTMLCoralProps<'div'>) { + return ( + + + {children} + + + ); +} diff --git a/packages/designer/src/framework/simulator/viewport.tsx b/packages/designer/src/framework/simulator/viewport.tsx new file mode 100644 index 0000000..84145d4 --- /dev/null +++ b/packages/designer/src/framework/simulator/viewport.tsx @@ -0,0 +1,64 @@ +import React, { useEffect, useRef } from 'react'; +import cx from 'classnames'; +import { Box, HTMLCoralProps } from 'coral-system'; +import { useDesigner, useWorkspace } from '@music163/tango-context'; +import { Ghost } from './ghost'; +import { useSandboxQuery } from '../../context'; +import { SelectionTools, SelectionToolsProps } from './selection'; +import { InsertionPrompt } from './insertion'; +import { DraggingMask } from './mask'; + +export interface ViewportProps extends HTMLCoralProps<'div'> { + selectionTools?: SelectionToolsProps['actions']; +} + +export function Viewport({ selectionTools, children, className, ...rest }: ViewportProps) { + return ( + + {children} +
    + + + +
    + +
    + ); +} + +function ViewportBody({ children, ...rest }: HTMLCoralProps<'div'>) { + const mainRef = useRef(); + const workspace = useWorkspace(); + const designer = useDesigner(); + const sandboxQuery = useSandboxQuery(); + + useEffect(() => { + const resizeObserver = new ResizeObserver((entries) => { + if (mainRef.current) { + designer.setViewport({ + width: mainRef.current.offsetWidth, + height: mainRef.current.offsetHeight, + }); + } + if (entries.length && workspace.selectSource.isSelected) { + const items = workspace.selectSource.selected.map((item) => { + const element = sandboxQuery.getElementBySlotId(item.id); + if (element) { + const bounding = sandboxQuery.getElementBounding(element); + item.bounding = bounding; + item.element = element; + } + return item; + }); + workspace.selectSource.select(items); + } + }); + resizeObserver.observe(mainRef.current); + }, []); + + return ( + + {children} + + ); +} diff --git a/packages/designer/src/framework/toolbar-panel.tsx b/packages/designer/src/framework/toolbar-panel.tsx new file mode 100644 index 0000000..fc2bb34 --- /dev/null +++ b/packages/designer/src/framework/toolbar-panel.tsx @@ -0,0 +1,90 @@ +import React, { useMemo } from 'react'; +import { Box, Group } from 'coral-system'; +import { + HistoryTool, + ModeSwitchTool, + PreviewTool, + RouteSwitchTool, + TogglePanelTool, +} from '../widgets/toolbar'; +import { ReactComponentProps } from '@music163/tango-helpers'; + +const internalToolMap = { + history: , + modeSwitch: , + preview: , + routeSwitch: , + togglePanel: , +}; + +interface ToolbarPanelProps { + children?: React.ReactElement | React.ReactElement[]; +} + +export function ToolbarPanel({ children }: ToolbarPanelProps) { + const [left, center, right] = useMemo(() => { + const left: React.ReactNode[] = []; + const center: React.ReactNode[] = []; + const right: React.ReactNode[] = []; + + let prevPlacement: string; + React.Children.forEach(children, (child: React.ReactElement, index) => { + let node = child.props.children || internalToolMap[child.key]; + if (!node) { + node = child; // separator + } + const key = child.key || index; + node = ( +
    + {node} +
    + ); + const placement = child.props.placement || prevPlacement || 'center'; + switch (placement) { + case 'left': + left.push(node); + break; + case 'right': + right.push(node); + break; + case 'center': + default: + center.push(node); + break; + } + prevPlacement = placement; + }); + + return [left, center, right]; + }, [children]); + + return ( + + + {left} + + + {center} + + + {right} + + + ); +} + +interface ToolbarPanelItemProps extends ReactComponentProps { + placement?: 'left' | 'center' | 'right'; + children?: React.ReactElement; +} + +function ToolbarPanelItem({ placement, children }: ToolbarPanelItemProps) { + return
    {children}
    ; +} + +function Separator() { + return ; +} + +ToolbarPanel.Item = ToolbarPanelItem; +ToolbarPanel.Separator = Separator; diff --git a/packages/designer/src/framework/view-panel.tsx b/packages/designer/src/framework/view-panel.tsx new file mode 100644 index 0000000..6cf9cd7 --- /dev/null +++ b/packages/designer/src/framework/view-panel.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { observer, useDesigner } from '@music163/tango-context'; +import { DesignerViewType } from '@music163/tango-core'; + +export interface ViewPanelProps { + /** + * 视图面板模式,对应 Workspace 的模式 + */ + mode?: DesignerViewType; + children: React.ReactNode; +} + +export const ViewPanel = observer((props: ViewPanelProps) => { + const { mode = 'design', children } = props; + const designer = useDesigner(); + const display = mode !== designer.activeView ? 'none' : 'block'; + // 云音乐移动端模式小屏幕适配,可能会溢出屏幕 + const overflow = + designer.simulator.name === 'phone' ? 'auto' : designer.isPreview ? 'auto' : 'hidden'; + return ( + + {children} + + ); +}); diff --git a/packages/designer/src/framework/workspace-panel.tsx b/packages/designer/src/framework/workspace-panel.tsx new file mode 100644 index 0000000..2a7942f --- /dev/null +++ b/packages/designer/src/framework/workspace-panel.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { ReactComponentProps } from '@music163/tango-helpers'; + +export type WorkspacePanelProps = ReactComponentProps; + +export function WorkspacePanel({ children }: WorkspacePanelProps) { + return ( + + {children} + + ); +} diff --git a/packages/designer/src/helpers/dom.ts b/packages/designer/src/helpers/dom.ts new file mode 100644 index 0000000..016a7bb --- /dev/null +++ b/packages/designer/src/helpers/dom.ts @@ -0,0 +1,104 @@ +import $, { Selector } from 'cash-dom'; +import { + SLOT, + getElementDataProps, + MousePoint, + ISelectedItemData, + parseDndId, +} from '@music163/tango-helpers'; + +export function buildQueryBySlotId(id: string) { + return `[${SLOT.dnd}="${id}"]`; +} + +export function getElement(selector: Selector) { + return $(selector).get(0); +} + +export const DRAG_GHOST_ID = 'dragGhost'; + +export const getDragGhostElement = () => getElement(`#${DRAG_GHOST_ID}`); + +export function setElementStyle(selector: Selector, style: any) { + return $(selector).css(style); +} + +/** + * 获取元素的外框数据 + * @param element + * @returns + */ +export function getElementBoundingData(element: HTMLElement, relativeContainer?: HTMLElement) { + const rect = element.getBoundingClientRect(); + const { x, y } = getRelativePoint({ x: rect.left, y: rect.top }, relativeContainer); + + return { + width: element.offsetWidth, + height: element.offsetHeight, + top: y, + left: x, + }; +} + +export function getRelativePoint(point: MousePoint, relativeContainer?: HTMLElement): MousePoint { + let x = point.x; + let y = point.y; + if (relativeContainer) { + const containerRect = relativeContainer.getBoundingClientRect(); + x -= containerRect.left; + y -= containerRect.top; + } + return { x, y }; +} + +/** + * 获取元素的 css display 值 + * @param element + * @returns + */ +export function getElementCSSDisplay(element: HTMLElement) { + return $(element).css('display'); +} + +/** + * 获取元素的数据 + * @param element + * @returns + */ +export function getElementData( + element: HTMLElement, + relativeContainer?: HTMLElement, +): ISelectedItemData { + const bounding = getElementBoundingData(element, relativeContainer); + const data = getElementDataProps(element); + const dnd = parseDndId(data.dnd); + // FIXME: 是否改为按需执行,仅 dropTarget 需要 display 信息,且目前 display 信息并不准确 + const display = getElementCSSDisplay(element); + return { + id: dnd.id, + name: dnd.component || element.tagName.toLowerCase(), + filename: dnd.filename, + bounding, + element, + display, + }; +} + +/** + * 给定点的位置到某个元素外框的距离 + * @param point + * @param rect + * @returns + */ +export function distanceToRect(point: any, rect: any) { + let minX = Math.min(Math.abs(point.clientX - rect.left), Math.abs(point.clientX - rect.right)); + let minY = Math.min(Math.abs(point.clientY - rect.top), Math.abs(point.clientY - rect.bottom)); + if (point.clientX >= rect.left && point.clientX <= rect.right) { + minX = 0; + } + if (point.clientY >= rect.top && point.clientY <= rect.bottom) { + minY = 0; + } + + return Math.sqrt(minX ** 2 + minY ** 2); +} diff --git a/packages/designer/src/helpers/index.ts b/packages/designer/src/helpers/index.ts new file mode 100644 index 0000000..1bfa9f4 --- /dev/null +++ b/packages/designer/src/helpers/index.ts @@ -0,0 +1,2 @@ +export * from './dom'; +export * from './prompts'; diff --git a/packages/designer/src/helpers/prompts.ts b/packages/designer/src/helpers/prompts.ts new file mode 100644 index 0000000..fdefc5b --- /dev/null +++ b/packages/designer/src/helpers/prompts.ts @@ -0,0 +1,35 @@ +export const promptTemplates = { + getServiceFormatter(userInput: string) { + return ` +[system]: 你是一个代码生成助手,帮助用户生成 javascript 匿名箭头函数,用来实现对于 axios 请求的返回值进行格式化,参数为 res 。你使用的编程语言是 JavaScript。不要解释代码,只返回代码块本身。 + +典型的例子包括: +直接返回结果:res => res +返回结果中的数据:res => res.data +对返回结果进行过滤:res => res.data.filter(item => item.name === 'foo') + +${userInput} + `; + }, + + getSettingConfig(userInput: string, settings: string) { + return `You are a code assistant, help user generate JSON codes。 + +Output format: +{ + "KEY": +} + +Available keys and values: +${settings} + +Example as follows: +1. Disabled the component, output: { "disabled": true } +2. Use large size, output: { "size": "large" } + +Only return the relevant configuration information, ensure that the output result can be parsed by JavaScript's JSON.parse, please use markdown format for the returned text, do not explain the code. + +The input is: +${userInput}`; + }, +}; diff --git a/packages/designer/src/index.ts b/packages/designer/src/index.ts new file mode 100644 index 0000000..ef0274b --- /dev/null +++ b/packages/designer/src/index.ts @@ -0,0 +1,11 @@ +export * from './designer'; +export * from './framework'; +export * from './widgets/sidebar'; +export * from './widgets/toolbar'; +export * from './context'; + +export { INTERNAL_SELECTION_TOOLS } from './framework/simulator/selection'; + +export { createEngine, TangoServiceModule } from '@music163/tango-core'; +export { useWorkspace, useDesigner, observer } from '@music163/tango-context'; +export { register as registerSetter } from '@music163/tango-setting-form'; diff --git a/packages/designer/src/theme.ts b/packages/designer/src/theme.ts new file mode 100644 index 0000000..1f9a090 --- /dev/null +++ b/packages/designer/src/theme.ts @@ -0,0 +1,49 @@ +import { extendTheme } from 'coral-system'; + +export const theme = extendTheme({ + colors: { + primary: { + 10: '#e8f3ff', + 20: '#bedaff', + 30: '#94bfff', + 40: '#6aa1ff', + 50: '#4080ff', + 60: '#165dff', + 70: '#0e42d2', + }, + line: { + normal: '#e5e6eb', + }, + background: { + normal: '#f3f3f4', + secondary: '#e5e6eb', + }, + text: { + title: '#1d2129', + body: '#4e5969', + note: '#86909c', + placeholder: '#c9cdd4', + }, + custom: { + topNavBg: '#222', + topNavColor: '#fff', + toolbarButtonBg: 'rgba(223, 223, 223, 0.08)', + toolbarButtonBgHover: '#4080ff', + toolbarButtonTextColor: '#f5f5f5', + toolbarButtonTextColorHover: '#FFF', + toolbarButtonTextColorDisabled: '#bfbfbf', + sidebarBg: '#fff', + sidebarExpandBg: '#fff', + sidebarItemActiveBg: '#f2f3f5', + sidebarItemHoverBg: '#f2f3f5', + viewportBg: '#f0f2f5', + }, + }, + radii: { + s: '2px', + m: '2px', + l: '4px', + xl: '8px', + xxl: '16px', + }, +}); diff --git a/packages/designer/src/types/index.ts b/packages/designer/src/types/index.ts new file mode 100644 index 0000000..30ee3ba --- /dev/null +++ b/packages/designer/src/types/index.ts @@ -0,0 +1,6 @@ +/** + * 选择模式 + * point 点选 + * area 区域选择 + */ +export type SelectModeType = 'point' | 'area'; diff --git a/packages/designer/src/widgets/selector/copy-node.tsx b/packages/designer/src/widgets/selector/copy-node.tsx new file mode 100644 index 0000000..bf8ad9c --- /dev/null +++ b/packages/designer/src/widgets/selector/copy-node.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { useWorkspace, observer } from '@music163/tango-context'; +import { SelectAction } from '@music163/tango-ui'; +import { CopyOutlined } from '@ant-design/icons'; + +export const CopyNode = observer(() => { + const workspace = useWorkspace(); + return ( + { + workspace.cloneSelectedNode(); + }} + > + + + ); +}); diff --git a/packages/designer/src/widgets/selector/delete-node.tsx b/packages/designer/src/widgets/selector/delete-node.tsx new file mode 100644 index 0000000..1de1bde --- /dev/null +++ b/packages/designer/src/widgets/selector/delete-node.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { useWorkspace, observer } from '@music163/tango-context'; +import { SelectAction } from '@music163/tango-ui'; +import { DeleteOutlined } from '@ant-design/icons'; + +export const DeleteNode = observer(() => { + const workspace = useWorkspace(); + return ( + { + workspace.removeSelectedNode(); + }} + > + + + ); +}); diff --git a/packages/designer/src/widgets/selector/index.ts b/packages/designer/src/widgets/selector/index.ts new file mode 100644 index 0000000..2095323 --- /dev/null +++ b/packages/designer/src/widgets/selector/index.ts @@ -0,0 +1,3 @@ +export * from './copy-node'; +export * from './delete-node'; +export * from './view-source'; diff --git a/packages/designer/src/widgets/selector/view-source.tsx b/packages/designer/src/widgets/selector/view-source.tsx new file mode 100644 index 0000000..20805ea --- /dev/null +++ b/packages/designer/src/widgets/selector/view-source.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { observer, useDesigner } from '@music163/tango-context'; +import { SelectAction } from '@music163/tango-ui'; +import { AimOutlined } from '@ant-design/icons'; + +export const ViewSource = observer(() => { + const designer = useDesigner(); + return ( + { + designer.setActiveView('code'); + }} + > + + + ); +}); diff --git a/packages/designer/src/widgets/sidebar/components-view.tsx b/packages/designer/src/widgets/sidebar/components-view.tsx new file mode 100644 index 0000000..0760c78 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/components-view.tsx @@ -0,0 +1,332 @@ +import React, { useMemo, useState } from 'react'; +import { ComponentPrototypeType, logger, PartialRecord } from '@music163/tango-helpers'; +import { Box, Grid, Text } from 'coral-system'; +import styled from 'styled-components'; +import { upperCamelCase } from '@music163/tango-core'; +import { CollapsePanel, IconFont, Search, Tabs } from '@music163/tango-ui'; +import { Button, Empty, Spin, Popover } from 'antd'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { getDragGhostElement } from '../../helpers'; +import { QuestionCircleOutlined } from '@ant-design/icons'; + +type MenuKeyType = 'common' | 'atom' | 'snippet' | 'block' | 'bizComp'; +type MenuValueType = Array<{ title: string; items: string[] }>; +export type MenuDataType = PartialRecord; +type AddBizDependencyHandlerType = (data: { name: string; version: string; detail: any }) => void; + +export interface ComponentsViewProps { + /** + * 菜单数据 + */ + menuData: MenuDataType; + /** + * 展示业务组件分类 + */ + showBizComps?: boolean; + /** + * 展示基础组件分类 + */ + showBlocks?: boolean; + /** + * 动态加载物料 loading,避免未加载完成用户点击空列表 + */ + loading?: boolean; + /** + * 安装依赖后回调 + */ + onBizDependencyAdd?: AddBizDependencyHandlerType; + /** + * 设置业务组件调用名 + * @param name + * @returns + */ + getBizCompName?: (name: string) => string; +} + +const localeMap = { + common: '基础组件', + atom: '原子组件', + snippet: '组合', + bizComp: '业务组件', + block: '区块', +}; + +const emptyMenuData: MenuDataType = { + common: [], +}; + +export function useFlatMenuData(menuData: T) { + const flatList = useMemo(() => { + const set = new Set(); + Object.values(menuData).forEach((cates) => { + cates.forEach((cate: any) => { + cate.items?.forEach((item: any) => { + set.add(item); + }); + }); + }); + return Array.from(set); + }, [menuData]); + return [ + { + title: '搜索结果', + items: flatList, + }, + ]; +} + +const StyledSpin = styled(Spin)` + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + margin-left: 25px; +`; + +export const ComponentsView = observer( + ({ + menuData = emptyMenuData, + showBizComps = true, + showBlocks = true, + onBizDependencyAdd, + getBizCompName = upperCamelCase, + loading = false, + }: ComponentsViewProps) => { + const [keyword, setKeyword] = useState(''); + const allList = useFlatMenuData(menuData); + const workspace = useWorkspace(); + const [bizCompData, blockData] = useMemo( + () => [ + [{ title: '已安装业务组件', items: workspace.bizComps.map(getBizCompName) }], + [{ title: '项目区块', items: workspace.blocks }], + ], + [workspace.bizComps, workspace.blocks, getBizCompName], + ); + + if (loading) return ; + + const tabs = Object.keys(menuData).map((key) => ({ + key, + label: localeMap[key], + children: , + })); + + if (showBizComps) { + tabs.push({ + key: 'bizComp', + label: localeMap.bizComp, + children: , + }); + } + if (showBlocks) { + tabs.push({ + key: 'block', + label: localeMap.block, + children: , + }); + } + const contentNode = + tabs.length === 1 ? ( + tabs[0].children + ) : ( + + ); + + return ( + + + + + {!keyword ? contentNode : } + + ); + }, +); + +interface MaterialListProps { + /** + * 数据集 + */ + data: MenuValueType; + /** + * 过滤的关键词 + */ + filterKeyword?: string; + /** + * 物料类型 + */ + type?: 'common' | 'bizComp' | 'block'; +} + +function MaterialList({ data, filterKeyword, type = 'common' }: MaterialListProps) { + const workspace = useWorkspace(); + return ( + + {data.map((cate) => { + let items = cate.items || []; + if (filterKeyword) { + items = items.filter((item) => { + const pattern = new RegExp(filterKeyword, 'ig'); + const prototype = workspace.componentPrototypes.get(item); + return prototype && (pattern.test(prototype.name) || pattern.test(prototype.title)); + }); + } + + const addBlock = items.length % 2 === 1; + return ( + + + {!items.length && ( + + )} + + {items.map((item) => { + const prototype = workspace.componentPrototypes.get(item); + if (!prototype) { + logger.log(`<${item}> prototype not found!`); + } + return prototype ? ( + + ) : null; + })} + {addBlock && } + + + + ); + })} + + ); +} + +interface MaterialProps { + data: ComponentPrototypeType; + type: 'common' | 'atom' | 'snippet' | 'bizComp' | 'block'; +} + +const StyledCommonGridItem = styled.div` + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 8px; + cursor: move; + text-align: center; + color: var(--tango-colors-text-body); + background-color: #fff; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + &[class~='block-item'] { + flex-direction: row; + justify-content: flex-start; + } + + .material-icon { + font-size: 40px; + } + + .info { + position: absolute; + right: 4px; + top: 4px; + cursor: pointer; + } + + .anticon-question-circle { + display: none; + position: absolute; + top: 8px; + right: 8px; + } + + img { + height: 40px; + width: 40px; + } + + &:hover { + box-shadow: 0 0 10px rgb(0 0 0 / 10%); + + > span { + color: var(--tango-colors-brand); + } + + .anticon-question-circle { + display: inline-block; + } + } +`; + +function MaterialGrid({ data, type }: MaterialProps) { + const workspace = useWorkspace(); + + const handleDragStart = (e: React.DragEvent) => { + e.dataTransfer.effectAllowed = 'move'; + + workspace.dragSource.set({ + name: data.name, + }); + + const ghost = getDragGhostElement(); + e.dataTransfer.setDragImage(ghost, 0, 0); + }; + + const handleDragEnd = () => { + workspace.dragSource.clear(); + }; + + const icon = data.icon || 'icon-placeholder'; + + return ( + + {icon.startsWith('icon-') ? ( + + ) : ( + {data.name} + )} + + {data.title} + + + {data.name} + + {data.docs || data.help ? ( + }> + + + ) : null} + + ); +} + +function CommonMaterialInfoBox({ help, docs }: ComponentPrototypeType) { + return ( + + {!!help && {help}} + {!!docs && ( + + )} + + ); +} diff --git a/packages/designer/src/widgets/sidebar/datasource-view/index.tsx b/packages/designer/src/widgets/sidebar/datasource-view/index.tsx new file mode 100644 index 0000000..007d53c --- /dev/null +++ b/packages/designer/src/widgets/sidebar/datasource-view/index.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { Tabs } from '@music163/tango-ui'; +import InterfaceConfig from './interface-config'; +import ProxyConfig from '../setting-view/proxy-config'; + +export * from './interface-config'; + +export function DataSourceView(props: Record) { + return ( + + , + }, + { + key: 'proxy', + label: '代理', + children: , + }, + ]} + /> + + ); +} diff --git a/packages/designer/src/widgets/sidebar/datasource-view/interface-config.tsx b/packages/designer/src/widgets/sidebar/datasource-view/interface-config.tsx new file mode 100644 index 0000000..f84a2e8 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/datasource-view/interface-config.tsx @@ -0,0 +1,533 @@ +import React, { useState, useEffect, useMemo } from 'react'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { Box, Link, css } from 'coral-system'; +import { Button, FormProps, Empty, Space, Dropdown } from 'antd'; +import { PlayCircleOutlined } from '@ant-design/icons'; +import { Form, InputCode, Menu, Panel, JsonView, Search } from '@music163/tango-ui'; +import { + isNil, + isVariableString, + getVariableContent, + isValidFunctionCode, + logger, + code2object, +} from '@music163/tango-helpers'; +import { + ESFDataSourceType, + ESFOperationType, + ESFHTTPMethodType, + ESFHTTRequestType, +} from '@music163/tango-core'; +import { useSandboxQuery } from '../../../context'; + +/** + * 将 api 路径转换为默认的驼峰方法名 + */ +export const getApiDefaultName = (url: string) => + url + // 去除 api + 模块名前缀 + // - 云音乐 api 规范为 /api/模块名/ + // - 后端公技基本使用 /模块名/api/ + // - 中台类服务似乎常用 /api/middle/模块名/ + // TODO: 是否需要去除模块名?一般同一个应用是同一个模块名,去掉可以缩减方法名长度,但确实有模块名不一样且后面的路径完全一致的接口 + // 目前的实现是去除了模块名,只干掉 /api/middle/ 和 /api/backend/ 这种常用前缀 + .replace(/^\/[^/]+?\/api\/|^\/api\/middle\/|^\/api\/backend\/|^\/api\//, '') + // 去除路由参数 + .replace(/\/\{.*?\}/, '') + // 忽略下划线与减号,将后面的字符转成大驼峰 + .replace(/[-/_]+\w/g, (str) => str.replace(/[-/_]+/, '').toUpperCase()) + // 首字母转小写 + .replace(/^./, (str) => str.toLowerCase()) + // 方法名以数字开头,添加 api 前缀 + .replace(/^\d/, (str) => `api${str}`); + +type DataServiceViewProps = { + onAdd?: (values: Record | Array>) => void; + onUpdate?: (values: Record) => void; + onDelete?: (values: Record) => void; +}; + +// 判断是不是一个完整的 url 请求 +const VALID_REQUEST_URL_REG = /((http|https):)?\/\/([\w.]+\/?)\S*/; + +/** + * 根据 url 类型推断方法类型 + */ +export function inferServiceType(url?: string) { + // 删除的时候,也会走一下这个逻辑,兼容 + if (!url) return ESFDataSourceType.Custom; + // 如果是完整的,是 custom + if (VALID_REQUEST_URL_REG.test(url)) return ESFDataSourceType.Custom; + // 如果是 / 开头的,认为是 ox 的 + if (url.startsWith('/')) return ESFDataSourceType.OvermindX; + /** + * 这里预留出数据平台 fastX 的 + */ + // 默认是 ox 的 + return ESFDataSourceType.OvermindX; +} + +// http 方法类型 +const httpMethods = Object.keys(ESFHTTPMethodType).map((key) => ({ + label: key, + value: key, +})); + +// requestType 类型 +const requestTypes = Object.keys(ESFHTTRequestType).map((key) => ({ + label: key, + value: ESFHTTRequestType[key], +})); + +const detailFormStyle = css` + .ant-form-item { + margin-bottom: 12px; + } +`; + +const buttonGroupStyle = css` + width: 100%; + + button { + width: 50%; + } +`; + +const DataSourceView = observer(({ onAdd, onUpdate, onDelete }: DataServiceViewProps) => { + const [serviceKey, setServiceKey] = useState(); + const [keyword, setKeyword] = useState(); + const [visible, setVisible] = useState(null); + const workspace = useWorkspace(); + const sandbox = useSandboxQuery(); + + const serviceMap = workspace.serviceModule.serviceFunctions; + const serviceItems = useMemo(() => { + let list = Object.keys(serviceMap).map((key) => ({ + key, + label: key, + note: serviceMap[key].app || 'http', + deletable: true, + deletableConfirm: '确定删除此服务函数吗?', + })); + if (keyword) { + list = list.filter((item) => item.label.includes(keyword)); + } + return list; + }, [serviceMap, keyword]); + const serviceData = serviceMap[serviceKey]; + const isAddMode = !serviceKey; + + return ( + + + + + + + + { + setServiceKey(key); + setVisible('detail'); + }} + onDelete={(key) => { + const values = { + name: key, + ...workspace.serviceModule.serviceFunctions[key], + }; + workspace.removeServiceFunction(key); + onDelete && onDelete(values); + setVisible(null); + }} + /> + + + + {visible === 'detail' && ( + <> + + { + setServiceKey(undefined); + setVisible(null); + }} + onSubmit={(values, mode: ESFOperationType) => { + function shapeServiceValues(values: any) { + const shapeValues = { ...values }; + delete shapeValues.type; + // 兼容旧版,如果 formatter 包裹了 {} 则删掉首尾 + if (shapeValues.formatter && isVariableString(shapeValues.formatter)) { + shapeValues.formatter = getVariableContent(shapeValues.formatter); + } + return shapeValues; + } + // 移除掉不必要的属性 + const data = shapeServiceValues(values); + if (mode === ESFOperationType.ADD) { + workspace.addServiceFunction(data); + onAdd && onAdd(values); + } else if (mode === ESFOperationType.UPDATE) { + workspace.updateServiceFunction(data); + onUpdate && onUpdate(values); + } + setServiceKey(values.name); + }} + /> + + {serviceKey ? ( + + ) : null} + + )} + {!visible && ( + + + + )} + + + ); +}); + +interface ServiceDetailFormProps extends FormProps { + serviceKeys?: string[]; + onCancel?: () => void; + onSubmit?: (values: any, mode: ESFOperationType) => void; +} + +function ServiceDetailForm({ + serviceKeys = [], + onCancel, + onSubmit, + initialValues, + ...formProps +}: ServiceDetailFormProps) { + const isModifyMode = !!initialValues?.name; // 是否为更新模式 + const [disabled, setDisabled] = useState(isModifyMode); + const [form] = Form.useForm(); + // 监听服务类型变化,默认是自定义 + const formType = Form.useWatch('type', form); + + // 新建的时候,类型变换重置部分字段 + useEffect(() => { + if (!formType) return; + !isModifyMode && + form.setFieldsValue({ + url: undefined, + method: undefined, + formatter: undefined, + }); + }, [formType, form, isModifyMode]); + + return ( +
    { + onSubmit(values, isModifyMode ? ESFOperationType.UPDATE : ESFOperationType.ADD); + setDisabled(true); + }} + {...formProps} + > + + + + ) + } + /> + + + + + 提供格式化函数,对结果进行格式化。请参考 + + 云音乐接口规范 + + 。 + + } + validateTrigger="onBlur" + rules={[ + { + validator(_, value) { + if (!value) { + return Promise.resolve(); + } + + return isValidFunctionCode(value) + ? Promise.resolve() + : Promise.reject(new Error('请提供合法的函数代码!')); + }, + }, + ]} + extra={ + !disabled && ( + + res' }, + { label: '返回数据部分(云音乐标准规范)', key: 'res => res.data' }, + ], + onClick: ({ key }) => { + form.setFieldValue('formatter', key); + }, + }} + > + + + + ) + } + > + + + + {isModifyMode ? ( + + {!disabled ? ( + <> + + + + ) : ( + + )} + + ) : ( + + + + + )} + + + ); +} + +interface ServicePreviewProps { + data?: object; +} + +function ServicePreview({ data }: ServicePreviewProps) { + let ret: React.ReactNode; + + if (!isNil(data)) { + switch (typeof data) { + case 'object': + ret = ; + break; + default: + ret = String(data); + break; + } + } + + const initialRet = ; + + return ( + + {ret || initialRet} + + ); +} + +interface ServiceFunctionPreviewProps { + appContext?: any; + functionName?: string; +} + +function ServiceFunctionPreview({ appContext, functionName }: ServiceFunctionPreviewProps) { + const [payload, setPayload] = useState({}); + const [result, setResult] = useState(); + const [error, setError] = useState(''); + return ( + + + + } + borderTop="solid" + borderTopColor="line.normal" + > + + { + const obj = code2object(value); + setPayload(obj); + }} + /> + + + {error || (result ? : '点击预览按钮测试接口返回值')} + + + ); +} + +export default DataSourceView; diff --git a/packages/designer/src/widgets/sidebar/dependency-view.tsx b/packages/designer/src/widgets/sidebar/dependency-view.tsx new file mode 100644 index 0000000..e99de7d --- /dev/null +++ b/packages/designer/src/widgets/sidebar/dependency-view.tsx @@ -0,0 +1 @@ +export { default as DependencyView } from './setting-view/dependency-config'; diff --git a/packages/designer/src/widgets/sidebar/history-view.tsx b/packages/designer/src/widgets/sidebar/history-view.tsx new file mode 100644 index 0000000..b28f89f --- /dev/null +++ b/packages/designer/src/widgets/sidebar/history-view.tsx @@ -0,0 +1,49 @@ +import React, { useMemo } from 'react'; +import cx from 'classnames'; +import { Box, css } from 'coral-system'; +import { format } from 'date-fns'; +import { observer, useWorkspace } from '@music163/tango-context'; + +export const HistoryView = observer(() => { + const workspace = useWorkspace(); + const history = workspace.history; + + return ( + + {history.list.map((item, index) => ( + + ))} + + ); +}); + +const itemStyle = css` + line-height: 2.5; + cursor: pointer; + user-select: none; + + &:hover { + background-color: var(--tango-colors-gray-10); + } + + &.active { + color: var(--tango-colors-brand); + } +`; + +function HistoryItem({ data, ...rest }: any) { + const { time, message } = data; + const formatTime = useMemo(() => { + return format(time, 'yyyy/MM/dd HH:mm:mm'); + }, [time]); + return ( + + {message} + {formatTime} + + ); +} diff --git a/packages/designer/src/widgets/sidebar/index.ts b/packages/designer/src/widgets/sidebar/index.ts new file mode 100644 index 0000000..1120322 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/index.ts @@ -0,0 +1,7 @@ +export * from './components-view'; +export * from './pages-view'; +export * from './datasource-view'; +export * from './history-view'; +export * from './dependency-view'; +export * from './model-view'; +export * from './setting-view'; diff --git a/packages/designer/src/widgets/sidebar/model-view.tsx b/packages/designer/src/widgets/sidebar/model-view.tsx new file mode 100644 index 0000000..5f260dc --- /dev/null +++ b/packages/designer/src/widgets/sidebar/model-view.tsx @@ -0,0 +1,125 @@ +import React from 'react'; +import { Button, Space } from 'antd'; +import { EditableVariableTree, EditableVariableTreeProps } from '@music163/tango-setting-form'; +import { useBoolean } from '@music163/tango-helpers'; +import { Panel, Form, IconButton } from '@music163/tango-ui'; +import { FileAddOutlined, QuestionCircleOutlined } from '@ant-design/icons'; +import { observer, useWorkspace, useWorkspaceData } from '@music163/tango-context'; + +type ModelViewProps = EditableVariableTreeProps & { + wrapperHeight?: number | string; +}; + +export const ModelView = observer(({ wrapperHeight = '100%', ...restProps }: ModelViewProps) => { + const [isAdd, { on, off }] = useBoolean(); + const workspace = useWorkspace(); + const { storeVariables } = useWorkspaceData(); + const storeNames = storeVariables.map((item) => item.title); + + return ( + } + href="https://music-doc.st.netease.com/st/tango-docs/docs/guide/basic/model" + /> + } + extra={ + + } + bodyProps={{ p: 0 }} + > + {isAdd ? ( + { + workspace.addStoreModule(values.name, emptyStoreTemplate); + off(); + }} + /> + ) : ( + { + workspace.addStoreState(storeName, data.name, data.initialValue); + }} + onDeleteVariable={(storeName, stateName) => { + workspace.removeStoreState(storeName, stateName); + }} + onDeleteStore={(storeName) => { + workspace.removeStoreModule(storeName); + }} + onSave={(code, node) => { + workspace.updateModuleCodeByVariablePath(node.key, code); + }} + height="100%" + {...restProps} + /> + )} + + ); +}); + +interface AddStoreFormProps { + existNames?: string[]; + onCancel?: () => void; + onSubmit?: (data: { name: string }) => void; +} + +function AddStoreForm({ existNames = [], onCancel, onSubmit }: AddStoreFormProps) { + return ( + +
    { + onSubmit && onSubmit(values); + }} + > + + + + + + + + +
    + ); +} + +const emptyStoreTemplate = ` +import { defineStore } from '@music163/tango-boot'; +export default defineStore({ +}); +`; diff --git a/packages/designer/src/widgets/sidebar/pages-view/index.tsx b/packages/designer/src/widgets/sidebar/pages-view/index.tsx new file mode 100644 index 0000000..d09d282 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/pages-view/index.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { CollapsePanel } from '@music163/tango-ui'; +import { StateView } from './state'; +import { OutlineView } from './outline'; + +export interface OutlineViewProps { + /** + * 展示状态视图 + */ + showStateView?: boolean; +} + +export function PagesView({ showStateView = true }: OutlineViewProps) { + return ( + + + + + {showStateView && ( + + + + )} + + ); +} diff --git a/packages/designer/src/widgets/sidebar/pages-view/outline.tsx b/packages/designer/src/widgets/sidebar/pages-view/outline.tsx new file mode 100644 index 0000000..ff79049 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/pages-view/outline.tsx @@ -0,0 +1,165 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { Space, Tree } from 'antd'; +import { Box, css } from 'coral-system'; +import { IconFont } from '@music163/tango-ui'; +import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { DropMethod, TangoViewNodeDataType } from '@music163/tango-core'; +import { parseDndId } from '@music163/tango-helpers'; +import { useSandboxQuery } from '../../../context'; +import { buildQueryBySlotId } from '../../../helpers'; + +const outlineStyle = css` + .ant-tree-title { + color: rgb(85, 85, 85); + } + + .ant-tree .ant-tree-treenode { + padding: 2px; + } + + .ant-tree-indent-unit { + width: 12px; + } + + .ant-tree .ant-tree-node-content-wrapper { + white-space: nowrap; + transition: none; + } + .variable-row { + font-size: 12px; + } + .ant-tree-switcher-noop { + display: none; + } +`; + +const filedNames = { + title: 'component', + key: 'id', + children: 'children', +}; + +const OutlineTreeNode: React.FC = observer(({ node }: { node: TangoViewNodeDataType }) => { + const workspace = useWorkspace(); + const sandboxQuery = useSandboxQuery(); + const [visible, setVisible] = useState(true); + const nodeLabel = useMemo(() => { + const { component, index } = parseDndId(node.id); + return `${component}:${index}`; + }, [node.id]); + const componentPrototype = workspace.componentPrototypes.get(node.component); + const icon = componentPrototype?.icon || 'icon-placeholder'; + + const iconRender = icon.startsWith('icon-') ? ( + + ) : ( + {componentPrototype.name} + ); + + const toggleVisible = (nodeId: string) => { + sandboxQuery.getElement(buildQueryBySlotId(nodeId)).style.visibility = visible + ? 'hidden' + : 'visible'; + setVisible(!visible); + }; + + const VisibleIcon = visible ? EyeOutlined : EyeInvisibleOutlined; + return ( + + {iconRender} {nodeLabel} + {/* 切换显示 */} + { + e.stopPropagation(); + toggleVisible(node.id); + }} + /> + + ); +}); + +export const OutlineView = observer(() => { + const workspace = useWorkspace(); + const sandboxQuery = useSandboxQuery(); + const [selectedKeys, setSelectedKeys] = useState( + workspace.selectSource.selected.map((item) => item.id), + ); + const file = workspace.activeViewModule; + const nodesTree = file.nodesTree as TangoViewNodeDataType[]; + + useEffect(() => { + setSelectedKeys(workspace.selectSource.selected.map((item) => item.id)); + }, [workspace.selectSource.selected]); + + if (!nodesTree.length) { + return ( + + 没有指定文件,或文件{workspace.activeViewFile}没有有效的节点树 + + ); + } + + return ( + + { + const data = sandboxQuery.getDraggableParentsData( + buildQueryBySlotId(keys[0] as string), + true, + ); + if (data && data.id) { + workspace.selectSource.select({ + id: data.id, + name: data.name, + bounding: data.bounding, + parents: data.parents, + }); + } + setSelectedKeys(keys); + }} + blockNode + autoExpandParent + defaultExpandAll + draggable + onDragStart={(data) => { + const prototype = workspace.componentPrototypes.get(data.node.component); + if (!prototype) { + return; + } + const { canDrag } = prototype.rules || {}; + if (canDrag && !canDrag()) { + return; + } + workspace.dragSource.set({ + id: data.node.id, + name: data.node.component, + }); + }} + onDrop={(data) => { + const dropKey = data.node.key as string; + let method; + if (data.dropToGap) { + // 插入节点的后面 + method = DropMethod.InsertAfter; + } else { + // 作为第一个子节点 + method = DropMethod.InsertFirstChild; + } + workspace.dragSource.dropTarget.set( + { + id: dropKey, + }, + method, + ); + workspace.dropNode(); + }} + titleRender={(node) => } + /> + + ); +}); diff --git a/packages/designer/src/widgets/sidebar/pages-view/state.tsx b/packages/designer/src/widgets/sidebar/pages-view/state.tsx new file mode 100644 index 0000000..98e455f --- /dev/null +++ b/packages/designer/src/widgets/sidebar/pages-view/state.tsx @@ -0,0 +1,60 @@ +import React, { useEffect, useReducer } from 'react'; +import { observer } from '@music163/tango-context'; +import { isFunction, isObject, pick } from '@music163/tango-helpers'; +import { JsonView } from '@music163/tango-ui'; +import { useSandboxQuery } from '../../../context'; + +function processTango(obj: any = {}, index = 0) { + const ret = {}; + Object.keys(obj).forEach((key) => { + const val = obj[key]; + if (index > 2) { + ret[key] = val; + } else if (isFunction(val)) { + ret[key] = '[Function]'; + } else if (isObject(val)) { + ret[key] = processTango(val, index + 1); + } else { + ret[key] = val; + } + }); + return ret; +} + +export const StateView = observer(() => { + const sandboxQuery = useSandboxQuery(); + const [, forceUpdate] = useReducer((x) => x + 1, 0); + const tangoContext = pick(sandboxQuery.window['tango'] || {}, [ + 'stores', + 'refs', + 'services', + 'config', + ]); + const callback = () => { + forceUpdate(); + }; + useEffect(() => { + const settingForm = document.querySelector('.SettingPanel'); + const ob = new MutationObserver(callback); + if (settingForm) { + ob.observe(settingForm, { + attributes: true, + childList: true, + subtree: true, + }); + } + return () => { + ob.disconnect(); + }; + }, []); + return ( + + ); +}); diff --git a/packages/designer/src/widgets/sidebar/setting-view/common-config.tsx b/packages/designer/src/widgets/sidebar/setting-view/common-config.tsx new file mode 100644 index 0000000..a7bb1f5 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/setting-view/common-config.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { ConfigGroup, ConfigItem } from '@music163/tango-ui'; +import { useWorkspace, observer } from '@music163/tango-context'; + +const envList = [ + { label: '测试环境', value: 'test' }, + { label: '回归环境', value: 'reg' }, +]; + +export default observer(() => { + const workspace = useWorkspace(); + + return ( +
    + + { + workspace.tangoConfigJson + ?.setValue('engine.autoRemoveUnusedImports', () => { + return checked; + }) + .update(); + }} + /> + + + { + workspace.tangoConfigJson?.setValue('platform.autoDeploy', value).update(); + }} + /> + { + workspace.tangoConfigJson?.setValue('platform.upgradeAutoPush', checked).update(); + }} + /> + +
    + ); +}); diff --git a/packages/designer/src/widgets/sidebar/setting-view/dependency-config.tsx b/packages/designer/src/widgets/sidebar/setting-view/dependency-config.tsx new file mode 100644 index 0000000..c8118c4 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/setting-view/dependency-config.tsx @@ -0,0 +1,732 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { + Button, + Input, + Modal, + Form, + List, + Tooltip, + Popconfirm, + Radio, + Select, + Space, + message, + Tag, +} from 'antd'; +import { Box, Text } from 'coral-system'; +import semverLt from 'semver/functions/lt'; +import semverValid from 'semver/functions/valid'; +import { ConfigGroup, ConfigItem } from '@music163/tango-ui'; +import { + BookOutlined, + GitlabOutlined, + PlusOutlined, + QuestionCircleOutlined, +} from '@ant-design/icons'; +import { useBoolean } from '@music163/tango-helpers'; +import { isUndefined } from 'lodash-es'; +import { useRemoteServices, useSandboxQuery } from '../../../context'; +import { Workspace } from '@music163/tango-core'; + +const { Option } = Select; + +enum DependencyItemType { + 基础包 = 'base', + 业务组件 = 'biz', + 其他依赖 = 'other', +} + +export interface DependencyConfigProps { + onBizDependencyAdd?: Function; + onBaseDependencyAdd?: Function; +} + +export default observer(({ onBizDependencyAdd, onBaseDependencyAdd }: DependencyConfigProps) => { + // baseDependencies + const [templateBaseDependencies, setTemplateBaseDependencies] = useState< + Record< + string, + { + description: string; + [propName: string]: any; + } + > + >(); + const workspace = useWorkspace(); + const remoteServices = useRemoteServices(); + const dependencies = workspace?.listDependencies(); + const packages = workspace?.tangoConfigJson?.getValue('packages'); + const packageNames = useMemo(() => Object.keys(packages || {}), [packages]); + const bizDependencies = workspace?.bizComps; + const baseDependencies = workspace?.baseComps; + + useEffect(() => { + if (!workspace?.tangoConfigJson.getValue('type')) return; + remoteServices?.DependencyService?.listBaseDependencies({ + type: workspace?.tangoConfigJson.getValue('type'), + }).then((data: any) => setTemplateBaseDependencies(data)); + }, [workspace, remoteServices]); + + // 其他依赖 + const otherDeps = useMemo( + () => + // 优先展示 tango.config.json 的依赖,以表明 umd 资源的加载顺序 + [...new Set([...packageNames, ...Object.keys(dependencies || {})])] + .filter((key) => !baseDependencies?.includes(key) && !bizDependencies?.includes(key)) + .map((key) => ({ + name: key, + version: dependencies?.[key] ?? packages?.[key]?.version, + package: packages?.[key], + })), + [dependencies, baseDependencies, bizDependencies, packages, packageNames], + ); + + // 业务组件依赖 + const bizDeps = useMemo( + () => + bizDependencies?.map((name: string) => ({ + name, + version: dependencies[name] ?? packages?.[name]?.version, + package: packages?.[name], + })) || [], + [bizDependencies, dependencies, packages], + ); + + // 基础包 + const baseDeps = useMemo( + () => + baseDependencies?.map((name: string) => ({ + name, + version: dependencies[name] ?? packages?.[name]?.version, + description: (templateBaseDependencies || {})[name]?.description, + package: packages?.[name], + })) || [], + [baseDependencies, dependencies, templateBaseDependencies, packages], + ); + + return ( + + + + 基础包  + + - 基础包不能被删除 +
    + - 升级默认升级到最新版本 +
    - 如果想新增对应模板基础包,请联系管理员 + + } + > + +
    + + } + key={DependencyItemType.基础包} + > + + + +
    + + 业务组件  + + - 组件来源: + + 红石平台 + +
    + - 安装成功后,可到【组件 - 业务组件】面板进行拖拽 +
    - 升级默认升级到最新版本 + + } + > + +
    + + } + key={DependencyItemType.业务组件} + > + + + +
    + + + + + +
    + ); +}); + +interface DependencyItemProps { + name?: string; + version?: string; + description?: string; + package?: { [x: string]: any }; +} + +interface DependencyListProps { + type: string; + dependencies: DependencyItemProps[]; + templateBaseDependencies?: Record< + string, + { + description: string; + [propName: string]: any; + } + >; + onUpgrade?: Function; +} + +interface RenderItemProps { + type: string; + record: DependencyItemProps; + templateBaseDependencies?: Record< + string, + { + description: string; + [propName: string]: any; + } + >; + onUpgrade?: Function; + showTags?: boolean; +} + +function RenderItem({ + type, + record, + templateBaseDependencies, + onUpgrade, + showTags = true, +}: RenderItemProps) { + const [version, setVersion] = useState(); + const [versionList, setVersionList] = useState>([]); + const [open, { on, off }] = useBoolean(false); + + const workspace = useWorkspace() as Workspace; + const remoteServices = useRemoteServices(); + + useEffect(() => { + remoteServices?.DependencyService?.listPackageVersions({ packageName: record.name }).then( + (data: any) => setVersionList((data || []).map((v: string) => ({ label: v, value: v }))), + ); + }, [remoteServices, record]); + + const basePackage = useMemo(() => { + if (type !== DependencyItemType.基础包 || !templateBaseDependencies) return undefined; + return templateBaseDependencies[record.name]; + }, [type, templateBaseDependencies, record]); + + /** + * 处理依赖升级的逻辑 + */ + function onDepUpgrade() { + // 根据是否有 packages 字段,判断是否已升级为新的规范 + const hasUpgraded = !!workspace.tangoConfigJson?.getValue('packages'); + + switch (type) { + case DependencyItemType.业务组件: + case DependencyItemType.其他依赖: { + workspace.updateDependency( + record.name, + version, + hasUpgraded + ? { + package: record?.package, + } + : {}, + ); + message.success(`依赖 ${record.name} 升级成功`); + onCloseModal(); + break; + } + case DependencyItemType.基础包: { + // 处理 package.json + workspace.updateDependency( + record.name, + basePackage?.version || 'latest', + hasUpgraded + ? { + package: record?.package, + } + : {}, + ); + + // 配置已经合并为新版,不需要走旧的逻辑 + if (!hasUpgraded) { + // 更新 tango.config.json externalResources + workspace.tangoConfigJson + .setValue('sandbox.externalResources', (targetValue) => { + // 需要被替换的位置 + const replaceIndex = (targetValue as string[]).findIndex((resource: string) => + resource.includes(record.name), + ); + // 需要被替换的元素,可能有多个,比如物料既有 js 又有 css + const replaceArr = + (targetValue as string[]).filter((resource: string) => + resource.includes(record.name), + ) || []; + (targetValue as string[]).splice( + replaceIndex, + replaceArr.length, + ...basePackage.resources.map((resource: string) => + resource.replace('{latest_version}', basePackage.version), + ), + ); + return targetValue; + }) + .update(); + } + message.success(`依赖 ${record.name} 升级成功`); + break; + } + default: + break; + } + + if (onUpgrade) { + onUpgrade({ + type, + name: record.name, + version, + detail: record, + }); + } + } + + /** + * 处理依赖删除的逻辑 + */ + function onDepDelete() { + switch (type) { + case DependencyItemType.业务组件: { + // 移除 package.json + workspace.removeBizComp(record.name); + message.success(`依赖 ${record.name} 移除成功`); + break; + } + case DependencyItemType.其他依赖: + case DependencyItemType.基础包: { + workspace.removeDependency(record.name); + message.success(`依赖 ${record.name} 移除成功`); + break; + } + default: + break; + } + } + + function onCloseModal() { + setVersion(undefined); + off(); + } + + const baseNeedUpgrade: undefined | boolean = useMemo(() => { + if (type !== DependencyItemType.基础包 || !basePackage || !record) return; + // 非法版本号,比如 'latest',会报错,直接默认升级走升级替换为最新版本 + if (!semverValid(record.version)) return true; + return semverLt(record.version, basePackage.version); + }, [type, basePackage, record]); + + const tags = useMemo(() => { + const packages = workspace.tangoConfigJson?.getValue('packages'); + // 旧配置格式化不展示 + if (!showTags || !packages) { + return false; + } + + const { name, package: packageInfo } = record; + const { resources } = packageInfo || {}; + const dependencies = workspace.packageJson?.getValue('dependencies'); + const hasUmd = !!resources?.length; + const unsafeUmd = + hasUmd && resources.some((e: string) => /\/\/unpkg\.f[nt]\.netease\.com\//.test(e)); + const packageJsonOnly = dependencies?.[name] && !packageInfo; + const tangoConfigJsonOnly = !dependencies?.[name] && packageInfo; + + return [ + hasUmd && ( + + + UMD + + + ), + unsafeUmd && ( + + + 非 CDN + + + ), + packageJsonOnly && ( + + package.json + + ), + tangoConfigJsonOnly && ( + + tango.config.json + + ), + ].filter((e) => e); + }, [showTags, workspace, record]); + + return ( + + 升级 + , + + 删除 + , + ] + : baseNeedUpgrade + ? [ + + 升级 + , + ] + : [ + + {!isUndefined(baseNeedUpgrade) && '已是最新'} + , + ] + } + > + + {record.name} + + {semverValid(record.version) && record.version} + + {showTags && {tags}} + + } + description={ + + } + /> + + + 选择依赖版本号  + + + + + + ) : type === DependencyItemType.业务组件 ? ( + + ) : ( + ({ + label: v, + value: v, + }))} + optionFilterProp="value" + /> +
    + )} + + + + ); +} diff --git a/packages/designer/src/widgets/sidebar/setting-view/index.tsx b/packages/designer/src/widgets/sidebar/setting-view/index.tsx new file mode 100644 index 0000000..5266149 --- /dev/null +++ b/packages/designer/src/widgets/sidebar/setting-view/index.tsx @@ -0,0 +1,89 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { Alert, Button } from 'antd'; +import { Tabs } from '@music163/tango-ui'; +import CommonConfig from './common-config'; +import DependencyConfig, { DependencyConfigProps } from './dependency-config'; +import { useDesigner } from '@music163/tango-context'; + +export interface SettingViewProps { + dependencyConfig?: DependencyConfigProps; +} + +export function SettingView({ dependencyConfig }: SettingViewProps) { + const designer = useDesigner(); + return ( + + , + }, + { + key: 'dataSource', + label: '数据源', + children: ( + + + 该面板已移动到{' '} + {' '} + 面板中 + + } + type="info" + /> + + ), + }, + { + key: 'proxy', + label: '代理', + children: ( + + + 该面板已移动到{' '} + {' '} + 面板中 + + } + type="info" + /> + + ), + }, + { + key: 'common', + label: '其他', + children: , + }, + ]} + /> + + ); +} diff --git a/packages/designer/src/widgets/sidebar/setting-view/proxy-config.tsx b/packages/designer/src/widgets/sidebar/setting-view/proxy-config.tsx new file mode 100644 index 0000000..107795d --- /dev/null +++ b/packages/designer/src/widgets/sidebar/setting-view/proxy-config.tsx @@ -0,0 +1,193 @@ +import React, { useMemo } from 'react'; +import { observer, useWorkspace } from '@music163/tango-context'; +import { ConfigGroup, ConfigItem } from '@music163/tango-ui'; +import { Box, css } from 'coral-system'; +import { Input, Switch, Form, Button, message, FormProps } from 'antd'; +import { CloseCircleOutlined, CloseOutlined } from '@ant-design/icons'; + +export default observer(() => { + const workspace = useWorkspace(); + return ( + + + { + workspace.tangoConfigJson?.setValue('proxy', value).update(); + message.success('proxy 规则更新成功!'); + }} + /> + + + ); +}); + +export const proxyRuleStyle = css` + position: relative; + border: 1px dashed #f0f0f0; + padding-top: 24px; + border-radius: 4px; + margin-bottom: 8px; + + &:hover { + border-color: var(--tango-colors-brand); + } + + > .RuleRemoveBtn { + position: absolute; + top: 0; + right: 0; + } + + .RuleHeaderItem { + margin-bottom: 10px; + } +`; + +export const proxyManageFormStyle: FormProps = { + labelCol: { + span: 6, + }, + wrapperCol: { + span: 16, + }, + autoComplete: 'off', + colon: false, +}; + +function ProxyManage({ + initialValues: initialValuesProp = {}, + onSave, +}: { + initialValues?: object; + onSave?: (values: any) => void; +}) { + const initialValues = useMemo(() => { + const proxy = Object.keys(initialValuesProp).reduce((prev, cur) => { + prev.push({ + path: cur, + ...initialValuesProp[cur], + }); + return prev; + }, []); + return { + proxy, + }; + }, [initialValuesProp]); + + return ( +
    { + const proxy = values.proxy.reduce((prev: object, { path, ...rest }: any) => { + prev[path] = rest; + return prev; + }, {}); + onSave?.(proxy); + }} + > + + {(fields, { add, remove }) => { + return ( + <> + {fields.map((field) => ( + + + + + ); + }} + + + + +
    + ); +} diff --git a/packages/designer/src/widgets/toolbar/history.tsx b/packages/designer/src/widgets/toolbar/history.tsx new file mode 100644 index 0000000..3cabba0 --- /dev/null +++ b/packages/designer/src/widgets/toolbar/history.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Box } from 'coral-system'; +import { ToggleButton, IconFont } from '@music163/tango-ui'; +import { observer, useWorkspace } from '@music163/tango-context'; + +export const HistoryTool = observer(() => { + const workspace = useWorkspace(); + return ( + + { + workspace.history.back(); + workspace.selectSource.clear(); + }} + > + + + { + workspace.history.forward(); + workspace.selectSource.clear(); + }} + > + + + + ); +}); diff --git a/packages/designer/src/widgets/toolbar/index.ts b/packages/designer/src/widgets/toolbar/index.ts new file mode 100644 index 0000000..b67cf3a --- /dev/null +++ b/packages/designer/src/widgets/toolbar/index.ts @@ -0,0 +1,7 @@ +export * from './history'; +export * from './mode-switch'; +export * from './preview'; +export * from './route-switch'; +export * from './viewport-refresh'; +export * from './viewport-switch'; +export * from './toggle-panel'; diff --git a/packages/designer/src/widgets/toolbar/mode-switch.tsx b/packages/designer/src/widgets/toolbar/mode-switch.tsx new file mode 100644 index 0000000..3712e89 --- /dev/null +++ b/packages/designer/src/widgets/toolbar/mode-switch.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Group } from 'coral-system'; +import { ToggleButton } from '@music163/tango-ui'; +import { observer, useDesigner } from '@music163/tango-context'; + +export const ModeSwitchTool = observer(() => { + const designer = useDesigner(); + return ( + + { + designer.setActiveView('design'); + }} + tip="设计视图" + > + 设计 + + { + designer.setActiveView('code'); + }} + tip="源码视图" + > + 源码 + + + ); +}); diff --git a/packages/designer/src/widgets/toolbar/preview.tsx b/packages/designer/src/widgets/toolbar/preview.tsx new file mode 100644 index 0000000..104cb8a --- /dev/null +++ b/packages/designer/src/widgets/toolbar/preview.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { ToggleButton } from '@music163/tango-ui'; +import { EyeOutlined } from '@ant-design/icons'; +import { observer, useDesigner } from '@music163/tango-context'; + +export const PreviewTool = observer(() => { + const designer = useDesigner(); + + return ( + { + designer.toggleIsPreview(!designer.isPreview); + }} + tip="预览" + > + + + ); +}); diff --git a/packages/designer/src/widgets/toolbar/route-switch.tsx b/packages/designer/src/widgets/toolbar/route-switch.tsx new file mode 100644 index 0000000..bb02602 --- /dev/null +++ b/packages/designer/src/widgets/toolbar/route-switch.tsx @@ -0,0 +1,291 @@ +import React, { useMemo, useState } from 'react'; +import { Button, Popconfirm, Modal, ModalProps } from 'antd'; +import { Box, css, Group, Text } from 'coral-system'; +import { FileOutlined, DeleteOutlined, CopyOutlined, SettingOutlined } from '@ant-design/icons'; +import { array2object, callAll } from '@music163/tango-helpers'; +import { PageConfigType } from '@music163/tango-core'; +import { Form, ToggleButton } from '@music163/tango-ui'; +import { observer, useWorkspace } from '@music163/tango-context'; + +export const RouteSwitchTool = observer(() => { + const workspace = useWorkspace(); + return ( + { + workspace.setActiveRoute(path); + }} + onRemove={(path) => { + workspace.removeViewModule(path); + }} + onCopy={(...payloads) => workspace.copyViewPage(...payloads)} + onUpdate={(...payloads) => workspace.updateRoute(...payloads)} + /> + ); +}); + +interface PageSelectProps { + value?: string; + onSelect?: (path: string) => void; + onRemove?: PageListProps['onRemove']; + onCopy?: PageListProps['onCopy']; + onUpdate?: PageListProps['onUpdate']; + options?: PageListProps['items']; +} + +function PageSelect({ value, onSelect, onRemove, onUpdate, onCopy, options }: PageSelectProps) { + const [visible, setVisible] = useState(false); + const optionMap = useMemo(() => { + return array2object(options, (item) => item.path); + }, [options]); + + const handleChange = (next: string) => { + if (typeof onSelect === 'function') { + onSelect(next); + } + setVisible(false); + }; + + const current = optionMap[value]; + return ( + { + if (key !== 'delete') { + setVisible(false); + } + }} + /> + } + > + {current?.name || current?.label || value} + + ); +} + +const pageListStyle = css` + min-width: 200px; + max-height: 400px; + overflow-y: auto; + padding: 8px 0; + user-select: none; + + li { + display: flex; + align-items: center; + justify-content: space-between; + padding: 4px 12px; + + button { + background: transparent; + outline: none; + border: 0; + } + + &:hover { + background-color: var(--tango-colors-gray-20); + } + + &.active { + background-color: var(--tango-colors-primary-20); + } + } +`; + +interface PageListProps { + activeKey?: string; + items?: PageConfigType[]; + onAction?: (key: 'delete' | 'copy' | 'update', e: React.MouseEvent) => void; + onSelect?: (key: string) => void; + onRemove?: (key: string) => void; + onCopy?: (sourcePath: string, newPageData: PageConfigType) => void; + onUpdate?: (sourcePath: string, newPageData: PageConfigType) => void; +} + +// 表单编辑模式 +type FormEditType = 'update' | 'copy'; + +function PageList({ + activeKey, + items = [], + onSelect, + onRemove, + onUpdate, + onCopy, + onAction, +}: PageListProps) { + const [current, setCurrent] = useState(null); + const [type, setType] = useState(); + return ( + + {items.map((item) => ( + { + onSelect && onSelect(item.path); + }} + className={activeKey === item.path ? 'active' : undefined} + > + + + {item.name || '未命名'} + + {item.path} + + + + {item.path !== '/' ? ( + { + e.stopPropagation(); + onRemove && onRemove(item.path); + }} + zIndex={1060} + > + + * @example