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