diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..1ff82972
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# vuepress docs
+.temp
+.cache
\ No newline at end of file
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100755
index 00000000..7fed4850
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+npx --no -- commitlint --edit
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 00000000..c483022c
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+shamefully-hoist=true
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..75f03680
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# Vue BaiduMap gl
+
+基于百度地图 JavaScript GL 版 API 封装的 Vue3 组件库 施工中 🚧
+
+
+
+
+
+[![GitHub license](https://img.shields.io/github/license/yue1123/img-previewer?style=flat-square)](https://github.com/yue1123/img-previewer/blob/main/LICENSE)
+
+## todo list
+
+- [x] 基础地图
+- [x] 地图控件
+- [ ] 地图覆盖物
+- [ ] 地图插件
+- [ ] 自定义地图样式
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 00000000..6b57ff2f
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,21 @@
+module.exports = {
+ extends: ['@commitlint/config-conventional'],
+ rules: {
+ 'type-enum': [
+ 2,
+ 'always',
+ [
+ 'feat', // 新功能 feature
+ 'fix', // 修复 bug
+ 'docs', // 文档注释
+ 'style', // 代码格式(不影响代码运行的变动)
+ 'refactor', // 重构(既不增加新功能,也不是修复bug)
+ 'perf', // 性能优化
+ 'test', // 增加测试
+ 'chore', // 构建过程或辅助工具的变动
+ 'revert', // 回退
+ 'build' // 打包
+ ]
+ ]
+ }
+}
diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts
new file mode 100644
index 00000000..a5317c58
--- /dev/null
+++ b/docs/.vuepress/config.ts
@@ -0,0 +1,75 @@
+import { defineUserConfig } from 'vuepress'
+import type { DefaultThemeOptions } from 'vuepress'
+import { capitalize, camelize } from 'vue'
+const { resolve, join } = require('path')
+const root = process.cwd()
+
+import sidebarConfig from './sidebar.config'
+
+export default defineUserConfig({
+ // 站点配置
+ lang: 'en-US',
+ title: 'Vue3 BaiduMap GL',
+ description: '一套基于Vue 3.0和百度地图的地图组件。',
+ // 主题和它的配置
+ theme: '@vuepress/theme-default',
+ themeConfig: {
+ logo: 'https://vuejs.org/images/logo.png',
+ navbar: [
+ {
+ text: '文档',
+ link: '/guide/install/'
+ },
+ {
+ text: '选择语言',
+ children: ['English', '简体中文']
+ },
+ {
+ text: '完整示例',
+ link: '/example/'
+ }
+ ],
+ sidebar: {
+ '/guide/': [
+ {
+ text: '指南',
+ children: [
+ {
+ text: '安装',
+ link: '/guide/install'
+ },
+ {
+ text: '快速上手'
+ }
+ ]
+ }
+ ]
+ // '/reference/': [
+ // {
+ // text: 'Reference',
+ // children: ['/reference/cli.md', '/reference/config.md']
+ // }
+ // ]
+ }
+ },
+ plugins: [
+ [
+ '@vuepress/register-components',
+ {
+ componentsDir: resolve(__dirname, '../../src/lib/components'),
+ componentsPatterns: ['**/*.vue'],
+ getComponentName: (filename) => {
+ // 转驼峰
+ return camelize(capitalize(filename.replace(/\/\w+\.vue$/, '')))
+ }
+ }
+ ]
+ ],
+ alias: {
+ hooks: join(root, 'src/hooks'),
+ types: join(root, 'types')
+ },
+ bundlerConfig: {
+ base: './'
+ }
+})
diff --git a/docs/.vuepress/public/logo.png b/docs/.vuepress/public/logo.png
new file mode 100644
index 00000000..30ebaf8f
Binary files /dev/null and b/docs/.vuepress/public/logo.png differ
diff --git a/docs/.vuepress/sidebar.config.ts b/docs/.vuepress/sidebar.config.ts
new file mode 100644
index 00000000..2323eacb
--- /dev/null
+++ b/docs/.vuepress/sidebar.config.ts
@@ -0,0 +1,16 @@
+const sidebarConfig = {
+ '/guide/': [
+ {
+ text: 'Guide',
+ children: ['/guide/README.md', '/guide/getting-started.md']
+ }
+ ],
+ '/reference/': [
+ {
+ text: 'Reference',
+ children: ['/reference/cli.md', '/reference/config.md']
+ }
+ ]
+}
+
+export default sidebarConfig
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 00000000..e0e29a23
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,49 @@
+---
+home: true
+heroImage: /logo.png
+heroText: Vue3 BaiduMap GL
+actions:
+ - text: 开始使用
+ link: /docs/start
+features:
+ - title: 基于Vue3 + vite
+ details: 面向未来
+ - title: Typescript 完整支持
+ details: 更好的组件类型提示
+ - title: 易用的组件
+ details: 与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念
+---
+
+鼠标缩放
+
+
+
+
+
+
+
+
+{{type}}
+
diff --git a/docs/guide/install.md b/docs/guide/install.md
new file mode 100644
index 00000000..e69de29b
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..11603f87
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite App
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..c03f9479
--- /dev/null
+++ b/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "vue3-baidu-map",
+ "private": true,
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite --host",
+ "build": "vue-tsc --noEmit && vite build",
+ "preview": "vite preview",
+ "docs:dev": "vuepress dev docs",
+ "docs:build": "vuepress build docs"
+ },
+ "packageManager": "pnpm",
+ "dependencies": {
+ "mitt": "^3.0.0",
+ "vue": "^3.2.31"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^16.2.3",
+ "@commitlint/config-conventional": "^16.2.1",
+ "@vitejs/plugin-vue": "^2.2.0",
+ "@vuepress/plugin-register-components": "^2.0.0-beta.36",
+ "husky": "^7.0.4",
+ "less": "^4.1.2",
+ "typescript": "^4.5.4",
+ "vite": "^2.8.0",
+ "vue-tsc": "^0.29.8",
+ "vuepress": "^2.0.0-beta.36"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "keywords": [
+ "vue3",
+ "vue",
+ "vue3-baidu-map"
+ ],
+ "husky": {
+ "hooks": {
+ "pre-commit": "echo commit",
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
+ }
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 00000000..369b030e
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,3302 @@
+lockfileVersion: 5.3
+
+specifiers:
+ '@commitlint/cli': ^16.2.3
+ '@commitlint/config-conventional': ^16.2.1
+ '@vitejs/plugin-vue': ^2.2.0
+ '@vuepress/plugin-register-components': ^2.0.0-beta.36
+ husky: ^7.0.4
+ less: ^4.1.2
+ mitt: ^3.0.0
+ typescript: ^4.5.4
+ vite: ^2.8.0
+ vue: ^3.2.31
+ vue-tsc: ^0.29.8
+ vuepress: ^2.0.0-beta.36
+
+dependencies:
+ mitt: 3.0.0
+ vue: 3.2.31
+
+devDependencies:
+ '@commitlint/cli': 16.2.3
+ '@commitlint/config-conventional': 16.2.1
+ '@vitejs/plugin-vue': 2.3.1_vite@2.9.1+vue@3.2.31
+ '@vuepress/plugin-register-components': 2.0.0-beta.37
+ husky: 7.0.4
+ less: 4.1.2
+ typescript: 4.6.3
+ vite: 2.9.1_less@4.1.2
+ vue-tsc: 0.29.8_typescript@4.6.3
+ vuepress: 2.0.0-beta.37_less@4.1.2
+
+packages:
+
+ /@babel/code-frame/7.16.7:
+ resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.16.10
+ dev: true
+
+ /@babel/helper-validator-identifier/7.16.7:
+ resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/highlight/7.16.10:
+ resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.16.7
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser/7.17.8:
+ resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ /@babel/types/7.17.0:
+ resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.16.7
+ to-fast-properties: 2.0.0
+ dev: true
+
+ /@commitlint/cli/16.2.3:
+ resolution: {integrity: sha512-VsJBQLvhhlOgEfxs/Z5liYuK0dXqLE5hz1VJzLBxiOxG31kL/X5Q4OvK292BmO7IGZcm1yJE3XQPWSiFaEHbWA==}
+ engines: {node: '>=v12'}
+ hasBin: true
+ dependencies:
+ '@commitlint/format': 16.2.1
+ '@commitlint/lint': 16.2.1
+ '@commitlint/load': 16.2.3
+ '@commitlint/read': 16.2.1
+ '@commitlint/types': 16.2.1
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ yargs: 17.4.0
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ dev: true
+
+ /@commitlint/config-conventional/16.2.1:
+ resolution: {integrity: sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww==}
+ engines: {node: '>=v12'}
+ dependencies:
+ conventional-changelog-conventionalcommits: 4.6.3
+ dev: true
+
+ /@commitlint/config-validator/16.2.1:
+ resolution: {integrity: sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/types': 16.2.1
+ ajv: 6.12.6
+ dev: true
+
+ /@commitlint/ensure/16.2.1:
+ resolution: {integrity: sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/types': 16.2.1
+ lodash: 4.17.21
+ dev: true
+
+ /@commitlint/execute-rule/16.2.1:
+ resolution: {integrity: sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g==}
+ engines: {node: '>=v12'}
+ dev: true
+
+ /@commitlint/format/16.2.1:
+ resolution: {integrity: sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/types': 16.2.1
+ chalk: 4.1.2
+ dev: true
+
+ /@commitlint/is-ignored/16.2.1:
+ resolution: {integrity: sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/types': 16.2.1
+ semver: 7.3.5
+ dev: true
+
+ /@commitlint/lint/16.2.1:
+ resolution: {integrity: sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/is-ignored': 16.2.1
+ '@commitlint/parse': 16.2.1
+ '@commitlint/rules': 16.2.1
+ '@commitlint/types': 16.2.1
+ dev: true
+
+ /@commitlint/load/16.2.3:
+ resolution: {integrity: sha512-Hb4OUlMnBUK6UxJEZ/VJ5k0LocIS7PtEMbRXEAA7eSpOgORIFexC4K/RaRpVd5UTtu3M0ST3ddPPijF9rdW6nw==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/config-validator': 16.2.1
+ '@commitlint/execute-rule': 16.2.1
+ '@commitlint/resolve-extends': 16.2.1
+ '@commitlint/types': 16.2.1
+ '@types/node': 17.0.23
+ chalk: 4.1.2
+ cosmiconfig: 7.0.1
+ cosmiconfig-typescript-loader: 1.0.6_ee885bc7281b682b6adbed6ae09ee090
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ typescript: 4.6.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ dev: true
+
+ /@commitlint/message/16.2.1:
+ resolution: {integrity: sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw==}
+ engines: {node: '>=v12'}
+ dev: true
+
+ /@commitlint/parse/16.2.1:
+ resolution: {integrity: sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/types': 16.2.1
+ conventional-changelog-angular: 5.0.13
+ conventional-commits-parser: 3.2.4
+ dev: true
+
+ /@commitlint/read/16.2.1:
+ resolution: {integrity: sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/top-level': 16.2.1
+ '@commitlint/types': 16.2.1
+ fs-extra: 10.0.1
+ git-raw-commits: 2.0.11
+ dev: true
+
+ /@commitlint/resolve-extends/16.2.1:
+ resolution: {integrity: sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/config-validator': 16.2.1
+ '@commitlint/types': 16.2.1
+ import-fresh: 3.3.0
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ dev: true
+
+ /@commitlint/rules/16.2.1:
+ resolution: {integrity: sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw==}
+ engines: {node: '>=v12'}
+ dependencies:
+ '@commitlint/ensure': 16.2.1
+ '@commitlint/message': 16.2.1
+ '@commitlint/to-lines': 16.2.1
+ '@commitlint/types': 16.2.1
+ execa: 5.1.1
+ dev: true
+
+ /@commitlint/to-lines/16.2.1:
+ resolution: {integrity: sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ==}
+ engines: {node: '>=v12'}
+ dev: true
+
+ /@commitlint/top-level/16.2.1:
+ resolution: {integrity: sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw==}
+ engines: {node: '>=v12'}
+ dependencies:
+ find-up: 5.0.0
+ dev: true
+
+ /@commitlint/types/16.2.1:
+ resolution: {integrity: sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA==}
+ engines: {node: '>=v12'}
+ dependencies:
+ chalk: 4.1.2
+ dev: true
+
+ /@cspotcode/source-map-consumer/0.8.0:
+ resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==}
+ engines: {node: '>= 12'}
+ dev: true
+
+ /@cspotcode/source-map-support/0.7.0:
+ resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@cspotcode/source-map-consumer': 0.8.0
+ dev: true
+
+ /@emmetio/abbreviation/2.2.3:
+ resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==}
+ dependencies:
+ '@emmetio/scanner': 1.0.0
+ dev: true
+
+ /@emmetio/css-abbreviation/2.1.4:
+ resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==}
+ dependencies:
+ '@emmetio/scanner': 1.0.0
+ dev: true
+
+ /@emmetio/scanner/1.0.0:
+ resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==}
+ dev: true
+
+ /@nodelib/fs.scandir/2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat/2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk/1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.13.0
+ dev: true
+
+ /@tsconfig/node10/1.0.8:
+ resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==}
+ dev: true
+
+ /@tsconfig/node12/1.0.9:
+ resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==}
+ dev: true
+
+ /@tsconfig/node14/1.0.1:
+ resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==}
+ dev: true
+
+ /@tsconfig/node16/1.0.2:
+ resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==}
+ dev: true
+
+ /@types/debug/4.1.7:
+ resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
+ dependencies:
+ '@types/ms': 0.7.31
+ dev: true
+
+ /@types/fs-extra/9.0.13:
+ resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
+ dependencies:
+ '@types/node': 17.0.23
+ dev: true
+
+ /@types/hash-sum/1.0.0:
+ resolution: {integrity: sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==}
+ dev: true
+
+ /@types/linkify-it/3.0.2:
+ resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==}
+ dev: true
+
+ /@types/markdown-it/12.2.3:
+ resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
+ dependencies:
+ '@types/linkify-it': 3.0.2
+ '@types/mdurl': 1.0.2
+ dev: true
+
+ /@types/mdurl/1.0.2:
+ resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
+ dev: true
+
+ /@types/minimist/1.2.2:
+ resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
+ dev: true
+
+ /@types/ms/0.7.31:
+ resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
+ dev: true
+
+ /@types/node/17.0.23:
+ resolution: {integrity: sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==}
+ dev: true
+
+ /@types/normalize-package-data/2.4.1:
+ resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
+ dev: true
+
+ /@types/parse-json/4.0.0:
+ resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
+ dev: true
+
+ /@vitejs/plugin-vue/2.3.1_vite@2.8.6+vue@3.2.31:
+ resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ vite: ^2.5.10
+ vue: ^3.2.25
+ dependencies:
+ vite: 2.8.6_less@4.1.2
+ vue: 3.2.31
+ dev: true
+
+ /@vitejs/plugin-vue/2.3.1_vite@2.9.1+vue@3.2.31:
+ resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ vite: ^2.5.10
+ vue: ^3.2.25
+ dependencies:
+ vite: 2.9.1_less@4.1.2
+ vue: 3.2.31
+ dev: true
+
+ /@volar/code-gen/0.29.8:
+ resolution: {integrity: sha512-eohLLUqPChHRPDFT5gXn4V6pr/CeTri7Ou5GI26lUvBRRAbP8p+oYfQRcbMPGeKmVkYjfVj0chsxQGx6T8PQ4Q==}
+ dependencies:
+ '@volar/shared': 0.29.8
+ '@volar/source-map': 0.29.8
+ dev: true
+
+ /@volar/html2pug/0.29.8:
+ resolution: {integrity: sha512-bhSNXg8A2aD3w0B+CwmHjqCAaKtj5rORbE5C/q/UdGqptJbC6STCmi30KuRTdfPhR++Xb18Hauf3s/WCmtNAPA==}
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.3.1
+ htmlparser2: 7.2.0
+ pug: 3.0.2
+ dev: true
+
+ /@volar/shared/0.29.8:
+ resolution: {integrity: sha512-Y1NN6irkIukD+T0wf4p/dHWYL90sacN2e2lYoDXxRlvoYxwANnHgw0J0Rcp+yw58ElWRScdG7/YntEIuZWeJsw==}
+ dependencies:
+ upath: 2.0.1
+ vscode-jsonrpc: 8.0.0-next.7
+ vscode-uri: 3.0.3
+ dev: true
+
+ /@volar/source-map/0.29.8:
+ resolution: {integrity: sha512-7w+UoYtnc6UQu30CgMVvx0YN4dzDgP4TIsSmUaW62AGmxU9Lxwp3Kkn/4N8efi91z8ma5Z78v/HddyJPwAC3LA==}
+ dependencies:
+ '@volar/shared': 0.29.8
+ dev: true
+
+ /@volar/transforms/0.29.8:
+ resolution: {integrity: sha512-o2hRa8CoDwYTO1Mu5KA47+1elUnYUjDaVhCvbyKlRfd8qpHea2llotArq7B6OORSL2M9DVs1IRJ5NGURBFeZ3Q==}
+ dependencies:
+ '@volar/shared': 0.29.8
+ vscode-languageserver: 8.0.0-next.10
+ dev: true
+
+ /@volar/vue-code-gen/0.29.8:
+ resolution: {integrity: sha512-E1e7P2oktNC/DzgDBditfla4s8+HlUlluZ+BtcLvEdbkl3QEjujkB0x1wxguWzXmpWgLIDPtrS3Jzll5cCOkTg==}
+ dependencies:
+ '@volar/code-gen': 0.29.8
+ '@volar/shared': 0.29.8
+ '@volar/source-map': 0.29.8
+ '@vue/compiler-core': 3.2.31
+ '@vue/compiler-dom': 3.2.31
+ '@vue/shared': 3.2.31
+ upath: 2.0.1
+ dev: true
+
+ /@vscode/emmet-helper/2.8.4:
+ resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==}
+ dependencies:
+ emmet: 2.3.6
+ jsonc-parser: 2.3.1
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 2.1.2
+ dev: true
+
+ /@vue/compiler-core/3.2.31:
+ resolution: {integrity: sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==}
+ dependencies:
+ '@babel/parser': 7.17.8
+ '@vue/shared': 3.2.31
+ estree-walker: 2.0.2
+ source-map: 0.6.1
+
+ /@vue/compiler-dom/3.2.31:
+ resolution: {integrity: sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==}
+ dependencies:
+ '@vue/compiler-core': 3.2.31
+ '@vue/shared': 3.2.31
+
+ /@vue/compiler-sfc/3.2.31:
+ resolution: {integrity: sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==}
+ dependencies:
+ '@babel/parser': 7.17.8
+ '@vue/compiler-core': 3.2.31
+ '@vue/compiler-dom': 3.2.31
+ '@vue/compiler-ssr': 3.2.31
+ '@vue/reactivity-transform': 3.2.31
+ '@vue/shared': 3.2.31
+ estree-walker: 2.0.2
+ magic-string: 0.25.9
+ postcss: 8.4.12
+ source-map: 0.6.1
+
+ /@vue/compiler-ssr/3.2.31:
+ resolution: {integrity: sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==}
+ dependencies:
+ '@vue/compiler-dom': 3.2.31
+ '@vue/shared': 3.2.31
+
+ /@vue/devtools-api/6.1.4:
+ resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==}
+ dev: true
+
+ /@vue/reactivity-transform/3.2.31:
+ resolution: {integrity: sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==}
+ dependencies:
+ '@babel/parser': 7.17.8
+ '@vue/compiler-core': 3.2.31
+ '@vue/shared': 3.2.31
+ estree-walker: 2.0.2
+ magic-string: 0.25.9
+
+ /@vue/reactivity/3.2.31:
+ resolution: {integrity: sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==}
+ dependencies:
+ '@vue/shared': 3.2.31
+
+ /@vue/runtime-core/3.2.31:
+ resolution: {integrity: sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==}
+ dependencies:
+ '@vue/reactivity': 3.2.31
+ '@vue/shared': 3.2.31
+
+ /@vue/runtime-dom/3.2.31:
+ resolution: {integrity: sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==}
+ dependencies:
+ '@vue/runtime-core': 3.2.31
+ '@vue/shared': 3.2.31
+ csstype: 2.6.20
+
+ /@vue/server-renderer/3.2.31_vue@3.2.31:
+ resolution: {integrity: sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==}
+ peerDependencies:
+ vue: 3.2.31
+ dependencies:
+ '@vue/compiler-ssr': 3.2.31
+ '@vue/shared': 3.2.31
+ vue: 3.2.31
+
+ /@vue/shared/3.2.31:
+ resolution: {integrity: sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==}
+
+ /@vuepress/bundler-vite/2.0.0-beta.37_less@4.1.2:
+ resolution: {integrity: sha512-2Zjr6BpcU+O9amQp+7OYSX3zN4AEOlU7E/Jx4MBEHlTXDXHyGdswjWAsntjuK9GoDQvW2NNq3rsKtsHqKP6s6Q==}
+ dependencies:
+ '@vitejs/plugin-vue': 2.3.1_vite@2.8.6+vue@3.2.31
+ '@vue/compiler-sfc': 3.2.31
+ '@vue/server-renderer': 3.2.31_vue@3.2.31
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/shared': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ autoprefixer: 10.4.4_postcss@8.4.12
+ connect-history-api-fallback: 1.6.0
+ postcss: 8.4.12
+ postcss-csso: 6.0.0_postcss@8.4.12
+ rollup: 2.70.1
+ vite: 2.8.6_less@4.1.2
+ vue: 3.2.31
+ vue-router: 4.0.14_vue@3.2.31
+ transitivePeerDependencies:
+ - less
+ - sass
+ - stylus
+ - supports-color
+ dev: true
+
+ /@vuepress/cli/2.0.0-beta.37:
+ resolution: {integrity: sha512-qMp4XD53Sw1SBV1N+3gQcq3JYvvkQVsnrJeHGPoS/CP34WqmyqOtJKlXOJMHN3OexFMPl9bVviASmtLPkLVu4g==}
+ hasBin: true
+ dependencies:
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ cac: 6.7.12
+ chokidar: 3.5.3
+ envinfo: 7.8.1
+ esbuild: 0.14.29
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/client/2.0.0-beta.37:
+ resolution: {integrity: sha512-Sn94s/Knp76YPO67QSEl/iVHA1gz+HPJdKIUj971UOMAM1DWE3PoRKLx3CKNJd5gqlyJV9mIxJzl6yfoZ54KaQ==}
+ dependencies:
+ '@vue/devtools-api': 6.1.4
+ '@vuepress/shared': 2.0.0-beta.37
+ vue: 3.2.31
+ vue-router: 4.0.14_vue@3.2.31
+ dev: true
+
+ /@vuepress/core/2.0.0-beta.37:
+ resolution: {integrity: sha512-JT0b8YXIhOm0pw29MUZXxZXMui3pAJfeo7n2V9bY09uQ6spN5Kp0pe9SvOC33Ilp0SkRLwyFvS51cHRz+lmiBw==}
+ dependencies:
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/markdown': 2.0.0-beta.37
+ '@vuepress/shared': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ gray-matter: 4.0.3
+ toml: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/markdown/2.0.0-beta.37:
+ resolution: {integrity: sha512-ztRg/7VMqoDK0QGHIkFT3RT5RHewY69WJHvDfCQ0EUzq2+5gFIZnn8SLG1YouRYqYAmf+av1Cs/Nl9s/fQRlrw==}
+ dependencies:
+ '@types/markdown-it': 12.2.3
+ '@vuepress/shared': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ markdown-it: 12.3.2
+ markdown-it-anchor: 8.4.1_d643ca6eb40ae68ab966a77bead78073
+ markdown-it-emoji: 2.0.0
+ mdurl: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-active-header-links/2.0.0-beta.37:
+ resolution: {integrity: sha512-h756NyKJk0HlVQlfwhNVSsx35kWA22YFN69ZFQNpISvSAtV0cOibOOwMiT6YPKNYTpIsO9HabFXtkdhhf3nJtA==}
+ dependencies:
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ ts-debounce: 4.0.0
+ vue: 3.2.31
+ vue-router: 4.0.14_vue@3.2.31
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-back-to-top/2.0.0-beta.37:
+ resolution: {integrity: sha512-4CKomH4WgfNC5+tvI7zM+dhHLkqiHUfjE6R+jRI98xIsYCKz+7EooiLl2rIO2ywgzDJi2i+U+MyqvH6DADTEbg==}
+ dependencies:
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ ts-debounce: 4.0.0
+ vue: 3.2.31
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-container/2.0.0-beta.37:
+ resolution: {integrity: sha512-bukHQfYP3UYA1K3P+jiqpVC8QNdRPMJ3C+cr4CVENsdLA2MhrXTzVFX4xN53VKuZBHb34noQzmON2q6OkfUd1g==}
+ dependencies:
+ '@types/markdown-it': 12.2.3
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/markdown': 2.0.0-beta.37
+ '@vuepress/shared': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ markdown-it: 12.3.2
+ markdown-it-container: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-external-link-icon/2.0.0-beta.37:
+ resolution: {integrity: sha512-LjAkdtE2AGv8ODQzYhOIY2qtpcVRQwVNCPH/JLp80a+5QnsH8YkWn2En60k06ZUfzk8BKdnnM2tPL3+iRVWvqw==}
+ dependencies:
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/markdown': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ vue: 3.2.31
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-git/2.0.0-beta.37:
+ resolution: {integrity: sha512-jRd1xMHmz7LNGmRKqHYz8MWnLupWnW50OFrLY9ue8tOrlduU8jE3M0R1dCqM21l5B/xdfrvgUCaQrSdftB06/w==}
+ dependencies:
+ '@vuepress/core': 2.0.0-beta.37
+ execa: 5.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-medium-zoom/2.0.0-beta.37:
+ resolution: {integrity: sha512-cdKELBnxbUt4chFZcGU8Qou9/q7QMCWttFBCDlHpnQPaGRvOHrrG8ivHGbX0dFrfGn7ul1O2cNTGB28cGSa5Cw==}
+ dependencies:
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ medium-zoom: 1.0.6
+ vue: 3.2.31
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-nprogress/2.0.0-beta.37:
+ resolution: {integrity: sha512-X3KA5knuQ6rohfK2T/9JW/A45oEzV2fzryFFYtIhzt1An51nmqJgHV5zxN0GKygXebw9CXTFeGSvVSTv0sWfTA==}
+ dependencies:
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ nprogress: 0.2.0
+ vue: 3.2.31
+ vue-router: 4.0.14_vue@3.2.31
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-palette/2.0.0-beta.37:
+ resolution: {integrity: sha512-gsKrx2ke0kMxn0i35ywx0UUabzacF2sKlosvOagSMVk4thHzI84o9+0sTV5Boz8B2V+qiXg1K08Ap7gZeFIdkw==}
+ dependencies:
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ chokidar: 3.5.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-prismjs/2.0.0-beta.37:
+ resolution: {integrity: sha512-iof47Qpbomh7qCNjkhOxpTyBRMZmUH6IRDh8YaLe08yVECVM2D9dS9FFMGUnYgMSD7jeS7yakqLRH/yJZcYzLw==}
+ dependencies:
+ '@vuepress/core': 2.0.0-beta.37
+ prismjs: 1.27.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-register-components/2.0.0-beta.37:
+ resolution: {integrity: sha512-uyMpLkeFqoMUoyALtORtW8TfoNpPyUO3uSEyC5ztVvgH0UA8lk8WFhcYJwjhx+PEUFFWYUdL0atBYAaqFDSzFQ==}
+ dependencies:
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ chokidar: 3.5.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/plugin-theme-data/2.0.0-beta.37:
+ resolution: {integrity: sha512-JG0+G2dUe2cgWLk1G2zTQcP/KXuAUdrK1nAg/Q7HxjxSI4bY5DTT2HcfcFLraqHh6OYJvALZjJ1nbD7eyE7BYg==}
+ dependencies:
+ '@vue/devtools-api': 6.1.4
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/shared': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ vue: 3.2.31
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vuepress/shared/2.0.0-beta.37:
+ resolution: {integrity: sha512-dEg7kK1Z3D2VNfWOKQTiquRaRGZzBJk6sBMRLRUZ8LFrWXb8Z3ZOVw7hj0CW3H75cqYy2cKjPGbcerZUm4kOPg==}
+ dependencies:
+ '@vue/shared': 3.2.31
+ dev: true
+
+ /@vuepress/theme-default/2.0.0-beta.37:
+ resolution: {integrity: sha512-oJmEgAHOVoiEDG4icSk4U3cw2lKrsQCO5j2NnYB6snDT5tN/AZg5v9dKdkM8CAF/kJgScTlWSY1YL1LSlYVGpg==}
+ dependencies:
+ '@vuepress/client': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/plugin-active-header-links': 2.0.0-beta.37
+ '@vuepress/plugin-back-to-top': 2.0.0-beta.37
+ '@vuepress/plugin-container': 2.0.0-beta.37
+ '@vuepress/plugin-external-link-icon': 2.0.0-beta.37
+ '@vuepress/plugin-git': 2.0.0-beta.37
+ '@vuepress/plugin-medium-zoom': 2.0.0-beta.37
+ '@vuepress/plugin-nprogress': 2.0.0-beta.37
+ '@vuepress/plugin-palette': 2.0.0-beta.37
+ '@vuepress/plugin-prismjs': 2.0.0-beta.37
+ '@vuepress/plugin-theme-data': 2.0.0-beta.37
+ '@vuepress/shared': 2.0.0-beta.37
+ '@vuepress/utils': 2.0.0-beta.37
+ '@vueuse/core': 8.2.3_vue@3.2.31
+ sass: 1.49.10
+ sass-loader: 12.6.0_sass@1.49.10
+ vue: 3.2.31
+ vue-router: 4.0.14_vue@3.2.31
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - fibers
+ - node-sass
+ - sass-embedded
+ - supports-color
+ - webpack
+ dev: true
+
+ /@vuepress/utils/2.0.0-beta.37:
+ resolution: {integrity: sha512-v4uGvefBm+LaKrXc+nnesj3bWrbKovqk15hjbQfoo+NimwO/MLnAtYlwOz0wsKIKnVE1vR/P4aqPRlgz1+rNJA==}
+ dependencies:
+ '@types/debug': 4.1.7
+ '@types/fs-extra': 9.0.13
+ '@types/hash-sum': 1.0.0
+ '@vuepress/shared': 2.0.0-beta.37
+ chalk: 4.1.2
+ debug: 4.3.4
+ fs-extra: 10.0.1
+ globby: 11.1.0
+ hash-sum: 2.0.0
+ ora: 5.4.1
+ upath: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vueuse/core/8.2.3_vue@3.2.31:
+ resolution: {integrity: sha512-bz6XroFRFOIGzhAHcnTfjtAQNkNcSELKPoSSUGROwYfOgTnaVyq7iKhgwdeRNom3y9q+a60RlhD35oJaGsXDHA==}
+ peerDependencies:
+ '@vue/composition-api': ^1.1.0
+ vue: ^2.6.0 || ^3.2.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ vue:
+ optional: true
+ dependencies:
+ '@vueuse/metadata': 8.2.3
+ '@vueuse/shared': 8.2.3_vue@3.2.31
+ vue: 3.2.31
+ vue-demi: 0.12.5_vue@3.2.31
+ dev: true
+
+ /@vueuse/metadata/8.2.3:
+ resolution: {integrity: sha512-xH5256Bn6hBYvQWoaCBagpeCrzJmeEeWnyDDkwVFhx7+pLOe4I6gsMHie3yJoowK9AN/D7JLTtEBbWvvBi5TOA==}
+ dev: true
+
+ /@vueuse/shared/8.2.3_vue@3.2.31:
+ resolution: {integrity: sha512-4Cd3s+x8ZwzzAf7o8jS7mEj9pQ1Zsf9aiNBAFg4rHcWeDY0S3XMgvN4ae2hBul7jmi+Ab4REAqiqYWyYqU86qg==}
+ peerDependencies:
+ '@vue/composition-api': ^1.1.0
+ vue: ^2.6.0 || ^3.2.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ vue:
+ optional: true
+ dependencies:
+ vue: 3.2.31
+ vue-demi: 0.12.5_vue@3.2.31
+ dev: true
+
+ /JSONStream/1.3.5:
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
+ hasBin: true
+ dependencies:
+ jsonparse: 1.3.1
+ through: 2.3.8
+ dev: true
+
+ /acorn-walk/8.2.0:
+ resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /acorn/7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /acorn/8.7.0:
+ resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /ajv/6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ /ansi-regex/5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ansi-styles/3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ /ansi-styles/4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /anymatch/3.1.2:
+ resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
+ /arg/4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+ dev: true
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /argparse/2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ dev: true
+
+ /array-ify/1.0.0:
+ resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=}
+ dev: true
+
+ /array-union/2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /arrify/1.0.1:
+ resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /asap/2.0.6:
+ resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=}
+ dev: true
+
+ /assert-never/1.2.1:
+ resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==}
+ dev: true
+
+ /autoprefixer/10.4.4_postcss@8.4.12:
+ resolution: {integrity: sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.20.2
+ caniuse-lite: 1.0.30001323
+ fraction.js: 4.2.0
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.12
+ postcss-value-parser: 4.2.0
+ dev: true
+
+ /babel-walk/3.0.0-canary-5:
+ resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /base64-js/1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ dev: true
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /bl/4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ dev: true
+
+ /braces/3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /browserslist/4.20.2:
+ resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001323
+ electron-to-chromium: 1.4.103
+ escalade: 3.1.1
+ node-releases: 2.0.2
+ picocolors: 1.0.0
+ dev: true
+
+ /buffer/5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ dev: true
+
+ /cac/6.7.12:
+ resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /call-bind/1.0.2:
+ resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+ dependencies:
+ function-bind: 1.1.1
+ get-intrinsic: 1.1.1
+ dev: true
+
+ /callsites/3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase-keys/6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+ dev: true
+
+ /camelcase/5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /caniuse-lite/1.0.30001323:
+ resolution: {integrity: sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==}
+ dev: true
+
+ /chalk/2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /chalk/4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /character-parser/2.2.0:
+ resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=}
+ dependencies:
+ is-regex: 1.1.4
+ dev: true
+
+ /chokidar/3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.2
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /cli-cursor/3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: 3.1.0
+ dev: true
+
+ /cli-spinners/2.6.1:
+ resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cliui/7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /clone/1.0.4:
+ resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /color-convert/1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
+ /color-convert/2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name/1.1.3:
+ resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
+ dev: true
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /compare-func/2.0.0:
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+ dependencies:
+ array-ify: 1.0.0
+ dot-prop: 5.3.0
+ dev: true
+
+ /connect-history-api-fallback/1.6.0:
+ resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /constantinople/4.0.1:
+ resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==}
+ dependencies:
+ '@babel/parser': 7.17.8
+ '@babel/types': 7.17.0
+ dev: true
+
+ /conventional-changelog-angular/5.0.13:
+ resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ q: 1.5.1
+ dev: true
+
+ /conventional-changelog-conventionalcommits/4.6.3:
+ resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ lodash: 4.17.21
+ q: 1.5.1
+ dev: true
+
+ /conventional-commits-parser/3.2.4:
+ resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ is-text-path: 1.0.1
+ JSONStream: 1.3.5
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /copy-anything/2.0.6:
+ resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
+ dependencies:
+ is-what: 3.14.1
+ dev: true
+
+ /cosmiconfig-typescript-loader/1.0.6_ee885bc7281b682b6adbed6ae09ee090:
+ resolution: {integrity: sha512-2nEotziYJWtNtoTjKbchj9QrdTT6DBxCvqjNKoDKARw+e2yZmTQCa07uRrykLIZuvSgp69YXLH89UHc0WhdMfQ==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@types/node': '*'
+ typescript: '>=3'
+ dependencies:
+ '@types/node': 17.0.23
+ cosmiconfig: 7.0.1
+ ts-node: 10.7.0_ee885bc7281b682b6adbed6ae09ee090
+ typescript: 4.6.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ dev: true
+
+ /cosmiconfig/7.0.1:
+ resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/parse-json': 4.0.0
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+ dev: true
+
+ /create-require/1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+ dev: true
+
+ /cross-spawn/7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /css-tree/2.0.4:
+ resolution: {integrity: sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
+ dependencies:
+ mdn-data: 2.0.23
+ source-map-js: 1.0.2
+ dev: true
+
+ /csso/5.0.3:
+ resolution: {integrity: sha512-93gBHTJ6EQlLNhIX5Ho8VAJD2t2T2wg1xHDjbIUm/oQ7iFiSUTo9jSojiQK0pEZ3lMhYDrQO7Rcd70M68+VrtA==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
+ dependencies:
+ css-tree: 2.0.4
+ dev: true
+
+ /csstype/2.6.20:
+ resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==}
+
+ /dargs/7.0.0:
+ resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /debug/3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ dependencies:
+ ms: 2.1.3
+ dev: true
+ optional: true
+
+ /debug/4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /decamelize-keys/1.1.0:
+ resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+ dev: true
+
+ /decamelize/1.2.0:
+ resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /defaults/1.0.3:
+ resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=}
+ dependencies:
+ clone: 1.0.4
+ dev: true
+
+ /diff/4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
+ dev: true
+
+ /dir-glob/3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: true
+
+ /doctypes/1.1.0:
+ resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=}
+ dev: true
+
+ /dom-serializer/1.3.2:
+ resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==}
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.3.1
+ entities: 2.2.0
+ dev: true
+
+ /domelementtype/2.2.0:
+ resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==}
+ dev: true
+
+ /domhandler/4.3.1:
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
+ dependencies:
+ domelementtype: 2.2.0
+ dev: true
+
+ /domutils/2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+ dependencies:
+ dom-serializer: 1.3.2
+ domelementtype: 2.2.0
+ domhandler: 4.3.1
+ dev: true
+
+ /dot-prop/5.3.0:
+ resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-obj: 2.0.0
+ dev: true
+
+ /electron-to-chromium/1.4.103:
+ resolution: {integrity: sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==}
+ dev: true
+
+ /emmet/2.3.6:
+ resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==}
+ dependencies:
+ '@emmetio/abbreviation': 2.2.3
+ '@emmetio/css-abbreviation': 2.1.4
+ dev: true
+
+ /emoji-regex/8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /entities/2.1.0:
+ resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
+ dev: true
+
+ /entities/2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+ dev: true
+
+ /entities/3.0.1:
+ resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
+ engines: {node: '>=0.12'}
+ dev: true
+
+ /envinfo/7.8.1:
+ resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /errno/0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ prr: 1.0.1
+ dev: true
+ optional: true
+
+ /error-ex/1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
+ /esbuild-android-64/0.14.29:
+ resolution: {integrity: sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-android-arm64/0.14.29:
+ resolution: {integrity: sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-64/0.14.29:
+ resolution: {integrity: sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-arm64/0.14.29:
+ resolution: {integrity: sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-64/0.14.29:
+ resolution: {integrity: sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-arm64/0.14.29:
+ resolution: {integrity: sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-32/0.14.29:
+ resolution: {integrity: sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-64/0.14.29:
+ resolution: {integrity: sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm/0.14.29:
+ resolution: {integrity: sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm64/0.14.29:
+ resolution: {integrity: sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-mips64le/0.14.29:
+ resolution: {integrity: sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-ppc64le/0.14.29:
+ resolution: {integrity: sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-riscv64/0.14.29:
+ resolution: {integrity: sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.14.29:
+ resolution: {integrity: sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-netbsd-64/0.14.29:
+ resolution: {integrity: sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-openbsd-64/0.14.29:
+ resolution: {integrity: sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-sunos-64/0.14.29:
+ resolution: {integrity: sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-32/0.14.29:
+ resolution: {integrity: sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-64/0.14.29:
+ resolution: {integrity: sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-arm64/0.14.29:
+ resolution: {integrity: sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild/0.14.29:
+ resolution: {integrity: sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ esbuild-android-64: 0.14.29
+ esbuild-android-arm64: 0.14.29
+ esbuild-darwin-64: 0.14.29
+ esbuild-darwin-arm64: 0.14.29
+ esbuild-freebsd-64: 0.14.29
+ esbuild-freebsd-arm64: 0.14.29
+ esbuild-linux-32: 0.14.29
+ esbuild-linux-64: 0.14.29
+ esbuild-linux-arm: 0.14.29
+ esbuild-linux-arm64: 0.14.29
+ esbuild-linux-mips64le: 0.14.29
+ esbuild-linux-ppc64le: 0.14.29
+ esbuild-linux-riscv64: 0.14.29
+ esbuild-linux-s390x: 0.14.29
+ esbuild-netbsd-64: 0.14.29
+ esbuild-openbsd-64: 0.14.29
+ esbuild-sunos-64: 0.14.29
+ esbuild-windows-32: 0.14.29
+ esbuild-windows-64: 0.14.29
+ esbuild-windows-arm64: 0.14.29
+ dev: true
+
+ /escalade/3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /esprima/4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ /execa/5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+ dev: true
+
+ /extend-shallow/2.0.1:
+ resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: true
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
+
+ /fast-glob/3.2.11:
+ resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: true
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fastq/1.13.0:
+ resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ /fill-range/7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /find-up/4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /find-up/5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /fraction.js/4.2.0:
+ resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
+ dev: true
+
+ /fs-extra/10.0.1:
+ resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.9
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ dev: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ dev: true
+
+ /get-caller-file/2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
+ /get-intrinsic/1.1.1:
+ resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
+ dependencies:
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.3
+ dev: true
+
+ /get-stream/6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /git-raw-commits/2.0.11:
+ resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ dargs: 7.0.0
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /global-dirs/0.1.1:
+ resolution: {integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=}
+ engines: {node: '>=4'}
+ dependencies:
+ ini: 1.3.8
+ dev: true
+
+ /globby/11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.2.11
+ ignore: 5.2.0
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ /graceful-fs/4.2.9:
+ resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
+ dev: true
+
+ /gray-matter/4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+ engines: {node: '>=6.0'}
+ dependencies:
+ js-yaml: 3.14.1
+ kind-of: 6.0.3
+ section-matter: 1.0.0
+ strip-bom-string: 1.0.0
+ dev: true
+
+ /hard-rejection/2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /has-flag/3.0.0:
+ resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has-symbols/1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-tostringtag/1.0.0:
+ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: true
+
+ /has/1.0.3:
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: true
+
+ /hash-sum/2.0.0:
+ resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
+ dev: true
+
+ /hosted-git-info/2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+ dev: true
+
+ /hosted-git-info/4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /htmlparser2/7.2.0:
+ resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==}
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ entities: 3.0.1
+ dev: true
+
+ /human-signals/2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+ dev: true
+
+ /husky/7.0.4:
+ resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==}
+ engines: {node: '>=12'}
+ hasBin: true
+ dev: true
+
+ /iconv-lite/0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+ optional: true
+
+ /ieee754/1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ dev: true
+
+ /ignore/5.2.0:
+ resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /image-size/0.5.5:
+ resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /immutable/4.0.0:
+ resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==}
+ dev: true
+
+ /import-fresh/3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: true
+
+ /indent-string/4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
+
+ /ini/1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+ dev: true
+
+ /is-arrayish/0.2.1:
+ resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=}
+ dev: true
+
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-core-module/2.8.1:
+ resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ /is-expression/4.0.0:
+ resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==}
+ dependencies:
+ acorn: 7.4.1
+ object-assign: 4.1.1
+ dev: true
+
+ /is-extendable/0.1.1:
+ resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-fullwidth-code-point/3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-glob/4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-interactive/1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-obj/2.0.0:
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-plain-obj/1.1.0:
+ resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-promise/2.2.2:
+ resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+ dev: true
+
+ /is-regex/1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-stream/2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-text-path/1.0.1:
+ resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ text-extensions: 1.9.0
+ dev: true
+
+ /is-unicode-supported/0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /is-what/3.14.1:
+ resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+ dev: true
+
+ /isexe/2.0.0:
+ resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
+ dev: true
+
+ /js-stringify/1.0.2:
+ resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=}
+ dev: true
+
+ /js-tokens/4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /js-yaml/3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /json-parse-even-better-errors/2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ dev: true
+
+ /json-schema-traverse/0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: true
+
+ /jsonc-parser/2.3.1:
+ resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==}
+ dev: true
+
+ /jsonc-parser/3.0.0:
+ resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==}
+ dev: true
+
+ /jsonfile/6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.0
+ optionalDependencies:
+ graceful-fs: 4.2.9
+ dev: true
+
+ /jsonparse/1.3.1:
+ resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=}
+ engines: {'0': node >= 0.2.0}
+ dev: true
+
+ /jstransformer/1.0.0:
+ resolution: {integrity: sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=}
+ dependencies:
+ is-promise: 2.2.2
+ promise: 7.3.1
+ dev: true
+
+ /kind-of/6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /klona/2.0.5:
+ resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /less/4.1.2:
+ resolution: {integrity: sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ copy-anything: 2.0.6
+ parse-node-version: 1.0.1
+ tslib: 2.3.1
+ optionalDependencies:
+ errno: 0.1.8
+ graceful-fs: 4.2.9
+ image-size: 0.5.5
+ make-dir: 2.1.0
+ mime: 1.6.0
+ needle: 2.9.1
+ source-map: 0.6.1
+ dev: true
+
+ /lines-and-columns/1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
+
+ /linkify-it/3.0.3:
+ resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
+ dependencies:
+ uc.micro: 1.0.6
+ dev: true
+
+ /locate-path/5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+ dev: true
+
+ /locate-path/6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: true
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: true
+
+ /log-symbols/4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+ dev: true
+
+ /lru-cache/6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /magic-string/0.25.9:
+ resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+
+ /make-dir/2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.1
+ dev: true
+ optional: true
+
+ /make-error/1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+ dev: true
+
+ /map-obj/1.0.1:
+ resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj/4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /markdown-it-anchor/8.4.1_d643ca6eb40ae68ab966a77bead78073:
+ resolution: {integrity: sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==}
+ peerDependencies:
+ '@types/markdown-it': '*'
+ markdown-it: '*'
+ dependencies:
+ '@types/markdown-it': 12.2.3
+ markdown-it: 12.3.2
+ dev: true
+
+ /markdown-it-container/3.0.0:
+ resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==}
+ dev: true
+
+ /markdown-it-emoji/2.0.0:
+ resolution: {integrity: sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==}
+ dev: true
+
+ /markdown-it/12.3.2:
+ resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ entities: 2.1.0
+ linkify-it: 3.0.3
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
+ dev: true
+
+ /mdn-data/2.0.23:
+ resolution: {integrity: sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==}
+ dev: true
+
+ /mdurl/1.0.1:
+ resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=}
+ dev: true
+
+ /medium-zoom/1.0.6:
+ resolution: {integrity: sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==}
+ dev: true
+
+ /meow/8.1.2:
+ resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/minimist': 1.2.2
+ 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.3
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.18.1
+ yargs-parser: 20.2.9
+ dev: true
+
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch/4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /mime/1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /mimic-fn/2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /min-indent/1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /minimist-options/4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+ dev: true
+
+ /mitt/3.0.0:
+ resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==}
+ dev: false
+
+ /ms/2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: true
+
+ /ms/2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
+ optional: true
+
+ /nanoid/3.3.2:
+ resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ /needle/2.9.1:
+ resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==}
+ engines: {node: '>= 4.4.x'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ debug: 3.2.7
+ iconv-lite: 0.4.24
+ sax: 1.2.4
+ dev: true
+ optional: true
+
+ /neo-async/2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+ dev: true
+
+ /node-releases/2.0.2:
+ resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==}
+ dev: true
+
+ /normalize-package-data/2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.0
+ semver: 5.7.1
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-package-data/3.0.3:
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
+ dependencies:
+ hosted-git-info: 4.1.0
+ is-core-module: 2.8.1
+ semver: 7.3.5
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-range/0.1.2:
+ resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /npm-run-path/4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+ dev: true
+
+ /nprogress/0.2.0:
+ resolution: {integrity: sha1-y480xTIT2JVyP8urkH6UIq28r7E=}
+ dev: true
+
+ /object-assign/4.1.1:
+ resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /onetime/5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
+ /ora/5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.6.1
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ dev: true
+
+ /p-limit/2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
+ /p-limit/3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+ dev: true
+
+ /p-locate/4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: true
+
+ /p-locate/5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: true
+
+ /p-try/2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /parent-module/1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+ dev: true
+
+ /parse-json/5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.16.7
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+ dev: true
+
+ /parse-node-version/1.0.1:
+ resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /path-exists/4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-key/3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /path-type/4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ /picomatch/2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /pify/4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+ dev: true
+ optional: true
+
+ /postcss-csso/6.0.0_postcss@8.4.12:
+ resolution: {integrity: sha512-LsrU+LVR0mNIYauoTEbYVC81i+yXcGWa9kqW6Lvm+gYUZTaNTJmJT6Dbv+fqT8gOnwXAH1RV+5RXvAVoRtwO+g==}
+ engines: {node: ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ csso: 5.0.3
+ postcss: 8.4.12
+ dev: true
+
+ /postcss-value-parser/4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ dev: true
+
+ /postcss/8.4.12:
+ resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.2
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+
+ /prismjs/1.27.0:
+ resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /promise/7.3.1:
+ resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
+ dependencies:
+ asap: 2.0.6
+ dev: true
+
+ /prr/1.0.1:
+ resolution: {integrity: sha1-0/wRS6BplaRexok/SEzrHXj19HY=}
+ dev: true
+ optional: true
+
+ /pug-attrs/3.0.0:
+ resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==}
+ dependencies:
+ constantinople: 4.0.1
+ js-stringify: 1.0.2
+ pug-runtime: 3.0.1
+ dev: true
+
+ /pug-code-gen/3.0.2:
+ resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==}
+ dependencies:
+ constantinople: 4.0.1
+ doctypes: 1.1.0
+ js-stringify: 1.0.2
+ pug-attrs: 3.0.0
+ pug-error: 2.0.0
+ pug-runtime: 3.0.1
+ void-elements: 3.1.0
+ with: 7.0.2
+ dev: true
+
+ /pug-error/2.0.0:
+ resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==}
+ dev: true
+
+ /pug-filters/4.0.0:
+ resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==}
+ dependencies:
+ constantinople: 4.0.1
+ jstransformer: 1.0.0
+ pug-error: 2.0.0
+ pug-walk: 2.0.0
+ resolve: 1.22.0
+ dev: true
+
+ /pug-lexer/5.0.1:
+ resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==}
+ dependencies:
+ character-parser: 2.2.0
+ is-expression: 4.0.0
+ pug-error: 2.0.0
+ dev: true
+
+ /pug-linker/4.0.0:
+ resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==}
+ dependencies:
+ pug-error: 2.0.0
+ pug-walk: 2.0.0
+ dev: true
+
+ /pug-load/3.0.0:
+ resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==}
+ dependencies:
+ object-assign: 4.1.1
+ pug-walk: 2.0.0
+ dev: true
+
+ /pug-parser/6.0.0:
+ resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==}
+ dependencies:
+ pug-error: 2.0.0
+ token-stream: 1.0.0
+ dev: true
+
+ /pug-runtime/3.0.1:
+ resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==}
+ dev: true
+
+ /pug-strip-comments/2.0.0:
+ resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==}
+ dependencies:
+ pug-error: 2.0.0
+ dev: true
+
+ /pug-walk/2.0.0:
+ resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==}
+ dev: true
+
+ /pug/3.0.2:
+ resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==}
+ dependencies:
+ pug-code-gen: 3.0.2
+ pug-filters: 4.0.0
+ pug-lexer: 5.0.1
+ pug-linker: 4.0.0
+ pug-load: 3.0.0
+ pug-parser: 6.0.0
+ pug-runtime: 3.0.1
+ pug-strip-comments: 2.0.0
+ dev: true
+
+ /punycode/2.1.1:
+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /q/1.5.1:
+ resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=}
+ engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+ dev: true
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /quick-lru/4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /read-pkg-up/7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+ dev: true
+
+ /read-pkg/5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.1
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+ dev: true
+
+ /readable-stream/3.6.0:
+ resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /readdirp/3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
+ /redent/3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
+ /request-light/0.5.7:
+ resolution: {integrity: sha512-i/wKzvcx7Er8tZnvqSxWuNO5ZGggu2UgZAqj/RyZ0si7lBTXL7kZiI/dWxzxnQjaY7s5HEy1qK21Do4Ncr6cVw==}
+ dev: true
+
+ /require-directory/2.1.1:
+ resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /resolve-from/4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resolve-from/5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /resolve-global/1.0.0:
+ resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
+ engines: {node: '>=8'}
+ dependencies:
+ global-dirs: 0.1.1
+ dev: true
+
+ /resolve/1.22.0:
+ resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.8.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /restore-cursor/3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ dev: true
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rollup/2.70.1:
+ resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /safe-buffer/5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ dev: true
+
+ /safer-buffer/2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: true
+ optional: true
+
+ /sass-loader/12.6.0_sass@1.49.10:
+ resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==}
+ engines: {node: '>= 12.13.0'}
+ peerDependencies:
+ fibers: '>= 3.1.0'
+ node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ sass: ^1.3.0
+ sass-embedded: '*'
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ fibers:
+ optional: true
+ node-sass:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ dependencies:
+ klona: 2.0.5
+ neo-async: 2.6.2
+ sass: 1.49.10
+ dev: true
+
+ /sass/1.49.10:
+ resolution: {integrity: sha512-w37zfWJwKu4I78U4z63u1mmgoncq+v3iOB4yzQMPyAPVHHawaQSnu9C9ysGQnZEhW609jkcLioJcMCqm75JMdg==}
+ engines: {node: '>=12.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.5.3
+ immutable: 4.0.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /sax/1.2.4:
+ resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ dev: true
+ optional: true
+
+ /section-matter/1.0.0:
+ resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+ engines: {node: '>=4'}
+ dependencies:
+ extend-shallow: 2.0.1
+ kind-of: 6.0.3
+ dev: true
+
+ /semver/5.7.1:
+ resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
+ hasBin: true
+ dev: true
+
+ /semver/7.3.5:
+ resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /shebang-command/2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: true
+
+ /shebang-regex/3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /signal-exit/3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
+
+ /slash/3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+
+ /spdx-correct/3.1.1:
+ resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.11
+ dev: true
+
+ /spdx-exceptions/2.3.0:
+ resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
+ dev: true
+
+ /spdx-expression-parse/3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: 3.0.11
+ dev: true
+
+ /spdx-license-ids/3.0.11:
+ resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==}
+ dev: true
+
+ /split2/3.2.2:
+ resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: true
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
+ dev: true
+
+ /string-width/4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: true
+
+ /string_decoder/1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /strip-ansi/6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: true
+
+ /strip-bom-string/1.0.0:
+ resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /strip-final-newline/2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /strip-indent/3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
+ /supports-color/5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /text-extensions/1.9.0:
+ resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /through/2.3.8:
+ resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=}
+ dev: true
+
+ /through2/4.0.2:
+ resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: true
+
+ /to-fast-properties/2.0.0:
+ resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /token-stream/1.0.0:
+ resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=}
+ dev: true
+
+ /toml/3.0.0:
+ resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+ dev: true
+
+ /trim-newlines/3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ts-debounce/4.0.0:
+ resolution: {integrity: sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==}
+ dev: true
+
+ /ts-node/10.7.0_ee885bc7281b682b6adbed6ae09ee090:
+ resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+ dependencies:
+ '@cspotcode/source-map-support': 0.7.0
+ '@tsconfig/node10': 1.0.8
+ '@tsconfig/node12': 1.0.9
+ '@tsconfig/node14': 1.0.1
+ '@tsconfig/node16': 1.0.2
+ '@types/node': 17.0.23
+ acorn: 8.7.0
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.6.3
+ v8-compile-cache-lib: 3.0.0
+ yn: 3.1.1
+ dev: true
+
+ /tslib/2.3.1:
+ resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
+ dev: true
+
+ /type-fest/0.18.1:
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /type-fest/0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /typescript/4.6.3:
+ resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dev: true
+
+ /uc.micro/1.0.6:
+ resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+ dev: true
+
+ /universalify/2.0.0:
+ resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /upath/2.0.1:
+ resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.1.1
+ dev: true
+
+ /util-deprecate/1.0.2:
+ resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
+ dev: true
+
+ /v8-compile-cache-lib/3.0.0:
+ resolution: {integrity: sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==}
+ dev: true
+
+ /validate-npm-package-license/3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ dependencies:
+ spdx-correct: 3.1.1
+ spdx-expression-parse: 3.0.1
+ dev: true
+
+ /vite/2.8.6_less@4.1.2:
+ resolution: {integrity: sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==}
+ engines: {node: '>=12.2.0'}
+ hasBin: true
+ peerDependencies:
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ peerDependenciesMeta:
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ dependencies:
+ esbuild: 0.14.29
+ less: 4.1.2
+ postcss: 8.4.12
+ resolve: 1.22.0
+ rollup: 2.70.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /vite/2.9.1_less@4.1.2:
+ resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==}
+ engines: {node: '>=12.2.0'}
+ hasBin: true
+ peerDependencies:
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ peerDependenciesMeta:
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ dependencies:
+ esbuild: 0.14.29
+ less: 4.1.2
+ postcss: 8.4.12
+ resolve: 1.22.0
+ rollup: 2.70.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /void-elements/3.1.0:
+ resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /vscode-css-languageservice/5.3.0:
+ resolution: {integrity: sha512-ujWW855AoJlE4ETU17Gff7unlZZTHDA0w26itk9EQFMfJqi9lE6S67zOsMvcPmJf55MrnGQbojDYZRiDVaFjdA==}
+ dependencies:
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 3.0.3
+ dev: true
+
+ /vscode-html-languageservice/4.2.4:
+ resolution: {integrity: sha512-1HqvXKOq9WlZyW4HTD+0XzrjZoZ/YFrgQY2PZqktbRloHXVAUKm6+cAcvZi4YqKPVn05/CK7do+KBHfuSaEdbg==}
+ dependencies:
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 3.0.3
+ dev: true
+
+ /vscode-json-languageservice/4.2.1:
+ resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==}
+ dependencies:
+ jsonc-parser: 3.0.0
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 3.0.3
+ dev: true
+
+ /vscode-jsonrpc/8.0.0-next.7:
+ resolution: {integrity: sha512-JX/F31LEsims0dAlOTKFE4E+AJMiJvdRSRViifFJSqSN7EzeYyWlfuDchF7g91oRNPZOIWfibTkDf3/UMsQGzQ==}
+ engines: {node: '>=14.0.0'}
+ dev: true
+
+ /vscode-languageserver-protocol/3.17.0-next.16:
+ resolution: {integrity: sha512-tx4DnXw9u3N7vw+bx6n2NKp6FoxoNwiP/biH83AS30I2AnTGyLd7afSeH6Oewn2E8jvB7K15bs12sMppkKOVeQ==}
+ dependencies:
+ vscode-jsonrpc: 8.0.0-next.7
+ vscode-languageserver-types: 3.17.0-next.9
+ dev: true
+
+ /vscode-languageserver-textdocument/1.0.4:
+ resolution: {integrity: sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==}
+ dev: true
+
+ /vscode-languageserver-types/3.16.0:
+ resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==}
+ dev: true
+
+ /vscode-languageserver-types/3.17.0-next.9:
+ resolution: {integrity: sha512-9/PeDNPYduaoXRUzYpqmu4ZV9L01HGo0wH9FUt+sSHR7IXwA7xoXBfNUlv8gB9H0D2WwEmMomSy1NmhjKQyn3A==}
+ dev: true
+
+ /vscode-languageserver/8.0.0-next.10:
+ resolution: {integrity: sha512-sdjldl9ipuBSWVw5ENVMRcOVQwF0o+J6+lNA7FrB8MiLmzflnfjRoJMqA5tCEY8S/J/+P56ZR/dqiQnRYg5m8w==}
+ hasBin: true
+ dependencies:
+ vscode-languageserver-protocol: 3.17.0-next.16
+ dev: true
+
+ /vscode-nls/5.0.0:
+ resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==}
+ dev: true
+
+ /vscode-pug-languageservice/0.29.8:
+ resolution: {integrity: sha512-QHYAzDSJLg7GOLxCZ12qsM0dAM0dPeMSS1t4kKfzLsfpErmZpFzkAIXbidVrNMdMffGZMtTuIlcpEyWHbx96Iw==}
+ dependencies:
+ '@volar/code-gen': 0.29.8
+ '@volar/shared': 0.29.8
+ '@volar/source-map': 0.29.8
+ '@volar/transforms': 0.29.8
+ pug-lexer: 5.0.1
+ pug-parser: 6.0.0
+ vscode-languageserver: 8.0.0-next.10
+ dev: true
+
+ /vscode-typescript-languageservice/0.29.8:
+ resolution: {integrity: sha512-eecDqHk4WjEvy6VHQ6teHczppQ9yJO2wExCy7yu7WiFj35qbw0h4G6Erv46MvP3ClL8FggFzD7s1qM6vdqJUfw==}
+ dependencies:
+ '@volar/shared': 0.29.8
+ semver: 7.3.5
+ upath: 2.0.1
+ vscode-languageserver: 8.0.0-next.10
+ vscode-languageserver-textdocument: 1.0.4
+ dev: true
+
+ /vscode-uri/2.1.2:
+ resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==}
+ dev: true
+
+ /vscode-uri/3.0.3:
+ resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==}
+ dev: true
+
+ /vscode-vue-languageservice/0.29.8:
+ resolution: {integrity: sha512-qSJdvW5ttyGUB/8uWDKgo8vnIoFnXYlBP4Z/cn54btsRn6ZMw7IJGJU1381e7p/yGvMTLeGbugD53SghbnSa6g==}
+ dependencies:
+ '@volar/code-gen': 0.29.8
+ '@volar/html2pug': 0.29.8
+ '@volar/shared': 0.29.8
+ '@volar/source-map': 0.29.8
+ '@volar/transforms': 0.29.8
+ '@volar/vue-code-gen': 0.29.8
+ '@vscode/emmet-helper': 2.8.4
+ '@vue/reactivity': 3.2.31
+ '@vue/shared': 3.2.31
+ request-light: 0.5.7
+ upath: 2.0.1
+ vscode-css-languageservice: 5.3.0
+ vscode-html-languageservice: 4.2.4
+ vscode-json-languageservice: 4.2.1
+ vscode-languageserver: 8.0.0-next.10
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-pug-languageservice: 0.29.8
+ vscode-typescript-languageservice: 0.29.8
+ dev: true
+
+ /vue-demi/0.12.5_vue@3.2.31:
+ resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ vue: 3.2.31
+ dev: true
+
+ /vue-router/4.0.14_vue@3.2.31:
+ resolution: {integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@vue/devtools-api': 6.1.4
+ vue: 3.2.31
+ dev: true
+
+ /vue-tsc/0.29.8_typescript@4.6.3:
+ resolution: {integrity: sha512-pT0wLRjvRuSmB+J4WJT6uuV9mO0KtSSXEAtaVXZQzyk5+DJdbLIQTbRce/TXSkfqt1l1WogO78RjtOJFiMCgfQ==}
+ hasBin: true
+ peerDependencies:
+ typescript: '*'
+ dependencies:
+ '@volar/shared': 0.29.8
+ typescript: 4.6.3
+ vscode-vue-languageservice: 0.29.8
+ dev: true
+
+ /vue/3.2.31:
+ resolution: {integrity: sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==}
+ dependencies:
+ '@vue/compiler-dom': 3.2.31
+ '@vue/compiler-sfc': 3.2.31
+ '@vue/runtime-dom': 3.2.31
+ '@vue/server-renderer': 3.2.31_vue@3.2.31
+ '@vue/shared': 3.2.31
+
+ /vuepress-vite/2.0.0-beta.37_less@4.1.2:
+ resolution: {integrity: sha512-pmxJYoE9dXqKI3/8+G5B+zWgydMls5hPPvY1HkBQ5Ccvw4bIOUaSgoq3kV2cZIfpkgc0+seiDKqHN3MTkJlHGg==}
+ hasBin: true
+ dependencies:
+ '@vuepress/bundler-vite': 2.0.0-beta.37_less@4.1.2
+ '@vuepress/cli': 2.0.0-beta.37
+ '@vuepress/core': 2.0.0-beta.37
+ '@vuepress/theme-default': 2.0.0-beta.37
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - fibers
+ - less
+ - node-sass
+ - sass
+ - sass-embedded
+ - stylus
+ - supports-color
+ - webpack
+ dev: true
+
+ /vuepress/2.0.0-beta.37_less@4.1.2:
+ resolution: {integrity: sha512-Mk+rwfcgvSlrrNFEOEOv7FmGNGPWPC+I3e08ToUo3P4LahB1Imd2dumPDNGXIVs6WR6N4GYWkAw8an9+g/hJcQ==}
+ hasBin: true
+ dependencies:
+ vuepress-vite: 2.0.0-beta.37_less@4.1.2
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - fibers
+ - less
+ - node-sass
+ - sass
+ - sass-embedded
+ - stylus
+ - supports-color
+ - webpack
+ dev: true
+
+ /wcwidth/1.0.1:
+ resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=}
+ dependencies:
+ defaults: 1.0.3
+ dev: true
+
+ /which/2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /with/7.0.2:
+ resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@babel/parser': 7.17.8
+ '@babel/types': 7.17.0
+ assert-never: 1.2.1
+ babel-walk: 3.0.0-canary-5
+ dev: true
+
+ /wrap-ansi/7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /y18n/5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yallist/4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: true
+
+ /yaml/1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /yargs-parser/20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yargs-parser/21.0.1:
+ resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /yargs/17.4.0:
+ resolution: {integrity: sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.0.1
+ dev: true
+
+ /yn/3.1.1:
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /yocto-queue/0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: true
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 00000000..df36fcfb
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 00000000..41bfa4b7
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 00000000..5d10825f
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,16 @@
+///
+
+interface Window {
+ _BMap: any
+ BMapGL: import('../types/main.d').BMapGL
+ /**
+ * 百度地图jsonp初始化方法
+ */
+ _initBMap: () => void
+ [key: string]: any
+}
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
\ No newline at end of file
diff --git a/src/hooks/useBaseMapEffect.ts b/src/hooks/useBaseMapEffect.ts
new file mode 100644
index 00000000..85d420df
--- /dev/null
+++ b/src/hooks/useBaseMapEffect.ts
@@ -0,0 +1,23 @@
+import { onUnmounted } from 'vue'
+import useBaseMapListener from './useBaseMapListener'
+let _map: BMapGL.Map | null = null
+function useBaseMapEffect(cal: (map: BMapGL.Map) => void | VoidFunction) {
+ const { on } = useBaseMapListener()
+ let onUnmountedCal: VoidFunction | void = void 0
+
+ if (_map) {
+ onUnmountedCal = cal(_map)
+ } else {
+ on('initd', (map) => {
+ _map = map
+ onUnmountedCal = cal(map)
+ })
+ }
+
+ onUnmounted(() => {
+ onUnmountedCal && onUnmountedCal()
+ })
+ return { map: _map }
+}
+
+export default useBaseMapEffect
diff --git a/src/hooks/useBaseMapListener.ts b/src/hooks/useBaseMapListener.ts
new file mode 100644
index 00000000..9366e9b4
--- /dev/null
+++ b/src/hooks/useBaseMapListener.ts
@@ -0,0 +1,18 @@
+import mitt from 'mitt'
+
+type Events = {
+ initd: BMapGL.Map
+ unload: any
+ [prop: string]: any
+}
+
+const emitter = mitt()
+function useBaseMapListener() {
+ return {
+ emit: emitter.emit,
+ on: emitter.on,
+ off: emitter.off
+ }
+}
+
+export default useBaseMapListener
diff --git a/src/hooks/useLife.ts b/src/hooks/useLife.ts
new file mode 100644
index 00000000..b5e55589
--- /dev/null
+++ b/src/hooks/useLife.ts
@@ -0,0 +1,22 @@
+import { onUnmounted, getCurrentInstance } from 'vue'
+import useBaseMapListener from './useBaseMapListener'
+
+export default function useLife(initdEventName?: string) {
+ const { uid, emit: VueEmit } = getCurrentInstance()!
+ const { on, emit, off } = useBaseMapListener()
+ let eventKey = initdEventName || `__initd__${uid}`
+
+ on(eventKey, (map) => {
+ VueEmit('initd', map)
+ })
+
+ onUnmounted(() => {
+ VueEmit('unload')
+ off(eventKey)
+ })
+ return {
+ ready: (map: BMapGL.Map) => {
+ emit(eventKey, map)
+ }
+ }
+}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 00000000..eb9f7d88
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,22 @@
+import { App, Plugin } from 'vue'
+
+import BaiduMap from './lib/components/baidu-map/index.vue'
+import BmControl from './lib/components/control/bm-control/index.vue'
+import BmScale from './lib/components/control/bm-scale/index.vue'
+import BmZoom from './lib/components/control/bm-zoom/index.vue'
+import BmNavigation3d from './lib/components/control/bm-navigation3d/index.vue'
+import Marker from './lib/components/overlay/marker/index.vue'
+import Label from './lib/components/overlay/label/index.vue'
+
+export type BaiduMapOptions = {
+ ak: string
+}
+
+const baiduMapInitPlugin: Plugin = {
+ install(app: App, options: BaiduMapOptions) {
+ app.provide('baiduMapAk', options.ak)
+ }
+}
+export { BaiduMap, BmControl, BmScale, BmZoom, BmNavigation3d, Marker, Label }
+
+export default baiduMapInitPlugin
diff --git a/src/lib/components/baidu-map/index.vue b/src/lib/components/baidu-map/index.vue
new file mode 100644
index 00000000..19cc4417
--- /dev/null
+++ b/src/lib/components/baidu-map/index.vue
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/control/bm-control/index.vue b/src/lib/components/control/bm-control/index.vue
new file mode 100644
index 00000000..d3824b61
--- /dev/null
+++ b/src/lib/components/control/bm-control/index.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/src/lib/components/control/bm-navigation3d/index.vue b/src/lib/components/control/bm-navigation3d/index.vue
new file mode 100644
index 00000000..04b3a521
--- /dev/null
+++ b/src/lib/components/control/bm-navigation3d/index.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
diff --git a/src/lib/components/control/bm-scale/index.vue b/src/lib/components/control/bm-scale/index.vue
new file mode 100644
index 00000000..4938dcff
--- /dev/null
+++ b/src/lib/components/control/bm-scale/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/src/lib/components/control/bm-zoom/index.vue b/src/lib/components/control/bm-zoom/index.vue
new file mode 100644
index 00000000..00a9b11e
--- /dev/null
+++ b/src/lib/components/control/bm-zoom/index.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/src/lib/components/overlay/label/index.vue b/src/lib/components/overlay/label/index.vue
new file mode 100644
index 00000000..ae08b38f
--- /dev/null
+++ b/src/lib/components/overlay/label/index.vue
@@ -0,0 +1,64 @@
+
+
diff --git a/src/lib/components/overlay/marker/index.vue b/src/lib/components/overlay/marker/index.vue
new file mode 100644
index 00000000..ca98d32e
--- /dev/null
+++ b/src/lib/components/overlay/marker/index.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 00000000..8cdc2d4f
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,10 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+// import baiduMap from './index'
+
+// if (typeof (window as any).global === 'undefined') {
+// ;(window as any).global = window
+// }
+const app = createApp(App)
+// app.use(baiduMap, { ak: '4stE857hYPHbEmgKhLiTAa0QbCIULHpm' })
+app.mount('#app')
diff --git a/src/utils/index.ts b/src/utils/index.ts
new file mode 100644
index 00000000..b421f5b6
--- /dev/null
+++ b/src/utils/index.ts
@@ -0,0 +1,8 @@
+/**
+ *
+ * @param value 判断是否是字符串的值
+ * @returns
+ */
+export function isString(value: any): boolean {
+ return Object.prototype.toString.call(value) === '[object String]'
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..b4a29eef
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,52 @@
+{
+ "compilerOptions": {
+ "target": "es2015",
+ "useDefineForClassFields": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "strict": true,
+ "jsx": "preserve",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "isolatedModules":true,
+ "lib": [
+ "ESNext",
+ "dom",
+ "ESNext.Promise"
+ ],
+ "types": [
+ "vite/client"
+ ],
+ "suppressImplicitAnyIndexErrors": true,
+ "baseUrl": "./",
+ "importHelpers": true,
+ "paths": {
+ "hooks/*": [
+ "src/hooks/*"
+ ],
+ "types/*": [
+ "types/*"
+ ],
+ "utils/*": [
+ "src/utils/*"
+ ],
+ }
+ },
+ "include": [
+ "src/*.ts",
+ "src/**/*.ts",
+ "src/**/*.d.ts",
+ "src/**/*.tsx",
+ "src/**/*.vue",
+ "src/*.vue",
+ "types/*.d.ts",
+ "vite.config.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ],
+ "files": [
+ "./types/index.d.ts"
+ ]
+}
\ No newline at end of file
diff --git a/types/base.d.ts b/types/base.d.ts
new file mode 100644
index 00000000..b2fbbf06
--- /dev/null
+++ b/types/base.d.ts
@@ -0,0 +1,140 @@
+declare namespace BMapGL {
+ type Callback = (...args: any[]) => void
+ /**
+ * 表示一个地理坐标点。
+ */
+ class Point {
+ /**
+ * @param {number} lng 地理经度
+ * @param {number} lat 地理纬度
+ */
+ constructor(lng: number, lat: number)
+ /**
+ * 地理经度
+ */
+ lng: number
+ /**
+ * 地理纬度
+ */
+ lat: number
+ /**
+ * 判断坐标点是否相等,当且仅当两点的经度和纬度均相等时返回true
+ * @param other 另一个地理坐标点
+ */
+ equals(other: Point): boolean
+ }
+ /**
+ * 表示地图上的一点,单位为像素。
+ */
+ class Pixel {
+ /**
+ * @param {number} x x坐标
+ * @param {number} y y坐标
+ */
+ constructor(x: number, y: number)
+ /**
+ * x坐标
+ */
+ x: number
+ /**
+ * y坐标
+ */
+ y: number
+ /**
+ * 判断坐标点是否相等,当且仅当两点的x坐标和y坐标均相等时返回true
+ * @param other 另一个像素点
+ */
+ equals(other: Point): boolean
+ }
+ /**
+ * 此类以像素表示一个矩形区域的大小。
+ * 以指定的宽度和高度创建一个矩形区域大小对象
+ */
+ class Size {
+ /**
+ * @param {number} width 宽度
+ * @param {number} height 高度
+ */
+ constructor(width: number, height: number)
+ /**
+ * 宽度
+ */
+ width: number
+ /**
+ * 宽度
+ */
+ height: number
+ /**
+ * 当且仅当此矩形中的宽度和高度都等于其他矩形的宽度和高度时,返回true
+ * @param {Size} other 另一个矩形区域大小
+ */
+ equals(other: Size): boolean
+ }
+ /**
+ * 创建一个包含所有给定点坐标的矩形区域
+ */
+ class Bounds {
+ /**
+ * @param {Point} sw 矩形区域的西南角
+ * @param {Point} y 矩形区域的东北角
+ */
+ constructor(sw: Point, ne: Point)
+ /**
+ * 矩形区域的西南角
+ */
+ sw: Point
+ /**
+ * 矩形区域的东北角
+ */
+ ne: Point
+ /**
+ * 当且仅当此矩形中的两点参数都等于其他矩形的两点参数时,返回true
+ * @param other 另一个矩形
+ */
+ equals(other: Bounds): boolean
+ /**
+ * 判断一个点是否包含在当前矩形区域,如果点的地理坐标位于此矩形内,则返回true
+ * @param point 地理坐标点
+ */
+ containsPoint(point: Point): boolean
+ /**
+ * 传入的矩形区域完全包含于此矩形区域中,则返回true
+ * @param bounds 矩形
+ */
+ containsBounds(bounds: Bounds): Boolean
+ /**
+ * 计算与另一矩形的交集区域
+ * @param bounds 矩形
+ */
+ intersects(other: Bounds): Bounds
+ /**
+ * 放大此矩形,使其包含给定的点
+ */
+ extend(point: Point): void
+ /**
+ * 返回矩形的中心点
+ */
+ getCenter(): Point
+ /**
+ * 如果矩形为空,则返回true
+ */
+ isEmpty(): boolean
+ /**
+ * 返回矩形区域的西南角
+ */
+ getSouthWest(): Point
+ /**
+ * 返回矩形区域的东北角
+ */
+ getNorthEast(): Point
+ /**
+ * 返回矩形区域的跨度
+ */
+ toSpan(): Point
+ }
+ class Projection {
+ static convertMC2LL(point: Point): Point
+ static convertLL2MC(point: Point): Point
+ static proximityConvertMC2LL(point: Point): Point
+ }
+}
diff --git a/types/common.d.ts b/types/common.d.ts
new file mode 100644
index 00000000..847e76d1
--- /dev/null
+++ b/types/common.d.ts
@@ -0,0 +1,105 @@
+declare enum ControlAnchor {
+ /**
+ * 控件将定位到地图的右上角
+ */
+ 'BMAP_ANCHOR_TOP_RIGHT' = 0,
+ /**
+ * 控件将定位到地图的左上角
+ */
+ 'BMAP_ANCHOR_TOP_LEFT' = 1,
+ /**
+ * 控件将定位到地图的左下角
+ */
+ 'BMAP_ANCHOR_BOTTOM_LEFT' = 2,
+ /**
+ * 控件将定位到地图的右下角
+ */
+ 'BMAP_ANCHOR_BOTTOM_RIGHT' = 3
+}
+
+declare type _ControlAnchor = keyof typeof ControlAnchor
+declare enum MapType {
+ // FIXME: 和文档名字统一
+ /**
+ * 此地图类型展示普通街道视图
+ */
+ 'BMAP_NORMAL_MAP' = 'B_NORMAL_MAP',
+ /**
+ * 此地图类型展示透视图像视图
+ */
+ 'BMAP_EARTH_MAP' = 'B_EARTH_MAP'
+}
+declare type _MapType = keyof typeof MapType
+declare enum NavigationControlType {
+ /**
+ * 标准的平移缩放控件(包括平移、缩放按钮和滑块)
+ */
+ 'BMAP_NAVIGATION_CONTROL_LARGE' = 'BMAP_NAVIGATION_CONTROL_LARGE',
+ /**
+ * 仅包含平移和缩放按钮
+ */
+ 'BMAP_NAVIGATION_CONTROL_SMALL' = 'BMAP_NAVIGATION_CONTROL_SMALL',
+ /**
+ * 仅包含平移按钮
+ */
+ 'BMAP_NAVIGATION_CONTROL_PAN' = 'BMAP_NAVIGATION_CONTROL_PAN',
+ /**
+ * 仅包含缩放按钮
+ */
+ 'BMAP_NAVIGATION_CONTROL_ZOOM' = 'BMAP_NAVIGATION_CONTROL_ZOOM'
+}
+
+/**
+ * 市内公交方案换乘策略
+ */
+declare enum TransitPolicy {
+ /**
+ * 最少时间
+ */
+ 'BMAP_TRANSIT_POLICY_LEAST_TIME',
+ /**
+ * 最少换乘
+ */
+ 'BMAP_TRANSIT_POLICY_LEAST_TRANSFER',
+ /**
+ * 最少步行
+ */
+ 'BMAP_TRANSIT_POLICY_LEAST_WALKING',
+ /**
+ * 不乘地铁
+ */
+ 'BMAP_TRANSIT_POLICY_AVOID_SUBWAYS'
+}
+declare type _TransitPolicy = keyof typeof TransitPolicy
+/**
+ * 驾车方案的策略配置
+ */
+declare enum DrivingPolicy {
+ /**
+ * 最少时间
+ */
+ 'BMAP_DRIVING_POLICY_LEAST_TIME',
+ /**
+ * 最短距离
+ */
+ 'BMAP_DRIVING_POLICY_LEAST_DISTANCE',
+ /**
+ * 避开高速
+ */
+ 'BMAP_DRIVING_POLICY_AVOID_HIGHWAYS'
+}
+
+declare enum LengthUnit {
+ /**
+ * 公制单位
+ */
+ BMAP_UNIT_METRIC = 'metric',
+ /**
+ * 英制单位
+ */
+ BMAP_UNIT_IMPERIAL = 'us'
+}
+
+declare type LengthUnitValue = LengthUnit.BMAP_UNIT_METRIC | LengthUnit.BMAP_UNIT_IMPERIAL
+
+declare type _LengthUnit = keyof typeof LengthUnit
diff --git a/types/control.d.ts b/types/control.d.ts
new file mode 100644
index 00000000..203f1ed4
--- /dev/null
+++ b/types/control.d.ts
@@ -0,0 +1,176 @@
+///
+///
+declare namespace BMapGL {
+ class Control {
+ constructor()
+ /**
+ * 控件默认的停靠位置。自定义控件时需要提供此属性,作为控件的默认停靠位置
+ */
+ defaultAnchor: ControlAnchor
+ /**
+ * 控件默认的位置偏移值。自定义控件时需要提供此属性,作为控件的默认偏移位置
+ */
+ defaultOffset: Size
+ /**
+ * 抽象方法。调用Map.addControl()方法添加控件时将调用此方法,从而实现该控件的初始化。
+ * 自定义控件时需要实现此方法,并将元素的DOM元素在该方法中返回。
+ * DOM元素需要添加到地图的容器中,使用map.getContainer:()
+ * @param {Map} map
+ */
+ initialize(map: Map): HTMLElement
+ /**
+ * 设置控件停靠的位置
+ * @param {ControlAnchor} anchor
+ */
+ setAnchor(anchor: ControlAnchor): void
+ /**
+ * 返回控件停靠的位置
+ */
+ getAnchor(): ControlAnchor
+ /**
+ * 设置控件停靠的偏移量
+ * @param {Size} offset
+ */
+ setOffset(offset: Size): void
+ /**
+ * 返回控件停靠的偏移量
+ */
+ getOffset(): Size
+ /**
+ * 显示控件
+ */
+ show(): void
+ /**
+ * 隐藏控件
+ */
+ hide(): void
+ /**
+ * 判断控件的可见性
+ */
+ isVisible(): Boolean
+
+ /** 自定义Control在add之后立马能读取到Container, 内置Control不能 */
+ getContainer(): HTMLElement | undefined
+ }
+ interface NavigationControlOptions {
+ anchor?: ControlAnchor;
+ offset?: Size;
+ type?: NavigationControlType;
+ showZoomInfo?: boolean;
+ enableGeolocation?: boolean;
+ }
+ interface ScaleControlOptions {
+ /**
+ * 控件停靠的位置
+ */
+ anchor?: ControlAnchor
+ /**
+ * 控件的偏移值
+ */
+ offset?: Size
+ }
+ interface CopyrightControlOptions {
+ /**
+ * 控件停靠的位置
+ */
+ anchor?: ControlAnchor
+ /**
+ * 控件的偏移值
+ */
+ offset?: Size
+ }
+ interface ZoomControlOptions {
+ /**
+ * 控件停靠的位置
+ */
+ anchor?: ControlAnchor
+ /**
+ * 控件的偏移值
+ */
+ offset?: Size
+ }
+ interface NavigationControl3DOptions {
+ /**
+ * 控件停靠的位置
+ */
+ anchor?: ControlAnchor
+ /**
+ * 控件的偏移值
+ */
+ offset?: Size
+ }
+ type ControlAnchor = number;
+ class OverviewMapControl extends Control {
+ constructor(opts: OverviewMapControlOptions);
+ changeView(): void;
+ setSize(size: Size): void;
+ getSize(): Size;
+ onviewchanged: (event: { type: string, target: any, isOpen: boolean }) => void;
+ onviewchanging: (event: { type: string, target: any }) => void;
+ }
+ type LengthUnit = string;
+ class MapTypeControl extends Control {
+ constructor(opts?: MapTypeControlOptions);
+ }
+ class NavigationControl extends Control {
+ constructor(opts?: NavigationControlOptions);
+ getType(): NavigationControlOptions;
+ setType(type: NavigationControlType): void;
+ }
+ interface OverviewMapControlOptions {
+ anchor?: ControlAnchor;
+ offset?: Size;
+ size?: Size;
+ isOpen?: boolean;
+ }
+ class CopyrightControl extends Control {
+ constructor(opts?: CopyrightControlOptions);
+ addCopyright(copyright: Copyright): void;
+ removeCopyright(id: number): void;
+ getCopyright(id: number): Copyright;
+ getCopyrightCollection(): Copyright[];
+ }
+ interface MapTypeControlOptions {
+ type?: MapTypeControlType;
+ mapTypes?: MapType[];
+ }
+ type NavigationControlType = number;
+ class ScaleControl extends Control {
+ constructor(opts?: ScaleControlOptions)
+ /**
+ * 返回比例尺单位制
+ */
+ getUnit(): LengthUnitValue
+ /**
+ * 设置比例尺单位制
+ * @param unit
+ */
+ setUnit(unit: LengthUnit): void
+ }
+ interface Copyright {
+ id?: number;
+ content?: string;
+ bounds?: Bounds;
+ }
+ type MapTypeControlType = number;
+ class GeolocationControl extends Control {
+ constructor(opts?: GeolocationControlOptions);
+ }
+ interface GeolocationControlOptions {
+ anchor?: ControlAnchor;
+ offset?: Size;
+ showAddressBar?: boolean;
+ enableAutoLocation?: boolean;
+ locationIcon?: Icon;
+ }
+ type StatusCode = number;
+ class PanoramaControl extends Control {
+ constructor();
+ }
+ class ZoomControl extends Control {
+ constructor(opts?: ZoomControlOptions);
+ }
+ class NavigationControl3D extends Control {
+ constructor(opts?: NavigationControl3DOptions);
+ }
+}
\ No newline at end of file
diff --git a/types/core.d.ts b/types/core.d.ts
new file mode 100644
index 00000000..f9e8b996
--- /dev/null
+++ b/types/core.d.ts
@@ -0,0 +1,396 @@
+///
+///
+///
+
+declare namespace BMapGL {
+ /**
+ * 地图核心组件
+ */
+ class Map {
+ constructor(container: string | HTMLElement, opts?: MapOptions)
+ /**
+ * @default true
+ * 启用地图拖拽,默认启用
+ */
+ enableDragging(): void
+ /**
+ * 禁用地图拖拽
+ */
+ disableDragging(): void
+ /**
+ * @default false
+ * 启用地图惯性拖拽,默认禁用
+ */
+ enableInertialDragging(): void
+ /**
+ * 禁用地图惯性拖拽
+ */
+ disableInertialDragging(): void
+ /**
+ * @default false
+ * 允许地图可被鼠标滚轮缩放,默认禁用
+ */
+ enableScrollWheelZoom(): void
+ /**
+ * 禁止地图被鼠标滚轮缩放
+ */
+ disableScrollWheelZoom(): void
+ /**
+ * 开启双击平滑缩放效果
+ */
+ enableContinuousZoom(): void
+ /**
+ * 关闭双击平滑缩放效果
+ */
+ disableContinuousZoom(): void
+ /**
+ * 开启图区resize中心点不变
+ */
+ enableResizeOnCenter(): void
+ /**
+ * 关闭图区resize中心点不变
+ */
+ disableResizeOnCenter(): void
+ /**
+ * 启用地图双击缩放,左键双击放大、右键双击缩小
+ */
+ enableDoubleClickZoom(): void
+ /**
+ * 取消地图双击缩放
+ */
+ disableDoubleClickZoom(): void
+ /**
+ * @default false
+ * 启用键盘操作,默认禁用。
+ * 键盘的上、下、左、右键可连续移动地图。
+ * 同时按下其中两个键可使地图进行对角移动。
+ * PgUp、PgDn、Home和End键会使地图平移其1/2的大小。
+ * +、-键会使地图放大或缩小一级
+ */
+ enableKeyboard(): void
+ /**
+ * 禁用键盘操作
+ */
+ disableKeyboard(): void
+ /**
+ * 启用双指缩放地图。
+ */
+ enablePinchToZoom(): void
+ /**
+ * 禁用双指缩放地图。
+ */
+ disablePinchToZoom(): void
+ /**
+ * 是否允许通过手势旋转地图。
+ */
+ enableRotateGestures(): void
+ /**
+ * 是否允许通过手势倾斜地图。
+ */
+ enableTiltGestures(): void
+ /**
+ * @default true
+ * 启用自动适应容器尺寸变化,默认启用
+ */
+ enableAutoResize(): void
+ /**
+ * 禁用自动适应容器尺寸变化
+ */
+ disableAutoResize(): void
+ enableRotate(): void
+ disableRotate(): void
+ enableTilt(): void
+ disableTilt(): void
+ /**
+ * 设置地图默认的鼠标指针样式。参数cursor应符合CSS的cursor属性规范
+ */
+ setDefaultCursor(cursor: string): void
+ /**
+ * 获取地图默认的鼠标指针样式,返回cursor值
+ */
+ getDefaultCursor(): string
+ /**
+ * 设置拖拽地图时的鼠标指针样式。参数cursor应符合CSS的cursor属性规范
+ */
+ setDraggingCursor(cursor: string): void
+ /**
+ * 返回拖拽地图时的鼠标指针样式
+ */
+ getDraggingCursor(): string
+ /**
+ * 设置地图允许的最小级别。取值不得小于地图类型所允许的最小级别
+ */
+ setMinZoom(zoom: number): void
+ /**
+ * 设置地图允许的最大级别。取值不得大于地图类型所允许的最大级别
+ */
+ setMaxZoom(zoom: number): void
+ setHeading(heading: number): void
+ setTilt(tilt: number): void
+
+ setMapStyle(mapStyle: MapStyle): void
+ /**
+ * 设置个性化地图,参数为个性化配置对象
+ */
+ setMapStyleV2(config: Object): void
+ /**
+ * 获取当前地图样式id,对于内置样式则返回样式名称;对于自定义样式,则返回内部自动生成的样式id
+ */
+ getMapStyleId(): string
+
+ setPanorama(pano: Panorama): void
+ /**
+ * 开启路况图层
+ */
+ setTrafficOn(): void
+ /**
+ * 关闭路况图层
+ */
+ setTrafficOff(): void
+
+ setCurrentCity(city: string): void
+ /**
+ * 设置地图类型
+ */
+ setMapType(mapTypeId: MapType): void
+ /**
+ * 返回地图类型
+ */
+ getMapType(): MapType
+ /**
+ * 根据提供的地理区域或坐标设置地图视野,调整后的视野会保证包含提供的地理区域或坐标
+ */
+ setViewport(view: Point[] | Viewport, viewportOptions?: ViewportOptions): void
+ /**
+ * 设置地图中心点。center除了可以为坐标点以外,还支持城市名。可选配置参数包括'noAnimation: boolean'是否禁用动画效果;'callback: function'动画结束后调用此方法,如果没有动画则立即调用
+ */
+ setCenter(center: Point | string, options?: baseSetOptions): void
+ /**
+ * 返回地图当前中心点
+ */
+ getCenter(): Point
+ /**
+ * 将视图切换到指定的缩放等级,中心点坐标不变。
+ * @description 注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。可选配置参数包括'noAnimation:boolean'是否禁用动画效果;'callback:function'动画结束后会调用此方法,如果没有动画则立即调用;'zoomCenter:Point'缩放中心点,默认以地图中心点为基准缩放
+ */
+ setZoom(zoom: number, options?: ZoomOptions): void
+ /**
+ * 返回地图当前缩放级别
+ */
+ getZoom(): number
+
+ disable3DBuilding(): void
+ /**
+ * 设置地图可拖动区域,参数为地图拖拽的区域范围
+ */
+ setBounds(bounds: Bounds): void
+ /**
+ * 获取地图当前视野范围的矩形区域,以地理坐标表示。如果地图尚未初始化则返回一个空的 `Bounds` 实例。
+ */
+ getBounds(): Bounds
+ getDistance(start: Point, end: Point): number
+ getSize(): Size
+ getViewport(view: Point[] | Bounds, viewportOptions?: ViewportOptions): Viewport
+ getPanorama(): Panorama
+ /**
+ * 设初始化地图。 如果center类型为Point时,zoom必须赋值,范围3-19级,若调用高清底图(针对移动端开发)时,zoom可赋值范围为3-18级。如果center类型为字符串时,比如“北京”,zoom可以忽略,地图将自动根据center适配最佳zoom级别
+ */
+ centerAndZoom(center: Point | string, zoom: number): void
+ centerAndZoom(city: string): void
+ /**
+ * 将地图的中心点更改为给定的点,跳转到指定中心点进行渲染。如果该点在当前的地图视图中已经可见,则会以平滑动画的方式移动到中心点位置。可以通过配置强制移动过程不使用动画效果
+ */
+ panTo(center: Point): void
+ /**
+ * 将地图在水平位置上移动x像素,垂直位置上移动y像素。如果指定的像素大于可视区域范围或者在配置中指定没有动画效果,则不执行滑动效果
+ */
+ panBy(x: number, y: number): void
+ /**
+ * 飞到指定的中心点和级别,提供给定位缩放地图使用
+ */
+ flyTo(center: Point, zoom: number): void
+ /**
+ * 重新设置地图,恢复地图初始化时的中心点和级别
+ */
+ reset(): void
+ highResolutionEnabled(): boolean
+ zoomIn(): void
+ zoomOut(): void
+ addHotspot(hotspot: Hotspot): void
+ removeHotspot(hotspot: Hotspot): void
+ clearHotspots(): void
+ addControl(control: Control): void
+ removeControl(control: Control): void
+ getContainer(): HTMLElement
+ addContextMenu(menu: ContextMenu): void
+ removeContextMenu(menu: ContextMenu): void
+ addOverlay(overlay: Overlay): void
+ removeOverlay(overlay: Overlay): void
+ clearOverlays(): void
+ openInfoWindow(infoWnd: InfoWindow, point: Point): void
+ closeInfoWindow(): void
+ pointToOverlayPixel(point: Point): Pixel
+ overlayPixelToPoint(pixel: Pixel): Point
+ /**
+ * 获取当前打开的信息窗口实例,如果当前地图没有处于打开状态信息窗口,则返回 `null`
+ */
+ getInfoWindow(): InfoWindow
+ getOverlays(): Overlay[]
+ /**
+ * 获取覆盖物容器元素,返回地图覆盖物容器对象
+ */
+ getPanes(): MapPanes
+ addTileLayer(tileLayer: TileLayer): void
+ removeTileLayer(tilelayer: TileLayer): void
+ getTileLayer(mapType: string): TileLayer
+ /**
+ * 启动视角动画
+ */
+ // startViewAnimation(viewAnimation: ViewAnimation): number
+ /**
+ * 停止视角动画
+ */
+ // cancelViewAnimation(viewAnimation: ViewAnimation): void
+ /**
+ * 获取地图截图,地球模式不支持。需要初始化地图配置preserveDrawingBuffer:true,否则是黑屏
+ */
+ getMapScreenshot(): string
+ /**
+ * 像素坐标转换为经纬度坐标
+ */
+ pixelToPoint(pixel: Pixel): Point
+ /**
+ * 经纬度坐标转换为像素坐标
+ */
+ pointToPixel(point: Point): Pixel
+ /**
+ * 加载地图当前样式所需要的样式文件,callback为加载成功后的回调函数
+ */
+ loadMapStyleFiles(callback: Function): void
+ /**
+ * 设置版权信息位置,其中logo为logo位置,copyright为文字位置
+ */
+ setCopyrightOffset(logo: Object, cpy: Object): void
+ /**
+ * 销毁地图,当使用 WebGL 渲染地图时,如果确认不再使用该地图实例,则需要调用本方法销毁 WebGL 上下文,否则频繁创建新地图实例会导致浏览器报:too many WebGL context 的警告
+ */
+ destroy(): void
+ onclick: (event: { type: string; target: any; point: Point; pixel: Pixel; overlay: Overlay }) => void
+ ondblclick: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onrightclick: (event: { type: string; target: any; point: Point; pixel: Pixel; overlay: Overlay }) => void
+ onrightdblclick: (event: { type: string; target: any; point: Point; pixel: Pixel; overlay: Overlay }) => void
+ onmaptypechange: (event: { type: string; target: any }) => void
+ onmousemove: (event: { type: string; target: any; point: Point; pixel: Pixel; overlay: Overlay }) => void
+ onmouseover: (event: { type: string; target: any }) => void
+ onmouseout: (event: { type: string; target: any }) => void
+ onmovestart: (event: { type: string; target: any }) => void
+ onmoving: (event: { type: string; target: any }) => void
+ onmoveend: (event: { type: string; target: any }) => void
+ onzoomstart: (event: { type: string; target: any }) => void
+ onzoomend: (event: { type: string; target: any }) => void
+ onaddoverlay: (event: { type: string; target: any }) => void
+ onaddcontrol: (event: { type: string; target: any }) => void
+ onremovecontrol: (event: { type: string; target: any }) => void
+ onremoveoverlay: (event: { type: string; target: any }) => void
+ onclearoverlays: (event: { type: string; target: any }) => void
+ ondragstart: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ ondragging: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ ondragend: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onaddtilelayer: (event: { type: string; target: any }) => void
+ onremovetilelayer: (event: { type: string; target: any }) => void
+ onload: (event: { type: string; target: any; point: Point; pixel: Pixel; zoom: number }) => void
+ onresize: (event: { type: string; target: any; size: Size }) => void
+ onhotspotclick: (event: { type: string; target: any; spots: HotspotOptions }) => void
+ onhotspotover: (event: { type: string; target: any; spots: HotspotOptions }) => void
+ onhotspotout: (event: { type: string; target: any; spots: HotspotOptions }) => void
+ ontilesloaded: (event: { type: string; target: any }) => void
+ ontouchstart: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ ontouchmove: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ ontouchend: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onlongpress: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ }
+ interface baseSetOptions {
+ /**
+ * 是否禁用动画效果
+ */
+ noAnimation?: boolean
+ /**
+ * 动画结束后会调用此方法,如果没有动画则立即调用
+ */
+ callback?: () => void
+ }
+
+ /**
+ * setZoom 配置参数
+ */
+ interface ZoomOptions extends baseSetOptions {
+ /**
+ * 放中心点,默认以地图中心点为基准缩放
+ */
+ zoomCenter?: Point
+ }
+
+ interface PanOptions {
+ noAnimation?: boolean
+ }
+
+ /**
+ * Map构造函数的可选参数
+ */
+ interface MapOptions {
+ /**
+ * 地图允许展示的最小级别
+ */
+ minZoom?: number
+ /**
+ * 地图允许展示的最大级别
+ */
+ maxZoom?: number
+ /**
+ * 地图类型,默认为BMAP_NORMAL_MAP
+ */
+ mapType?: MapType
+ /**
+ * 开启自动适应地图容器变化,默认启用
+ */
+ enableAutoResize?: boolean
+ // enableHighResolution?: boolean;
+ // enableMapClick?: boolean;
+ // backgroundColor?: number[];
+ // displayOptions?: object;
+ }
+ interface Viewport {
+ center: Point
+ zoom: number
+ }
+ interface ViewportOptions {
+ enableAnimation?: boolean
+ margins?: number[]
+ zoomFactor?: number
+ delay?: number
+ }
+ type APIVersion = number
+ interface MapStyle {
+ features: any[]
+ style: string
+ }
+ interface MapStyleItem {
+ featureType?: string
+ elementType?: string
+ stylers: MapStyleItemStylers
+ }
+ interface MapStyleItemStylers {
+ [k: string]: string | undefined
+ color?: string
+ visibility?: string
+ level?: string
+ curZoomRegionId?: string
+ curZoomRegion?: string
+ fontsize?: string
+ weight?: string
+ }
+ type MapStyleV2 = { styleJson: MapStyleItem[] } | { styleId: string }
+}
+declare const BMAP_API_VERSION: BMapGL.APIVersion;
diff --git a/types/index.d.ts b/types/index.d.ts
new file mode 100644
index 00000000..0ba5aa26
--- /dev/null
+++ b/types/index.d.ts
@@ -0,0 +1,12 @@
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+// /
diff --git a/types/layer.d.ts b/types/layer.d.ts
new file mode 100644
index 00000000..5914a133
--- /dev/null
+++ b/types/layer.d.ts
@@ -0,0 +1,65 @@
+///
+///
+declare namespace BMapGL {
+ class TileLayer {
+ constructor(opts?: TileLayerOptions);
+ zIndex?: number;
+ getTilesUrl(tileCoord: Pixel, zoom: number): string;
+ getCopyright(): Copyright;
+ isTransparentPng(): boolean;
+ }
+ interface TileLayerOptions {
+ transparentPng?: boolean;
+ tileUrlTemplate?: string;
+ copyright?: Copyright;
+ zIndex?: number;
+ }
+ class TrafficLayer extends TileLayer {
+ constructor(opts?: TrafficLayerOptions);
+ }
+ interface TrafficLayerOptions {
+ predictDate?: PredictDate;
+ }
+ interface PredictDate {
+ weekday: number;
+ hour: number;
+ }
+ class CustomLayer extends TileLayer {
+ constructor(opts: CustomLayerOptions);
+ onhotspotclick: (event: { type: string, target: any, content: any }) => void;
+ }
+ interface Custompoi {
+ poiId: string;
+ databoxId: string;
+ title: string;
+ address: string;
+ phoneNumber: string;
+ postcode: string;
+ provinceCode: number;
+ province: string;
+ cityCode: number;
+ city: string;
+ districtCode: number;
+ district: string;
+ point: Point;
+ tags: string[];
+ typeId: number;
+ extendedData: any;
+ }
+ class PanoramaCoverageLayer extends TileLayer {
+ constructor();
+ }
+ interface CustomLayerOptions {
+ databoxId?: string;
+ geotableId?: string;
+ q?: string;
+ tags?: string;
+ filter?: string;
+ pointDensityType?: PointDensityType;
+ }
+ type PointDensityType = number;
+}
+
+declare const BMAP_POINT_DENSITY_HIGH: BMapGL.PointDensityType;
+declare const BMAP_POINT_DENSITY_MEDIUM: BMapGL.PointDensityType;
+declare const BMAP_POINT_DENSITY_LOW: BMapGL.PointDensityType;
diff --git a/types/lib.d.ts b/types/lib.d.ts
new file mode 100644
index 00000000..70cb4f23
--- /dev/null
+++ b/types/lib.d.ts
@@ -0,0 +1,82 @@
+
+///
+///
+///
+declare namespace BMapGL {
+ type DrawingType = 'marker' | 'polyline' | 'polygon' | 'rectangle' | 'circle';
+ interface DrawingManagerOptions {
+ isOpen?: boolean;
+ drawingMode?: DrawingType;
+ enableDrawingTool?: boolean;
+ enableCalculate?: boolean;
+ enableSorption?: boolean;
+ enableGpc?: boolean;
+ enableLimit?: boolean;
+ sorptionDistance?: number;
+ limitOptions?: DrawingLimitOptions;
+ drawingToolOptions?: DrawingToolOptions;
+ markerOptions?: MarkerOptions;
+ circleOptions?: CircleOptions;
+ polylineOptions?: PolylineOptions;
+ polygonOptions?: PolygonOptions;
+ rectangleOptions?: PolygonOptions;
+ }
+
+ interface DrawingToolOptions {
+ enableTips?: boolean;
+ customContainer?: string | HTMLElement;
+ hasCustomStyle?: boolean;
+ anchor?: ControlAnchor;
+ offset?: Size;
+ scale?: number;
+ drawingModes?: DrawingType[];
+ }
+
+ interface DrawingLimitOptions {
+ area?: number;
+ distance?: number;
+ }
+
+ interface DistanceToolOptions {
+ tips?: string;
+ followText?: string;
+ unit?: 'metric' | 'us';
+ lineColor?: string;
+ lineStroke?: number;
+ opacity?: number;
+ lineStyle?: 'solid' | 'dashed' | 'dotted';
+ cursor?: string;
+ secIcon?: Icon;
+ closeIcon?: Icon;
+ }
+}
+
+declare namespace BMapGLLib {
+ type Callback = (...args: any[]) => void;
+
+ class DrawingManager {
+ constructor(map: BMapGL.Map, opts?: BMapGL.DrawingManagerOptions);
+ open(): void;
+ close(): void;
+ enableCalculate(): void;
+ disableCalculate(): void;
+ getDrawingMode(): BMapGL.DrawingType;
+ setDrawingMode(drawingType: BMapGL.DrawingType): void;
+ addEventListener(event: string, handler: Callback): void;
+ removeEventListener(event: string, handler: Callback): void;
+ }
+
+ class DistanceTool {
+ constructor(map: BMapGL.Map, opts?: BMapGL.DistanceToolOptions);
+ open(): void;
+ close(): void;
+ addEventListener(event: string, handler: Callback): void;
+ removeEventListener(event: string, handler: Callback): void;
+ }
+}
+
+declare const BMAP_DRAWING_MARKER: BMapGL.DrawingType;
+declare const BMAP_DRAWING_POLYLINE: BMapGL.DrawingType;
+declare const BMAP_DRAWING_RECTANGLE: BMapGL.DrawingType;
+declare const BMAP_DRAWING_POLYGON: BMapGL.DrawingType;
+declare const BMAP_DRAWING_CIRCLE: BMapGL.DrawingType;
diff --git a/types/mapvgl.d.ts b/types/mapvgl.d.ts
new file mode 100644
index 00000000..66db244e
--- /dev/null
+++ b/types/mapvgl.d.ts
@@ -0,0 +1,45 @@
+///
+declare namespace MapVGL {
+ class View {
+ constructor(opts: ViewOptions);
+ addLayer(x: Layer): void;
+ removeLayer(x: Layer): void;
+ destroy(): void;
+ getAllLayers(x: Layer): Layer[];
+ getAllThreeLayers(x: Layer): Layer[];
+ }
+ interface ViewOptions {
+ map?: object;
+ mapType?: 'bmap' | 'blank' | 'cesium';
+ effects?: Effects[];
+ }
+
+ class Layer {
+ constructor(map: BMapGL.Map, opts?: LayerOptions);
+ setData(x: GeoJSON[]): void;
+ setOptions(x: LayerOptions): void;
+ getData(): GeoJSON[];
+ getOptions(): LayerOptions;
+ getDefaultOptions(): LayerOptions;
+ destroy(): void;
+ }
+ interface LayerOptions {
+ repeat?: boolean;
+ data?: GeoJSON[];
+ [x: string]: any;
+ }
+ interface GeoJSON {
+ geometry: {
+ type: 'Point' | 'LineString' | 'Polygon',
+ coordinates: any[];
+ };
+ properties?: {
+ [x: string]: any
+ };
+ [x: string]: any;
+ }
+
+ class Effects {
+ constructor(opts?: object);
+ }
+}
diff --git a/types/overlay.d.ts b/types/overlay.d.ts
new file mode 100644
index 00000000..eb6b77c2
--- /dev/null
+++ b/types/overlay.d.ts
@@ -0,0 +1,561 @@
+///
+///
+///
+///
+declare namespace BMapGL {
+ interface Overlay {
+ /**
+ * 抽象方法,用于初始化覆盖物,当调用map.addOverlay时,API将调用此方法。自定义覆盖物时需要实现此方法。自定义覆盖物时需要将覆盖物对应的HTML元素返回
+ * @param map
+ */
+ initialize(map: Map): HTMLElement
+ /**
+ * 判断覆盖物是否可见
+ */
+ isVisible(): boolean
+ /**
+ * 抽象方法,当地图状态发生变化时,由系统调用对覆盖物进行绘制。自定义覆盖物需要实现此方法
+ */
+ draw(): void
+ /**
+ * 显示覆盖物。对于自定义覆盖物,此方法会自动将initialize方法返回的HTML元素样式的display属性设置为空
+ */
+ show(): void
+ /**
+ * 隐藏覆盖物。对于自定义覆盖物,此方法会自动将initialize方法返回的HTML元素样式的display属性设置为none
+ */
+ hide(): void
+ /**
+ * 抽象方法,用于初始化覆盖物,当调用map.addOverlay时,API将调用此方法。自定义覆盖物时需要实现此方法。自定义覆盖物时需要将覆盖物对应的HTML元素返回
+ * @param map
+ */
+ initialize(map: Map): HTMLElement
+ /**
+ * 判断覆盖物是否可见
+ */
+ isVisible(): boolean
+ /**
+ * 抽象方法,当地图状态发生变化时,由系统调用对覆盖物进行绘制。自定义覆盖物需要实现此方法
+ */
+ draw(): void
+ /**
+ * 显示覆盖物。对于自定义覆盖物,此方法会自动将initialize方法返回的HTML元素样式的display属性设置为空
+ */
+ show(): void
+ /**
+ * 隐藏覆盖物。对于自定义覆盖物,此方法会自动将initialize方法返回的HTML元素样式的display属性设置为none
+ */
+ hide(): void
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ setOptions(obj: object): void
+ getZIndex(lat: number, coordTyppe?: string): number
+ }
+ class Overlay {
+ constructor()
+ static getZIndex(lat: number, coordTyppe?: string): number
+ [x: string]: any
+ }
+ type SymbolShapeType = number
+ interface PolylineOptions {
+ strokeColor?: string
+ strokeWeight?: number
+ strokeOpacity?: number
+ strokeStyle?: string
+ enableMassClear?: boolean
+ enableEditing?: boolean
+ enableClicking?: boolean
+ }
+ interface GroundOverlayOptions {
+ opacity?: number
+ imageURL?: string
+ displayOnMinLevel?: number
+ displayOnMaxLevel?: number
+ }
+ interface Marker extends Overlay {
+ openInfoWindow(infoWnd: InfoWindow): void
+ closeInfoWindow(): void
+ setIcon(icon: Icon): void
+ getIcon(): Icon
+ setPosition(position: Point): void
+ getPosition(): Point
+ setOffset(offset: Size): void
+ getOffset(): Size
+ setLabel(label: Label): void
+ getLabel(): Label
+ setTitle(title: string): void
+ getTitle(): string
+ setTop(isTop: boolean): void
+ enableDragging(): void
+ disableDragging(): void
+ enableMassClear(): void
+ disableMassClear(): void
+ setZIndex(zIndex: number): void
+ getMap(): Map
+ addContextMenu(menu: ContextMenu): void
+ removeContextMenu(menu: ContextMenu): void
+ setAnimation(animation?: Animation): void
+ setRotation(rotation: number): void
+ getRotation(): number
+ setShadow(shadow: Icon): void
+ getShadow(): void
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ onclick: (event: { type: string; target: any }) => void
+ ondblclick: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmousedown: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseup: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseout: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseover: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onremove: (event: { type: string; target: any }) => void
+ oninfowindowclose: (event: { type: string; target: any }) => void
+ oninfowindowopen: (event: { type: string; target: any }) => void
+ ondragstart: (event: { type: string; target: any }) => void
+ ondragging: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ ondragend: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onrightclick: (event: { type: string; target: any }) => void
+ }
+ class Marker {
+ constructor(point: Point, opts?: MarkerOptions)
+ }
+ interface SymbolOptions {
+ anchor?: Size
+ fillColor?: string
+ fillOpacity?: number
+ scale?: number
+ rotation?: number
+ strokeColor?: string
+ strokeOpacity?: number
+ strokeWeight?: number
+ }
+ class IconSequence {
+ constructor(symbol: symbol, offset?: string, repeat?: string, fixedRotation?: boolean)
+ }
+ interface PointCollection extends Overlay {
+ setPoints(points: Point[]): void
+ setStyles(styles: PointCollectionOption): void
+ clear(): void
+ onclick: (event: { type: string; target: any; point: Point }) => void
+ onmouseover: (event: { type: string; target: any; point: Point }) => void
+ onmouseout: (event: { type: string; target: any; point: Point }) => void
+ }
+ class PointCollection {
+ constructor(points: Point[], opts?: PointCollectionOption)
+ }
+ interface MarkerOptions {
+ /**
+ * 标注的位置偏移值
+ */
+ offset?: Size
+ /**
+ * 标注所用的图标对象
+ */
+ icon?: Icon
+ /**
+ * @default true
+ * 是否在调用map.clearOverlays清除此覆盖物,默认为true
+ */
+ enableMassClear?: boolean
+ /**
+ * @default false
+ * 是否启用拖拽,默认为false
+ */
+ enableDragging?: boolean
+ /**
+ * @default true
+ * 是否响应点击事件。默认为true
+ */
+ enableClicking?: boolean
+ /**
+ * @default false
+ * 拖拽标注时,标注是否开启离开地图表面效果。默认为false
+ */
+ raiseOnDrag?: boolean
+ /**
+ * 拖拽标注时的鼠标指针样式。此属性值需遵循CSS的cursor属性规范
+ */
+ draggingCursor?: string
+ /**
+ * 旋转角度
+ */
+ rotation?: number
+ // shadow?: Icon
+ /**
+ * 鼠标移到marker上的显示内容
+ */
+ title?: string
+ }
+ interface InfoWindow extends Overlay {
+ /**
+ * @default false
+ */
+ // show: boolean
+
+ position: Point
+ /**
+ * 是否开启信息窗口打开时地图自动移动(默认开启)
+ * @default true
+ */
+ autoPan: boolean
+ /**
+ * 是否开启点击地图关闭信息窗口(默认开启)
+ * @default true
+ */
+ closeOnClick: boolean
+ /**
+ * 自定义部分的短信内容,可选项。
+ * 完整的短信内容包括:自定义部分+位置链接,不设置时,显示默认短信内容。
+ * 短信内容最长为140个字
+ */
+ message: string
+ setWidth(width: number): void
+ setHeight(height: number): void
+ redraw(): void
+ setTitle(title: string | HTMLElement): void
+ getTitle(): string | HTMLElement
+ setContent(content: string | HTMLElement): void
+ getContent(): string | HTMLElement
+ getPosition(): Point
+ enableMaximize(): void
+ disableMaximize(): void
+ isOpen(): boolean
+ setMaxContent(content: string): void
+ maximize(): void
+ restore(): void
+ enableAutoPan(): void
+ disableAutoPan(): void
+ enableCloseOnClick(): void
+ disableCloseOnClick(): void
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ onclose: (event: { type: string; target: any; point: Point }) => void
+ onopen: (event: { type: string; target: any; point: Point }) => void
+ onmaximize: (event: { type: string; target: any }) => void
+ onrestore: (event: { type: string; target: any }) => void
+ onclickclose: (event: { type: string; target: any }) => void
+ }
+ class InfoWindow {
+ constructor(content: string | HTMLElement, opts?: InfoWindowOptions)
+ }
+ interface Polygon extends Overlay {
+ setPath(path: Point[]): void
+ getPath(): Point[]
+ setStrokeColor(color: string): void
+ getStrokeColor(): string
+ setFillColor(color: string): void
+ getFillColor(): string
+ setStrokeOpacity(opacity: number): void
+ getStrokeOpacity(): number
+ setFillOpacity(opacity: number): void
+ getFillOpacity(): number
+ setStrokeWeight(weight: number): void
+ getStrokeWeight(): number
+ setStrokeStyle(style: string): void
+ getStrokeStyle(): string
+ getBounds(): Bounds
+ enableEditing(): void
+ disableEditing(): void
+ enableMassClear(): void
+ disableMassClear(): void
+ setPointAt(index: number, point: Point): void
+ setPositionAt(index: number, point: Point): void
+ getMap(): Map
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ onclick: (event: { type: string; target: any }) => void
+ ondblclick: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmousedown: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseup: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseout: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseover: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onremove: (event: { type: string; target: any }) => void
+ onlineupdate: (event: { type: string; target: any }) => void
+ }
+ class Polygon {
+ constructor(points: Point[], opts?: PolygonOptions)
+ }
+ interface PointCollectionOption {
+ shape?: ShapeType
+ color?: string
+ size?: SizeType
+ }
+ type Animation = number
+ interface InfoWindowOptions {
+ /**
+ * 信息窗宽度,单位像素。取值范围:0, 220 - 730。如果您指定宽度为0,则信息窗口的宽度将按照其内容自动调整
+ */
+ width: 0 | RangeOf2<220, 730>
+ /**
+ * 信息窗高度,单位像素。取值范围:0, 60 - 650。如果您指定高度为0,则信息窗口的高度将按照其内容自动调整
+ */
+ height: 0 | RangeOf2<60, 650>
+ /**
+ * 信息窗最大化时的宽度,单位像素。取值范围:220 - 730
+ */
+ maxWidth: RangeOf2<220, 730>
+ /**
+ * 信息窗位置偏移值。默认情况下在地图上打开的信息窗底端的尖角将指向其地理坐标,在标注上打开的信息窗底端尖角的位置取决于标注所用图标的infoWindowOffset属性值,您可以为信息窗添加偏移量来改变默认位置
+ */
+ offset: Size
+ /**
+ * 信息窗标题文字,支持HTML内容
+ */
+ title: string
+ /**
+ * @default true
+ * 是否开启信息窗口打开时地图自动移动(默认开启)
+ */
+ enableAutoPan: boolean
+ /**
+ * @default true
+ * 是否开启点击地图关闭信息窗口(默认开启)
+ */
+ enableCloseOnClick: boolean
+ }
+ interface PolygonOptions {
+ strokeColor?: string
+ fillColor?: string
+ strokeWeight?: number
+ strokeOpacity?: number
+ fillOpacity?: number
+ strokeStyle?: string
+ enableMassClear?: boolean
+ enableEditing?: boolean
+ enableClicking?: boolean
+ }
+ type ShapeType = number
+ interface Icon extends Overlay {
+ anchor: Size
+ size: Size
+ imageOffset: Size
+ imageSize: Size
+ imageUrl: Size
+ infoWindowAnchor: Size
+ printImageUrl: string
+ setImageUrl(imageUrl: string): void
+ setSize(size: Size): void
+ setImageSize(offset: Size): void
+ setAnchor(anchor: Size): void
+ setImageOffset(offset: Size): void
+ setInfoWindowAnchor(anchor: Size): void
+ setPrintImageUrl(url: string): void
+ }
+ class Icon {
+ constructor(url: string, size: Size, opts?: IconOptions)
+ }
+ interface Label extends Overlay {
+ setStyle(styles: { [name: string]: string | number }): void
+ setContent(content: string): void
+ setPosition(position: Point): void
+ getPosition(): Point
+ setOffset(offset: Size): void
+ getOffset(): Size
+ setTitle(title: string): void
+ getTitle(): string
+ enableMassClear(): void
+ disableMassClear(): void
+ setZIndex(zIndex: number): void
+ getMap(): Map
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ onclick: (event: { type: string; target: any }) => void
+ ondblclick: (event: { type: string; target: any }) => void
+ onmousedown: (event: { type: string; target: any }) => void
+ onmouseup: (event: { type: string; target: any }) => void
+ onmouseout: (event: { type: string; target: any }) => void
+ onmouseover: (event: { type: string; target: any }) => void
+ onremove: (event: { type: string; target: any }) => void
+ onrightclick: (event: { type: string; target: any }) => void
+ }
+ class Label {
+ constructor(content: string, opts?: LabelOptions)
+ }
+ interface Circle extends Overlay {
+ setCenter(center: Point): void
+ getCenter(): Point
+ setRadius(radius: number): void
+ getRadius(): number
+ getBounds(): Bounds
+ setStrokeColor(color: string): void
+ getStrokeColor(): string
+ setFillColor(color: string): void
+ getFillColor(): string
+ setStrokeOpacity(opacity: number): void
+ getStrokeOpacity(): number
+ setFillOpacity(opacity: number): void
+ getFillOpacity(): number
+ setStrokeWeight(weight: number): void
+ getStrokeWeight(): number
+ setStrokeStyle(style: string): void
+ getStrokeStyle(): string
+ enableEditing(): void
+ disableEditing(): void
+ enableMassClear(): void
+ disableMassClear(): void
+ getMap(): Map
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ onclick: (event: { type: string; target: any }) => void
+ ondblclick: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmousedown: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseup: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseout: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseover: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onremove: (event: { type: string; target: any }) => void
+ onlineupdate: (event: { type: string; target: any }) => void
+ }
+ class Circle {
+ constructor(center: Point, radius: number, opts?: CircleOptions)
+ }
+ type SizeType = number
+ interface IconOptions {
+ anchor?: Size
+ imageOffset?: Size
+ imageSize?: Size
+ srcset?: object
+ printImageUrl?: string
+ }
+ interface LabelOptions {
+ offset?: Size
+ position?: Point
+ enableMassClear?: boolean
+ }
+ interface CircleOptions {
+ strokeColor?: string
+ fillColor?: string
+ strokeWeight?: number
+ strokeOpacity?: number
+ fillOpacity?: number
+ strokeStyle?: string
+ enableMassClear?: boolean
+ enableEditing?: boolean
+ enableClicking?: boolean
+ }
+ interface Hotspot extends Overlay {
+ setPosition(position: Point): void
+ getPosition(): Point
+ setText(text: string): void
+ getText(): string
+ setUserData(data: any): void
+ getUserData(): any
+ }
+ class Hotspot {
+ constructor(position: Point, opts?: HotspotOptions)
+ }
+ interface Symbol extends Overlay {
+ setPath(path: string | SymbolShapeType): void
+ setAnchor(anchor: Size): void
+ setRotation(rotation: number): void
+ setScale(scale: number): void
+ setStrokeWeight(strokeWeight: number): void
+ setStrokeColor(color: string): void
+ setStrokeOpacity(opacity: number): void
+ setFillOpacity(opacity: number): void
+ setFillColor(color: string): void
+ }
+ class Symbol {
+ constructor(path: string | SymbolShapeType, opts?: SymbolOptions)
+ }
+ interface Polyline extends Overlay {
+ setPath(path: Point[]): void
+ getPath(): Point[]
+ setStrokeColor(color: string): void
+ getStrokeColor(): string
+ setFillColor(color: string): void
+ getFillColor(): string
+ setStrokeOpacity(opacity: number): void
+ getStrokeOpacity(): number
+ setFillOpacity(opacity: number): void
+ getFillOpacity(): number
+ setStrokeWeight(weight: number): void
+ getStrokeWeight(): number
+ setStrokeStyle(style: string): void
+ getStrokeStyle(): string
+ getBounds(): Bounds
+ enableEditing(): void
+ disableEditing(): void
+ enableMassClear(): void
+ disableMassClear(): void
+ setPointAt(index: number, point: Point): void
+ setPositionAt(index: number, point: Point): void
+ getMap(): Map
+ addEventListener(event: string, handler: Callback): void
+ removeEventListener(event: string, handler: Callback): void
+ onclick: (event: { type: string; target: any }) => void
+ ondblclick: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmousedown: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseup: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseout: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onmouseover: (event: { type: string; target: any; point: Point; pixel: Pixel }) => void
+ onremove: (event: { type: string; target: any }) => void
+ onlineupdate: (event: { type: string; target: any }) => void
+ }
+ class Polyline {
+ constructor(points: Point[], opts?: PolylineOptions)
+ }
+ interface GroundOverlay extends Overlay {
+ setBounds(bounds: Bounds): void
+ getBounds(): Bounds
+ setOpacity(opcity: number): void
+ getOpacity(): number
+ setImageURL(url: string): void
+ getImageURL(): string
+ setDisplayOnMinLevel(level: number): void
+ getDisplayOnMinLevel(): number
+ setDispalyOnMaxLevel(level: number): void
+ getDispalyOnMaxLevel(): number
+ onclick: (event: { type: string; target: any }) => void
+ ondblclick: (event: { type: string; target: any }) => void
+ }
+ class GroundOverlay {
+ constructor(bounds: Bounds, opts?: GroundOverlayOptions)
+ }
+ interface HotspotOptions {
+ text?: string
+ offsets?: number[]
+ userData?: any
+ minZoom?: number
+ maxZoom?: number
+ }
+ interface MapPanes {
+ floatPane?: HTMLElement
+ markerMouseTarget?: HTMLElement
+ floatShadow?: HTMLElement
+ labelPane?: HTMLElement
+ markerPane?: HTMLElement
+ markerShadow?: HTMLElement
+ mapPane?: HTMLElement
+ }
+}
+
+declare const BMap_Symbol_SHAPE_CIRCLE: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_RECTANGLE: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_RHOMBUS: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_STAR: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_BACKWARD_CLOSED_ARROW: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_FORWARD_OPEN_ARROW: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_POINT: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_PLANE: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_CAMERA: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_WARNING: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_SMILE: BMapGL.SymbolShapeType
+declare const BMap_Symbol_SHAPE_CLOCK: BMapGL.SymbolShapeType
+
+declare const BMAP_ANIMATION_DROP: BMapGL.Animation
+declare const BMAP_ANIMATION_BOUNCE: BMapGL.Animation
+
+declare const BMAP_POINT_SHAPE_CIRCLE: BMapGL.ShapeType
+declare const APE_STAR: BMapGL.ShapeType
+declare const APE_SQUARE: BMapGL.ShapeType
+declare const APE_RHOMBUS: BMapGL.ShapeType
+declare const APE_WATERDROP: BMapGL.ShapeType
+
+declare const BMAP_POINT_SIZE_TINY: BMapGL.SizeType
+declare const BMAP_POINT_SIZE_SMALLER: BMapGL.SizeType
+declare const BMAP_POINT_SIZE_SMALL: BMapGL.SizeType
+declare const BMAP_POINT_SIZE_NORMAL: BMapGL.SizeType
+declare const BMAP_POINT_SIZE_BIG: BMapGL.SizeType
+declare const BMAP_POINT_SIZE_BIGGER: BMapGL.SizeType
+declare const BMAP_POINT_SIZE_HUGE: BMapGL.SizeType
diff --git a/types/panorama.d.ts b/types/panorama.d.ts
new file mode 100644
index 00000000..49854f47
--- /dev/null
+++ b/types/panorama.d.ts
@@ -0,0 +1,103 @@
+///
+///
+declare namespace BMapGL {
+ class Panorama {
+ constructor(container: string | HTMLElement, opts?: PanoramaOptions);
+ getLinks(): PanoramaLink[];
+ getId(): string;
+ getPosition(): Point;
+ getPov(): PanoramaPov;
+ getZoom(): number;
+ setId(id: string): void;
+ setPosition(position: Point): void;
+ setPov(pov: PanoramaPov): void;
+ setZoom(zoom: number): void;
+ enableScrollWheelZoom(): void;
+ disableScrollWheelZoom(): void;
+ show(): void;
+ hide(): void;
+ addOverlay(overlay: PanoramaLabel): void;
+ removeOverlay(overlay: PanoramaLabel): void;
+ getSceneType(): PanoramaSceneType;
+ setOptions(opts?: PanoramaOptions): void;
+ setPanoramaPOIType(): PanoramaPOIType;
+ onposition_changed: () => void;
+ onlinks_changed: () => void;
+ onpov_changed: () => void;
+ onzoom_changed: () => void;
+ onscene_type_changed: () => void;
+ }
+
+ interface PanoramaOptions {
+ navigationControl?: boolean;
+ linksControl?: boolean;
+ indoorSceneSwitchControl?: boolean;
+ albumsControl?: boolean;
+ albumsControlOptions?: AlbumsControlOptions;
+ }
+ interface PanoramaLink {
+ description: string;
+ heading: string;
+ id: string;
+ }
+ interface PanoramaPov {
+ heading: number;
+ pitch: number;
+ }
+ class PanoramaService {
+ constructor();
+ getPanoramaById(id: string, callback: (data: PanoramaData) => void): void;
+ getPanoramaByLocation(point: Point, radius?: number, callback?: (data: PanoramaData) => void): void;
+ }
+ interface PanoramaData {
+ id: string;
+ description: string;
+ links: PanoramaLink[];
+ position: Point;
+ tiles: PanoramaTileData;
+ }
+ interface PanoramaTileData {
+ centerHeading: number;
+ tileSize: Size;
+ worldSize: Size;
+ }
+ class PanoramaLabel {
+ constructor(content: string, opts?: PanoramaLabelOptions);
+ setPosition(position: Point): void;
+ getPosition(): Point;
+ getPov(): PanoramaPov;
+ setContent(content: string): void;
+ getContent(): string;
+ show(): void;
+ hide(): void;
+ setAltitude(altitude: number): void;
+ getAltitude(): number;
+ addEventListener(event: string, handler: Callback): void;
+ removeEventListener(event: string, handler: Callback): void;
+ onclick: (event: { type: string, target: any }) => void;
+ onmouseover: (event: { type: string, target: any }) => void;
+ onmouseout: (event: { type: string, target: any }) => void;
+ onremove: (event: { type: string, target: any }) => void;
+ }
+ interface PanoramaLabelOptions {
+ position?: Point;
+ altitude?: number;
+ }
+ interface AlbumsControlOptions {
+ anchor?: ControlAnchor;
+ offset?: Size;
+ maxWidth?: number | string;
+ imageHeight?: number;
+ }
+ type PanoramaSceneType = string;
+ type PanoramaPOIType = string;
+}
+declare const BMAP_PANORAMA_INDOOR_SCENE: string;
+declare const BMAP_PANORAMA_STREET_SCENE: string;
+
+declare const BMAP_PANORAMA_POI_HOTEL: string;
+declare const BMAP_PANORAMA_POI_CATERING: string;
+declare const BMAP_PANORAMA_POI_MOVIE: string;
+declare const BMAP_PANORAMA_POI_TRANSIT: string;
+declare const BMAP_PANORAMA_POI_INDOOR_SCENE: string;
+declare const BMAP_PANORAMA_POI_NONE: string;
diff --git a/types/rightmenu.d.ts b/types/rightmenu.d.ts
new file mode 100644
index 00000000..3a8bf9ef
--- /dev/null
+++ b/types/rightmenu.d.ts
@@ -0,0 +1,29 @@
+///
+
+declare namespace BMapGL {
+ type ContextMenuIcon = string;
+ interface MenuItemOptions {
+ width?: number;
+ id?: string;
+ iconUrl?: string;
+ }
+ class MenuItem {
+ constructor(text: string, callback: (point: Point) => void, opts?: MenuItemOptions);
+ setText(text: string): void;
+ setIcon(iconUrl: string): void;
+ enable(): void;
+ disable(): void;
+ }
+ class ContextMenu {
+ constructor();
+ addItem(item: MenuItem): void;
+ getItem(index: number): MenuItem;
+ removeItem(item: MenuItem): void;
+ addSeparator(): void;
+ removeSeparator(index: number): void;
+ onopen: (event: { type: string, target: any, point: Point, pixel: Pixel }) => void;
+ onclose: (event: { type: string, target: any, point: Point, pixel: Pixel }) => void;
+ }
+}
+declare const BMAP_CONTEXT_MENU_ICON_ZOOMIN: string;
+declare const BMAP_CONTEXT_MENU_ICON_ZOOMOUT: string;
diff --git a/types/service.d.ts b/types/service.d.ts
new file mode 100644
index 00000000..7c251b7f
--- /dev/null
+++ b/types/service.d.ts
@@ -0,0 +1,428 @@
+///
+///
+declare namespace BMapGL {
+ interface LocalSearchSearchOptions {
+ forceLocal: boolean;
+ customData: any;
+ }
+ class LocalSearch {
+ constructor(location: Map | Point | string, opts?: LocalSearchOptions);
+ search(keyword: string | string[], option?: LocalSearchSearchOptions): void;
+ searchInBounds(keyword: string | string[], bounds: Bounds, option?: {
+ customData: any;
+ }): void;
+ searchNearby(keyword: string | string[], center: LocalResultPoi | string | Point, radius: number, option?: {
+ customData: any;
+ }): void;
+ getResults(): LocalResult | LocalResult[];
+ clearResults(): void;
+ gotoPage(page: number): void;
+ enableAutoViewport(): void;
+ disableAutoViewport(): void;
+ enableFirstResultSelection(): void;
+ disableFirstResultSelection(): void;
+ setLocation(location: Map | Point | string): void;
+ setPageCapacity(capacity: number): void;
+ getPageCapacity(): number;
+ setSearchCompleteCallback(callback: (results: LocalResult | LocalResult[]) => void): void;
+ setMarkersSetCallback(callback: (pois: LocalResultPoi[]) => void): void;
+ setInfoHtmlSetCallback(callback: (poi: LocalResultPoi, html: HTMLElement) => void): void;
+ setResultsHtmlSetCallback(callback: (container: HTMLElement) => void): void;
+ getStatus(): ServiceStatusCode;
+ }
+ type LineType = number;
+ interface WalkingRouteResult {
+ city: string;
+ getStart(): LocalResultPoi;
+ getEnd(): LocalResultPoi;
+ getNumPlans(): number;
+ getPlan(i: number): RoutePlan;
+ }
+ class BusLineSearch {
+ constructor(location: Map | Point | string, opts?: BusLineSearchOptions);
+ getBusList(keyword: string): void;
+ getBusLine(busLstItem: BusListItem): void;
+ clearResults(): void;
+ enableAutoViewport(): void;
+ disableAutoViewport(): void;
+ setLocation(location: Map | Point | string): void;
+ getStatus(): ServiceStatusCode;
+ toString(): string;
+ setGetBusListCompleteCallback(callback: (rs: BusListResult) => void): void;
+ setGetBusLineCompleteCallback(callback: (rs: BusLine) => void): void;
+ setBusListHtmlSetCallback(callback: (container: HTMLElement) => void): void;
+ setBusLineHtmlSetCallback(callback: (container: HTMLElement) => void): void;
+ setPolylinesSetCallback(callback: (ply: Polyline) => void): void;
+ setMarkersSetCallback(callback: (markers: Marker[]) => void): void;
+ }
+ interface LocalSearchOptions {
+ renderOptions?: RenderOptions;
+ onMarkersSet?: (pois: LocalResultPoi[]) => void;
+ onInfoHtmlSet?: (poi: LocalResultPoi, html: HTMLElement) => void;
+ onResultsHtmlSet?: (container: HTMLElement) => void;
+ pageCapacity?: number;
+ onSearchComplete?: (results: LocalResult[]) => void;
+ }
+ class DrivingRoute {
+ constructor(location: Map | Point | string, opts?: DrivingRouteOptions);
+ search(start: string | Point | LocalResultPoi, end: string | Point | LocalResultPoi): void;
+ getResults(): DrivingRouteResult;
+ clearResults(): void;
+ enableAutoViewport(): void;
+ disableAutoViewport(): void;
+ setLocation(location: Map | Point | string): void;
+ setPolicy(policy: DrivingPolicy): void;
+ setSearchCompleteCallback(callback: (results: DrivingRouteResult) => void): void;
+ setMarkersSetCallback(callback: (pois: LocalResultPoi[]) => void): void;
+ setInfoHtmlSetCallback(callback: (poi: LocalResultPoi, html: HTMLElement) => void): void;
+ setPolylinesSetCallback(callback: (routes: Route[]) => void): void;
+ setResultsHtmlSetCallback(callback: (container: HTMLElement) => void): void;
+ getStatus(): ServiceStatusCode;
+ toString(): string;
+ }
+ class Geocoder {
+ constructor();
+ getPoint(address: string, callback: (point: Point) => void, city: string): void;
+ getLocation(point: Point, callback: (result: GeocoderResult) => void, opts?: LocationOptions): void;
+ }
+ interface BusLineSearchOptions {
+ renderOptions?: RenderOptions;
+ onGetBusListComplete?: (rs: BusListResult) => void;
+ onGetBusLineComplete?: (rs: BusLine) => void;
+ onBusListHtmlSet?: (container: HTMLElement) => void;
+ onBusLineHtmlSet?: (container: HTMLElement) => void;
+ onPolylinesSet?: (ply: Polyline) => void;
+ onMarkersSet?: (sts: Marker[]) => void;
+ }
+ interface CustomData {
+ geotableId: number;
+ tags: string;
+ filter: string;
+ }
+ interface DrivingRouteOptions {
+ renderOptions?: RenderOptions;
+ policy?: DrivingPolicy;
+ onSearchComplete?: (results: DrivingRouteResult) => void;
+ onMarkersSet?: (pois: LocalResultPoi[]) => void;
+ onInfoHtmlSet?: (poi: LocalResultPoi, html: HTMLElement) => void;
+ onPolylinesSet?: (routes: Route[]) => void;
+ onResultsHtmlSet?: (container: HTMLElement) => void;
+ }
+ interface GeocoderResult {
+ point: Point;
+ address: string;
+ addressComponents: AddressComponent;
+ surroundingPoi: LocalResultPoi[];
+ business: string;
+ }
+ interface BusListResult {
+ keyword: string;
+ city: string;
+ moreResultsUrl: string;
+ getNumBusList(): number;
+ getBusListItem(i: number): BusListItem;
+ }
+ interface RenderOptions {
+ map: Map;
+ panel?: string | HTMLElement;
+ selectFirstResult?: boolean;
+ autoViewport?: boolean;
+ highlightMode?: HighlightModes;
+ }
+ type DrivingPolicy = number;
+ interface AddressComponent {
+ streetNumber: string;
+ street: string;
+ district: string;
+ city: string;
+ province: string;
+ }
+ interface BusLine {
+ name: string;
+ startTime: string;
+ endTime: string;
+ company: string;
+ getNumBusStations(): string;
+ getBusStation(i: number): BusStation;
+ getPath(): Point[];
+ getPolyline(): Polyline;
+ }
+ interface LocalResult {
+ keyword: string;
+ center: LocalResultPoi;
+ radius: number;
+ bounds: Bounds;
+ city: string;
+ moreResultsUrl: string;
+ province: string;
+ suggestions: string[];
+ getPoi(i: number): LocalResultPoi;
+ getCurrentNumPois(): number;
+ getNumPois(): number;
+ getNumPages(): number;
+ getPageIndex(): number;
+ getCityList(): any[];
+ }
+ interface DrivingRouteResult {
+ policy: DrivingPolicy;
+ city: string;
+ moreResultsUrl: string;
+ taxiFare: TaxiFare;
+ getStart(): LocalResultPoi;
+ getEnd(): LocalResultPoi;
+ getNumPlans(): number;
+ getPlan(i: number): RoutePlan;
+ }
+ interface LocationOptions {
+ poiRadius?: number;
+ numPois?: number;
+ }
+ interface BusListItem {
+ name: string;
+ }
+ interface LocalResultPoi {
+ title: string;
+ point: Point;
+ url: string;
+ address: string;
+ city: string;
+ phoneNumber: string;
+ postcode: string;
+ type: PoiType;
+ isAccurate: boolean;
+ province: string;
+ tags: string[];
+ detailUrl: string;
+ }
+ interface TaxiFare {
+ day: TaxiFareDetail;
+ night: TaxiFareDetail;
+ distance: number;
+ remark: string;
+ }
+ class LocalCity {
+ constructor(opts?: LocalCityOptions);
+ get(callback: (result: LocalCityResult) => void): void;
+ }
+ interface BusStation {
+ name: string;
+ position: Point;
+ }
+ type PoiType = number;
+ interface TaxiFareDetail {
+ initialFare: number;
+ unitFare: number;
+ totalFare: number;
+ }
+ interface LocalCityOptions {
+ renderOptions?: RenderOptions;
+ }
+ class Autocomplete {
+ constructor(opts?: AutocompleteOptions);
+ show(): void;
+ hide(): void;
+ setTypes(types: string[]): void;
+ setLocation(location: string | Map | Point): void;
+ search(keywords: string): void;
+ getResults(): AutocompleteResult;
+ setInputValue(keyword: string): void;
+ dispose(): void;
+ onconfirm: (event: { type: string, target: any, item: any }) => void;
+ onhighlight: (event: { type: string, target: any, fromitem: any, toitem: any }) => void;
+ addEventListener(event: string, handler: Callback): void;
+ removeEventListener(event: string, handler: Callback): void;
+ }
+ class TransitRoute {
+ constructor(location: Map | Point | string, opts?: TransitRouteOptions);
+ search(start: string | Point | LocalResultPoi, end: string | Point | LocalResultPoi): void;
+ getResults(): TransitRouteResult;
+ clearResults(): void;
+ enableAutoViewport(): void;
+ disableAutoViewport(): void;
+ setPageCapacity(capacity: number): void;
+ setLocation(location: Map | Point | string): void;
+ setPolicy(policy: TransitPolicy): void;
+ setSearchCompleteCallback(callback: (results: TransitRouteResult) => void): void;
+ setMarkersSetCallback(callback: (pois: LocalResultPoi[]) => void): void;
+ setInfoHtmlSetCallback(callback: (poi: LocalResultPoi, html: HTMLElement) => void): void;
+ setPolylinesSetCallback(callback: (lines: Line[], routes: Route[]) => void): void;
+ setResultsHtmlSetCallback(callback: (container: HTMLElement) => void): void;
+ getStatus(): ServiceStatusCode;
+ toString(): string;
+ }
+ interface RoutePlan {
+ getNumRoutes(): number;
+ getRoute(i: number): Route;
+ getDistance(format?: boolean): string | number;
+ getDuration(format?: boolean): string | number;
+ getDragPois(): LocalResultPoi[];
+ }
+ interface LocalCityResult {
+ center: Point;
+ level: number;
+ name: string;
+ }
+ interface AutocompleteOptions {
+ location?: string | Map | Point;
+ types?: string[];
+ onSearchComplete?: (result: AutocompleteResult) => void;
+ input?: string | HTMLElement;
+ }
+ interface TransitRouteOptions {
+ renderOptions?: RenderOptions;
+ policy?: TransitPolicy;
+ pageCapacity?: number;
+ onSearchComplete?: (result: TransitRouteResult) => void;
+ onMarkersSet?: (pois: LocalResultPoi[], transfers: LocalResultPoi[]) => void;
+ onInfoHtmlSet?: (poi: LocalResultPoi, html: HTMLElement) => void;
+ onPolylinesSet?: (lines: Line[]) => void;
+ onResultsHtmlSet?: (container: HTMLElement) => void;
+ }
+ interface Route {
+ getNumRoutes(): number;
+ getStep(i: number): Step;
+ getDistance(format?: boolean): string | number;
+ getIndex(): number;
+ getPolyline(): Polyline;
+ getPoints(): Point[];
+ getPath(): Point[];
+ getRouteType(): RouteType;
+ }
+ class TrafficControl {
+ constructor();
+ setPanelOffset(offset: Size): void;
+ show(): void;
+ hide(): void;
+ }
+ interface AutocompleteResultPoi {
+ province: string;
+ City: string; // wtf
+ district: string;
+ street: string;
+ streetNumber: string;
+ business: string;
+ }
+ type TransitPolicy = number;
+ type RouteType = number;
+ class Geolocation {
+ constructor();
+ getCurrentPosition(callback: (result: GeolocationResult) => void, opts?: PositionOptions): void;
+ getStatus(): ServiceStatusCode;
+ }
+ interface AutocompleteResult {
+ keyword: string;
+ getPoi(i: number): AutocompleteResultPoi;
+ getNumPois(): number;
+ }
+ interface TransitRouteResult {
+ policy: TransitPolicy;
+ city: string;
+ moreResultsUrl: string;
+ getStart(): LocalResultPoi;
+ getEnd(): LocalResultPoi;
+ getNumPlans(): number;
+ getPlan(i: number): TransitRoutePlan;
+ }
+ interface Step {
+ getPoint(): Point;
+ getPosition(): Point;
+ getIndex(): number;
+ getDescription(includeHtml: boolean): string;
+ getDistance(format?: boolean): string | number;
+ }
+ interface GeolocationResult {
+ point: Point;
+ accuracy: number;
+ }
+ class Boundary {
+ constructor();
+ get(name: string, callback: (result: { boundaries: string[] }) => void): void;
+ }
+ class Convertor {
+ translate(points: Point[], from: number, to: number, callback: (result: {
+ points: Point[];
+ status: number;
+ }) => void): void;
+ }
+ interface TransitRoutePlan {
+ getNumLines(): number;
+ getLine(i: number): Line;
+ getNumRoutes(): number;
+ getRoute(i: number): Route;
+ getDistance(format?: boolean): string | number;
+ getDuration(format?: boolean): string | number;
+ getDescription(includeHtml: boolean): string;
+ }
+ class WalkingRoute {
+ constructor(location: Map | Point | string, opts?: WalkingRouteOptions);
+ search(start: string | Point | LocalResultPoi, end: string | Point | LocalResultPoi): void;
+ getResults(): WalkingRouteResult;
+ clearResults(): void;
+ enableAutoViewport(): void;
+ disableAutoViewport(): void;
+ setLocation(location: Map | Point | string): void;
+ setSearchCompleteCallback(callback: (result: WalkingRouteResult) => void): void;
+ setMarkersSetCallback(callback: (pois: LocalResultPoi[]) => void): void;
+ setInfoHtmlSetCallback(callback: (poi: LocalResultPoi, html: HTMLElement) => void): void;
+ setPolylinesSetCallback(callback: (routes: Route[]) => void): void;
+ setResultsHtmlSetCallback(callback: (container: HTMLElement) => void): void;
+ getStatus(): ServiceStatusCode;
+ toString(): string;
+ }
+ interface PositionOptions {
+ enableHighAccuracy?: boolean;
+ timeout?: number;
+ maximumAge?: number;
+ }
+ interface Line {
+ title: string;
+ type: LineType;
+ getNumViaStops(): number;
+ getGetOnStop(): LocalResultPoi;
+ getGetOffStop(): LocalResultPoi;
+ getPoints(): Point[];
+ getPath(): Point[];
+ getPolyline(): Polyline;
+ getDistance(format?: boolean): string | number;
+ }
+ interface WalkingRouteOptions {
+ renderOptions?: RenderOptions;
+ onSearchComplete?: (result: WalkingRouteResult) => void;
+ onMarkersSet?: (pois: LocalResultPoi[]) => void;
+ onPolylinesSet?: (routes: Route[]) => void;
+ onInfoHtmlSet?: (poi: LocalResultPoi, html: HTMLElement) => void;
+ onResultsHtmlSet?: (container: HTMLElement) => void;
+ }
+ type HighlightModes = number;
+ type ServiceStatusCode = number;
+}
+
+declare const BMAP_LINE_TYPE_BUS: BMapGL.LineType;
+declare const BMAP_LINE_TYPE_SUBWAY: BMapGL.LineType;
+declare const BMAP_LINE_TYPE_FERRY: BMapGL.LineType;
+
+declare const BMAP_DRIVING_POLICY_LEAST_TIME: BMapGL.DrivingPolicy;
+declare const BMAP_DRIVING_POLICY_LEAST_DISTANCE: BMapGL.DrivingPolicy;
+declare const BMAP_DRIVING_POLICY_AVOID_HIGHWAYS: BMapGL.DrivingPolicy;
+
+declare const BMAP_POI_TYPE_NORMAL: BMapGL.PoiType;
+declare const BMAP_POI_TYPE_BUSSTOP: BMapGL.PoiType;
+declare const BMAP_POI_TYPE_SUBSTOP: BMapGL.PoiType;
+
+declare const BMAP_TRANSIT_POLICY_LEAST_TIME: BMapGL.TransitPolicy;
+declare const BMAP_TRANSIT_POLICY_LEAST_TRANSFER: BMapGL.TransitPolicy;
+declare const BMAP_TRANSIT_POLICY_LEAST_WALKING: BMapGL.TransitPolicy;
+declare const BMAP_TRANSIT_POLICY_AVOID_SUBWAYS: BMapGL.TransitPolicy;
+
+declare const BMAP_ROUTE_TYPE_DRIVING: BMapGL.RouteType;
+declare const BMAP_ROUTE_TYPE_WALKING: BMapGL.RouteType;
+
+declare const BMAP_HIGHLIGHT_STEP: BMapGL.HighlightModes;
+declare const BMAP_HIGHLIGHT_ROUTE: BMapGL.HighlightModes;
+
+declare const BMAP_STATUS_SUCCESS: BMapGL.ServiceStatusCode;
+declare const BMAP_STATUS_CITY_LIST: BMapGL.ServiceStatusCode;
+declare const BMAP_STATUS_UNKNOWN_LOCATION: BMapGL.ServiceStatusCode;
+declare const BMAP_STATUS_UNKNOWN_ROUTE: BMapGL.ServiceStatusCode;
+declare const BMAP_STATUS_INVALID_KEY: BMapGL.ServiceStatusCode;
+declare const BMAP_STATUS_INVALID_REQUEST: BMapGL.ServiceStatusCode;
diff --git a/types/tools.d.ts b/types/tools.d.ts
new file mode 100644
index 00000000..cdf0e807
--- /dev/null
+++ b/types/tools.d.ts
@@ -0,0 +1,24 @@
+type BuildPowersOf2LengthArrays = R[0][N] extends never
+ ? R
+ : BuildPowersOf2LengthArrays
+
+type ConcatLargestUntilDone = B['length'] extends N
+ ? B
+ : [...R[0], ...B][N] extends never
+ ? ConcatLargestUntilDone
+ : ConcatLargestUntilDone
+
+type Replace = { [K in keyof R]: T }
+
+type TupleOf = number extends N
+ ? T[]
+ : {
+ [K in N]: BuildPowersOf2LengthArrays extends infer U
+ ? U extends never[][]
+ ? Replace, T>
+ : never
+ : never
+ }[N]
+
+type RangeOf = Partial>['length']
+declare type RangeOf2 = Exclude, RangeOf> | From
\ No newline at end of file
diff --git a/types/tsconfig.json b/types/tsconfig.json
new file mode 100644
index 00000000..71e6b795
--- /dev/null
+++ b/types/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "lib": [
+ "es6",
+ "dom"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "baseUrl": "../",
+ "typeRoots": [
+ "../"
+ ],
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts"
+ ]
+}
diff --git a/types/tslint.json b/types/tslint.json
new file mode 100644
index 00000000..85d9e5ca
--- /dev/null
+++ b/types/tslint.json
@@ -0,0 +1,7 @@
+{
+ "extends": "dtslint/dt.json",
+ "rules": {
+ "dt-header": false,
+ "no-unnecessary-class": false
+ }
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 00000000..ceca9cd9
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,50 @@
+const { join, resolve } = require('path')
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+const root = process.cwd()
+// https://vitejs.dev/config/
+
+// function myPlugin() {
+// return {
+// name: 'transform-file',
+// // options(op) {
+// // console.log(op, '=======op========')
+// // },
+// transform(src) {
+// console.log('--------------------------------------');
+// console.log(src)
+// console.log('--------------------------------------')
+// }
+// // buildStart(options) {
+// // console.log(options, '=======op2========')
+// // }
+// }
+// }
+export default defineConfig({
+ root,
+ plugins: [vue({})],
+ resolve: {
+ alias: {
+ hooks: join(root, 'src/hooks/'),
+ utils: join(root, 'src/utils/'),
+ types: join(root, 'types/')
+ }
+ },
+ build: {
+ lib: {
+ entry: resolve(__dirname, 'src/index.ts'),
+ name: 'MyLib',
+ fileName: (format) => `my-lib.${format}.js`
+ },
+ rollupOptions: {
+ // 确保外部化处理那些你不想打包进库的依赖
+ external: ['vue'],
+ output: {
+ // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
+ globals: {
+ vue: 'Vue'
+ }
+ }
+ }
+ }
+})
\ No newline at end of file