├── .gitignore
├── .prettierrc.js
├── .babelrc
├── src
├── env.d.ts
├── main.ts
├── types
│ └── index.ts
├── utils
│ ├── tools.ts
│ └── canvas-utils.ts
├── config
│ └── options.ts
├── style
│ └── canvas-style.css
└── core.ts
├── index.html
├── vite.config.js
├── tsconfig.json
├── dist
├── style.css
├── spark-echarts.umd.js
└── spark-echarts.mjs
├── package.json
├── .eslintrc.js
├── LICENSE
├── example.html
├── README.md
└── pnpm-lock.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | printWidth: 120,
3 | };
4 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-typescript"
4 | ]
5 | }
--------------------------------------------------------------------------------
/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | interface ImportMeta {
4 | readonly env: ImportMetaEnv
5 | }
6 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Canvas曲线图
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 |
3 | export default defineConfig({
4 | build: {
5 | lib: {
6 | entry: './src/main.ts',
7 | name: 'spark-echarts',
8 | formats: ['es', 'umd']
9 | }
10 | }
11 | })
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { openSparkECharts } from "./core";
2 | import { options } from "./config/options";
3 | import { Options } from "./types";
4 | import "./style/canvas-style.css";
5 |
6 | const getLineGraph = (opt: Options) => {
7 | const initOpt = Object.create(null)
8 | Object.assign(initOpt, options, opt)
9 | openSparkECharts(initOpt)
10 | }
11 |
12 | if (import.meta.env.MODE === 'development') {
13 | getLineGraph(options)
14 | }
15 |
16 | export const graph = {
17 | line: getLineGraph
18 | }
19 |
--------------------------------------------------------------------------------
/src/types/index.ts:
--------------------------------------------------------------------------------
1 | import { options } from "../config/options"
2 |
3 | export interface Pos {
4 | x: number,
5 | y: number
6 | }
7 |
8 | interface PointItemLine {
9 | type: 'line'
10 | start: Pos
11 | end: Pos
12 | }
13 | interface PointItemCurve {
14 | type: 'curve'
15 | start: Pos
16 | end: Pos
17 | control1: Pos
18 | control2: Pos
19 | }
20 |
21 | type PointItem = Array
22 |
23 | export type PointList = PointItem
24 |
25 | export type Options = typeof options
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "lib": [
7 | "ESNext",
8 | "DOM"
9 | ],
10 | "moduleResolution": "Node",
11 | "strict": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "esModuleInterop": true,
15 | "noEmit": true,
16 | "noUnusedLocals": true,
17 | "noUnusedParameters": true,
18 | "noImplicitReturns": true,
19 | "skipLibCheck": true
20 | },
21 | }
--------------------------------------------------------------------------------
/src/utils/tools.ts:
--------------------------------------------------------------------------------
1 | const utils = {
2 | removeChild(container: HTMLElement, doms: Array) {
3 | for (const dom of doms) {
4 | dom && container.removeChild(dom)
5 | }
6 | },
7 | throttle(func: Function, delay: number, thisArg: Window | HTMLElement) {
8 | let lastTime = 0;
9 | return () => {
10 | const currentTime = new Date().getTime();
11 | if (currentTime - lastTime > delay) {
12 | func.apply(thisArg, arguments);
13 | lastTime = currentTime;
14 | }
15 | }
16 | }
17 | }
18 |
19 | export default utils
--------------------------------------------------------------------------------
/dist/style.css:
--------------------------------------------------------------------------------
1 | canvas{border:1px solid rgba(112,112,112,.192)}body{padding:0;margin:0}#container{position:relative;height:300px;width:100%}#myCanvasDot{position:absolute;top:0;left:0;z-index:10}#canvasTopBox{position:absolute;top:40px;left:40px;z-index:9;width:120px;height:50px;background:#fff;box-shadow:0 4px 6px 2px #ccc;border-radius:4px;padding:8px;transition:.3s all ease;justify-content:space-between}#markCanvas{position:absolute;top:0;left:0;z-index:9;transform:rotate(180deg)}.label{position:relative;width:100%;height:100%}.label-left{position:absolute;top:0;right:0;width:10px;height:10px;background:#000;border-radius:50%}.label-right{width:90px;height:50px}.label-text{line-height:24px;font-size:16px}
2 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "spark-echarts",
3 | "version": "1.0.0",
4 | "description": "",
5 | "scripts": {
6 | "dev": "vite",
7 | "build": "tsc && vite build",
8 | "preview": "vite preview"
9 | },
10 | "keywords": [],
11 | "author": "chase chen <596487930@qq.com> (https://github.com/ccj-007)",
12 | "license": "MIT",
13 | "devDependencies": {
14 | "@babel/cli": "^7.21.0",
15 | "@babel/core": "^7.21.4",
16 | "@babel/preset-typescript": "^7.21.4",
17 | "@types/node": "^18.16.1",
18 | "eslint": "^8.38.0",
19 | "eslint-config-prettier": "^8.8.0",
20 | "eslint-config-standard": "^17.0.0",
21 | "eslint-plugin-import": "^2.27.5",
22 | "eslint-plugin-node": "^11.1.0",
23 | "eslint-plugin-prettier": "^4.2.1",
24 | "eslint-plugin-promise": "^6.1.1",
25 | "typescript": "^4.9.3",
26 | "vite": "^4.2.0"
27 | }
28 | }
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | browser: true,
4 | es2021: true,
5 | node: true,
6 | },
7 | extends: ["eslint:recommended", "plugin:prettier/recommended", "prettier"],
8 | parser: "@typescript-eslint/parser",
9 | parserOptions: {
10 | ecmaVersion: 12,
11 | sourceType: "module",
12 | },
13 | plugins: ["@typescript-eslint"],
14 | overrides: [
15 | {
16 | files: ["*.ts"],
17 | rules: {
18 | "no-undef": "off",
19 | },
20 | },
21 | ],
22 | rules: {
23 | "no-unused-vars": "off",
24 | "@typescript-eslint/no-unused-vars": ["warn"],
25 | "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
26 | "no-prototype-builtins": "off",
27 | "no-self-assign": "off",
28 | "no-empty": ["error", { allowEmptyCatch: true }],
29 | "prettier/prettier": ["error", { endOfLine: "auto" }],
30 | },
31 | ignorePatterns: ["esm/*.js", "__test__/apps/*/*.html"],
32 | };
33 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Chase Chen
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/config/options.ts:
--------------------------------------------------------------------------------
1 | export const options = {
2 | layout: {
3 | root: '#container',
4 | m: 40
5 | },
6 | /**
7 | * 注意!这里分段间有重复点20一定要相等,用于衔接曲线
8 | */
9 | data: [[40, 60, 40, 80, 10, 50, 80, 0, 50, 30, 20], [20, 30, 60, 40, 30, 10, 30, 20, 0, 30, 20], [20, 30, 20, 40, 20, 10, 10, 30, 0, 30, 50]],
10 | axisX: {
11 | data: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
12 | format(param: string | number) {
13 | return param + 'w'
14 | },
15 | top: 4,
16 | },
17 | axisY: {
18 | data: [0, 20, 40, 60, 80],
19 | format(param: string | number) {
20 | return param + '人'
21 | },
22 | right: 10,
23 | },
24 | series: [
25 | {
26 | rgba: [[55, 162, 255], [116, 21, 219]],
27 | hoverRgba: [[55, 162, 255], [116, 21, 219]],
28 | lineColor: 'blue'
29 | },
30 | {
31 | rgba: [[255, 0, 135], [135, 0, 157]],
32 | hoverRgba: [[255, 0, 135], [135, 0, 157]],
33 | lineColor: 'purple'
34 | },
35 | {
36 | rgba: [[255, 190, 0], [224, 62, 76]],
37 | hoverRgba: [[255, 190, 0], [224, 62, 76]],
38 | lineColor: 'orange'
39 | }
40 | ]
41 | }
42 |
--------------------------------------------------------------------------------
/src/style/canvas-style.css:
--------------------------------------------------------------------------------
1 | canvas {
2 | border: 1px solid rgba(112, 112, 112, 0.192);
3 | }
4 |
5 | body {
6 | padding: 0;
7 | margin: 0;
8 | }
9 |
10 | #container {
11 | position: relative;
12 | height: 300px;
13 | width: 100%;
14 | }
15 |
16 | #myCanvasDot {
17 | position: absolute;
18 | top: 0;
19 | left: 0;
20 | z-index: 10;
21 | }
22 |
23 | #canvasTopBox {
24 | position: absolute;
25 | top: 40px;
26 | left: 40px;
27 | z-index: 9;
28 | width: 120px;
29 | height: 50px;
30 | background: #fff;
31 | box-shadow: 0px 4px 6px 2px #ccc;
32 | border-radius: 4px;
33 | padding: 8px;
34 | transition: 0.3s all ease;
35 | justify-content: space-between;
36 | }
37 |
38 | #markCanvas {
39 | position: absolute;
40 | top: 0;
41 | left: 0;
42 | z-index: 9;
43 | transform: rotate(180deg);
44 | }
45 |
46 | .label {
47 | position: relative;
48 | width: 100%;
49 | height: 100%;
50 | }
51 |
52 | .label-left {
53 | position: absolute;
54 | top: 0;
55 | right: 0;
56 | width: 10px;
57 | height: 10px;
58 | background: #000;
59 | border-radius: 50%;
60 | }
61 |
62 |
63 | .label-right {
64 | width: 90px;
65 | height: 50px;
66 | }
67 |
68 | .label-text {
69 | line-height: 24px;
70 | font-size: 16px;
71 | }
--------------------------------------------------------------------------------
/example.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Document
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # spark-echarts
2 |
3 | ## qucik start
4 |
5 | ```js
6 | pnpm dev
7 | pnpm build // vite打包构建,默认在dist目录生成sdk,支持umd、esm
8 | ```
9 |
10 | ## detailed introduction
11 |
12 | [Echarts 无法实现这个曲线图 😭,那我手写一个](https://juejin.cn/post/7224886702883258424)
13 |
14 | ## examples
15 |
16 | ```HTML
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | Document
25 |
26 |
27 |
30 |
31 |
32 |
33 |
34 |
80 |
81 |
82 |
83 | ```
84 |
--------------------------------------------------------------------------------
/src/utils/canvas-utils.ts:
--------------------------------------------------------------------------------
1 | import { PointList } from "../types";
2 |
3 | function getBezierCurvePoints(startX: number, startY: number, cp1X: number, cp1Y: number, cp2X: number, cp2Y: number, endX: number, endY: number, steps: number) {
4 | let points = [];
5 |
6 | // 使用二次贝塞尔曲线近似三次贝塞尔曲线
7 | let q1x = startX + (cp1X - startX) * 2 / 3;
8 | let q1y = startY + (cp1Y - startY) * 2 / 3;
9 | let q2x = endX + (cp2X - endX) * 2 / 3;
10 | let q2y = endY + (cp2Y - endY) * 2 / 3;
11 |
12 | // 采样曲线上的所有点
13 | for (let i = 0; i <= steps; i++) {
14 | let t = i / steps;
15 | let x = (1 - t) * (1 - t) * (1 - t) * startX +
16 | 3 * t * (1 - t) * (1 - t) * q1x +
17 | 3 * t * t * (1 - t) * q2x +
18 | t * t * t * endX;
19 | let y = (1 - t) * (1 - t) * (1 - t) * startY +
20 | 3 * t * (1 - t) * (1 - t) * q1y +
21 | 3 * t * t * (1 - t) * q2y +
22 | t * t * t * endY;
23 |
24 | points.push({ x: +x.toFixed(2), y: +y.toFixed(2) });
25 | }
26 |
27 | return points;
28 | }
29 |
30 |
31 | // 获取线段上的所有点
32 | function getAllPoints(segments: PointList) {
33 | let points = [];
34 | // let lastPoint = null;
35 |
36 | // 遍历所有线段的控制点和终点,将这些点的坐标存储到数组中
37 | for (let i = 0; i < segments.length; i++) {
38 | let segment = segments[i];
39 | let pointsCount = 50; // 点的数量
40 | // 如果是直线,则使用lineTo方法连接线段的终点
41 | if (segment.type === "line") {
42 | let x0 = segment.start.x;
43 | let y0 = segment.start.y;
44 | let x1 = segment.end.x;
45 | let y1 = segment.end.y;
46 | for (let j = 0; j <= pointsCount; j++) {
47 | let t = j / pointsCount;
48 | let x = x0 + (x1 - x0) * t;
49 | let y = y0 + (y1 - y0) * t;
50 | points.push({ x: +x.toFixed(2), y: +y.toFixed(2) });
51 | }
52 | // 如果是曲线,则使用贝塞尔曲线的方法绘制曲线,并将曲线上的所有点的坐标存储到数组中
53 | } else if (segment.type === "curve") {
54 | let x0 = segment.start.x;
55 | let y0 = segment.start.y;
56 | let x1 = segment.control1.x;
57 | let y1 = segment.control1.y;
58 | let x2 = segment.control2.x;
59 | let y2 = segment.control2.y;
60 | let x3 = segment.end.x;
61 | let y3 = segment.end.y;
62 | const point = getBezierCurvePoints(x0, y0, x1, y1, x2, y2, x3, y3, pointsCount)
63 | points.push(...point);
64 | }
65 | // 更新线段的起点
66 | // lastPoint = segment.end;
67 | }
68 | return points
69 | }
70 |
71 | export function getPathPoint(segments: PointList) {
72 | return getAllPoints(segments)
73 | }
74 |
75 | export function drawArc(ctx: CanvasRenderingContext2D, x = 0, y = 0, radius = 10, color = '#000') {
76 | ctx.beginPath();
77 | ctx.arc(x, y, radius, 0, Math.PI * 2);
78 | ctx.fillStyle = color;
79 | ctx.fill();
80 | ctx.closePath();
81 | }
82 |
83 | export function getRanColor() {
84 | return Math.floor(Math.random() * 256)
85 | }
86 |
--------------------------------------------------------------------------------
/dist/spark-echarts.umd.js:
--------------------------------------------------------------------------------
1 | (function(X,q){typeof exports=="object"&&typeof module<"u"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(X=typeof globalThis<"u"?globalThis:X||self,q(X["spark-echarts"]={}))})(this,function(X){"use strict";function q(n,o,t,e,l,s,b,g,T){let d=[],h=n+(t-n)*2/3,P=o+(e-o)*2/3,E=b+(l-b)*2/3,x=g+(s-g)*2/3;for(let K=0;K<=T;K++){let r=K/T,M=(1-r)*(1-r)*(1-r)*n+3*r*(1-r)*(1-r)*h+3*r*r*(1-r)*E+r*r*r*b,Ye=(1-r)*(1-r)*(1-r)*o+3*r*(1-r)*(1-r)*P+3*r*r*(1-r)*x+r*r*r*g;d.push({x:+M.toFixed(2),y:+Ye.toFixed(2)})}return d}function ve(n){let o=[];for(let t=0;t{const l=new Date().getTime();l-e>o&&(n.apply(t,arguments),e=l)}}};let f,L,i,y,u,p,S,F,Q=[],m=C,z=[],U=[],B=[],ae=0,k=0,Z=0,Y=0,le=0,re=0,se=0,ce=0,de=0,he=0,D=0,A=0,_=0,w=0,ee=0,$=0,R=0,a=0,v=0,c=0,fe=!1,G=[],I=[],O=[],H=0,te=0,j=!0,ne=!1,ie=-1,W=[],N=[],V={x:0,y:0},ue=0,J=0,oe=0;function we(n){if(!n.layout.root)throw new Error("your root is must be exist");m=Object.assign(Object.create(null),n);let{layout:{root:o,m:t}}=m;console.log(t),a=t,Q=n.data,p=document.querySelector(o),f=document.createElement("canvas"),L=document.createElement("canvas"),S=document.createElement("canvas"),p&&(f.id="myCanvas",L.id="myCanvasDot",S.id="markCanvas",i=f.getContext("2d"),y=L.getContext("2d"),F=S.getContext("2d"),S.width=L.width=f.width=p.offsetWidth,f.height=S.height=L.height=p.offsetHeight,p.appendChild(f),p.appendChild(L),p.appendChild(S),z=[],U=[],B=Q.flat(),v=f.width,c=f.height,ae=Math.max.apply(null,B),k=Math.min.apply(null,B),Z=ae-k,Y=(c-2*a)/Z,le=B.length,re=v-2*a,se=1,ce=se*a,de=Q.length,he=re/(le-de),D=he,A=0,_=0,w=0,ee=0,$=0,R=0)}function Te(){i.beginPath(),i.moveTo(a,a),i.lineTo(a,c-a),i.lineTo(v-a+2,c-a),i.setLineDash([3,3]),i.strokeStyle="#aaa",i.stroke(),i.setLineDash([1]);const n=m.axisY.data.length,o=m.axisX.data.length;for(let t=0;tl&&Hl&&Hs&&(V.y=e+1)}let t=U.find(e=>Math.abs(e.x-n)<=.5?e:"");if(t&&f){if(y.clearRect(0,0,f.width,f.height),y.beginPath(),y.setLineDash([2,4]),y.moveTo(t.x,a),y.lineTo(t.x,c-a),y.strokeStyle="#000",y.stroke(),Ce(y,t.x,t.y,5),!fe)u=document.createElement("div"),u.id="canvasTopBox",u.innerHTML="",p&&p.appendChild(u),fe=!0;else if(u){let e=t.y+u.offsetHeight>f.height-a?f.height-a-u.offsetHeight:t.y-u.offsetHeight*.5;u.style.left=t.x+20+"px",u.style.top=e+"px",u.innerHTML=`
2 |
3 |
4 |
5 |
6 |
人数:${G[V.y]}
7 |
订单数:${I[V.x]}
8 |
9 |
10 | `}}}function Se(n){console.log("ASASASD");const{left:o,top:t,width:e,height:l}=p.getBoundingClientRect();n.clientX>o&&n.clientXt&&n.clientY{const o=Object.create(null);Object.assign(o,C,n),Ee(o)}};X.graph=Xe,Object.defineProperty(X,Symbol.toStringTag,{value:"Module"})});
11 |
--------------------------------------------------------------------------------
/dist/spark-echarts.mjs:
--------------------------------------------------------------------------------
1 | function mt(n, o, e, t, l, s, b, g, C) {
2 | let d = [], h = n + (e - n) * 2 / 3, w = o + (t - o) * 2 / 3, L = b + (l - b) * 2 / 3, x = g + (s - g) * 2 / 3;
3 | for (let F = 0; F <= C; F++) {
4 | let r = F / C, X = (1 - r) * (1 - r) * (1 - r) * n + 3 * r * (1 - r) * (1 - r) * h + 3 * r * r * (1 - r) * L + r * r * r * b, yt = (1 - r) * (1 - r) * (1 - r) * o + 3 * r * (1 - r) * (1 - r) * w + 3 * r * r * (1 - r) * x + r * r * r * g;
5 | d.push({ x: +X.toFixed(2), y: +yt.toFixed(2) });
6 | }
7 | return d;
8 | }
9 | function vt(n) {
10 | let o = [];
11 | for (let e = 0; e < n.length; e++) {
12 | let t = n[e], l = 50;
13 | if (t.type === "line") {
14 | let s = t.start.x, b = t.start.y, g = t.end.x, C = t.end.y;
15 | for (let d = 0; d <= l; d++) {
16 | let h = d / l, w = s + (g - s) * h, L = b + (C - b) * h;
17 | o.push({ x: +w.toFixed(2), y: +L.toFixed(2) });
18 | }
19 | } else if (t.type === "curve") {
20 | let s = t.start.x, b = t.start.y, g = t.control1.x, C = t.control1.y, d = t.control2.x, h = t.control2.y, w = t.end.x, L = t.end.y;
21 | const x = mt(s, b, g, C, d, h, w, L, l);
22 | o.push(...x);
23 | }
24 | }
25 | return o;
26 | }
27 | function bt(n) {
28 | return vt(n);
29 | }
30 | function Ct(n, o = 0, e = 0, t = 10, l = "#000") {
31 | n.beginPath(), n.arc(o, e, t, 0, Math.PI * 2), n.fillStyle = l, n.fill(), n.closePath();
32 | }
33 | const T = {
34 | layout: {
35 | root: "#container",
36 | m: 40
37 | },
38 | /**
39 | * 注意!这里分段间有重复点20一定要相等,用于衔接曲线
40 | */
41 | data: [[40, 60, 40, 80, 10, 50, 80, 0, 50, 30, 20], [20, 30, 60, 40, 30, 10, 30, 20, 0, 30, 20], [20, 30, 20, 40, 20, 10, 10, 30, 0, 30, 50]],
42 | axisX: {
43 | data: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
44 | format(n) {
45 | return n + "w";
46 | },
47 | top: 4
48 | },
49 | axisY: {
50 | data: [0, 20, 40, 60, 80],
51 | format(n) {
52 | return n + "人";
53 | },
54 | right: 10
55 | },
56 | series: [
57 | {
58 | rgba: [[55, 162, 255], [116, 21, 219]],
59 | hoverRgba: [[55, 162, 255], [116, 21, 219]],
60 | lineColor: "blue"
61 | },
62 | {
63 | rgba: [[255, 0, 135], [135, 0, 157]],
64 | hoverRgba: [[255, 0, 135], [135, 0, 157]],
65 | lineColor: "purple"
66 | },
67 | {
68 | rgba: [[255, 190, 0], [224, 62, 76]],
69 | hoverRgba: [[255, 190, 0], [224, 62, 76]],
70 | lineColor: "orange"
71 | }
72 | ]
73 | }, ut = {
74 | removeChild(n, o) {
75 | for (const e of o)
76 | e && n.removeChild(e);
77 | },
78 | throttle(n, o, e) {
79 | let t = 0;
80 | return () => {
81 | const l = (/* @__PURE__ */ new Date()).getTime();
82 | l - t > o && (n.apply(e, arguments), t = l);
83 | };
84 | }
85 | };
86 | let f, S, i, y, u, p, A, M, J = [], v = T, V = [], nt = [], j = [], it = 0, k = 0, U = 0, D = 0, ot = 0, at = 0, lt = 0, ft = 0, rt = 0, st = 0, O = 0, $ = 0, Z = 0, P = 0, _ = 0, R = 0, E = 0, a = 0, m = 0, c = 0, ct = !1, I = [], G = [], H = [], Y = 0, K = 0, q = !0, tt = !1, et = -1, W = [], N = [], z = { x: 0, y: 0 }, dt = 0, B = 0, Q = 0;
87 | function wt(n) {
88 | if (!n.layout.root)
89 | throw new Error("your root is must be exist");
90 | v = Object.assign(/* @__PURE__ */ Object.create(null), n);
91 | let { layout: { root: o, m: e } } = v;
92 | console.log(e), a = e, J = n.data, p = document.querySelector(o), f = document.createElement("canvas"), S = document.createElement("canvas"), A = document.createElement("canvas"), p && (f.id = "myCanvas", S.id = "myCanvasDot", A.id = "markCanvas", i = f.getContext("2d"), y = S.getContext("2d"), M = A.getContext("2d"), A.width = S.width = f.width = p.offsetWidth, f.height = A.height = S.height = p.offsetHeight, p.appendChild(f), p.appendChild(S), p.appendChild(A), V = [], nt = [], j = J.flat(), m = f.width, c = f.height, it = Math.max.apply(null, j), k = Math.min.apply(null, j), U = it - k, D = (c - 2 * a) / U, ot = j.length, at = m - 2 * a, lt = 1, ft = lt * a, rt = J.length, st = at / (ot - rt), O = st, $ = 0, Z = 0, P = 0, _ = 0, R = 0, E = 0);
93 | }
94 | function Pt() {
95 | i.beginPath(), i.moveTo(a, a), i.lineTo(a, c - a), i.lineTo(m - a + 2, c - a), i.setLineDash([3, 3]), i.strokeStyle = "#aaa", i.stroke(), i.setLineDash([1]);
96 | const n = v.axisY.data.length, o = v.axisX.data.length;
97 | for (let e = 0; e < n; e++) {
98 | let t = U * e / (n - 1) + k, l = c - a - (t - k) * D;
99 | e && (i.beginPath(), i.moveTo(a, l), i.lineTo(m - a, l), i.strokeStyle = "#ddd", i.stroke()), i.beginPath(), i.stroke(), I = [];
100 | for (const s of T.axisY.data)
101 | I.push(T.axisY.format(s));
102 | i.fillText(I[e] + "", a - 15 - T.axisY.right, l + 5), q && N.push(l + 5);
103 | }
104 | for (let e = 0; e < o; e++) {
105 | let t = e * O, l = a + t;
106 | e && (i.beginPath(), i.moveTo(l, c - a), i.lineTo(l, a), i.strokeStyle = "#ddd", i.stroke()), G = [];
107 | for (const s of T.axisX.data)
108 | G.push(T.axisX.format(s));
109 | i.fillText(G[e], l - 1, c - a + 10 + T.axisX.top), q && W.push(l - 1);
110 | }
111 | }
112 | function Tt(n) {
113 | const { points: o, id: e, rgba: t, lineColor: l, hoverRgba: s } = n;
114 | $ = P, Z = _, q && H.push({ x: $, y: Z });
115 | function b(C) {
116 | i.beginPath(), i.moveTo(e ? a + P - ft : a + P, c - a - (o[0] - k) * D), i.lineWidth = 2, i.setLineDash([0, 0]);
117 | let d = 0, h = 0, w = 0;
118 | e && (w -= a);
119 | for (let x = 0; x < o.length; x++) {
120 | d = x * O + a + P + w, h = c - a - (o[x] - k) * D;
121 | let F = (x - 1) * O + a + P + w, r = c - a - (o[x - 1] - k) * D, X = F + O / 2;
122 | x === 0 ? (R = d, E = h, i.lineTo(d, h), R === d && E === h || V.push({ type: "line", start: { x: R, y: E }, end: { x: d, y: h } })) : (i.bezierCurveTo(X, r, X, h, d, h), V.push({ type: "curve", start: { x: R, y: E }, end: { x: d, y: h }, control1: { x: X, y: r }, control2: { x: X, y: h } })), R = d, E = h, x === o.length - 1 && (P = d, _ = h, q && e === v.data.length - 1 && H.push({ x: d, y: h }));
123 | }
124 | i.strokeStyle = l, i.stroke(), C && i.beginPath(), i.lineTo(P, c - a), i.lineTo(a + $, c - a);
125 | let L = e ? $ : a + $;
126 | i.lineTo(L, c - a), i.strokeStyle = "transparent", C && i.stroke();
127 | }
128 | b(!1);
129 | const g = i.createLinearGradient(200, 110, 200, 290);
130 | tt && et === e ? (g.addColorStop(0, `rgba(${s[1][0]}, ${s[1][1]}, ${s[1][2]}, 1)`), g.addColorStop(1, `rgba(${s[0][0]}, ${s[0][1]}, ${s[0][2]}, 1)`)) : (g.addColorStop(0, `rgba(${t[1][0]}, ${t[1][1]}, ${t[1][2]}, 1)`), g.addColorStop(1, `rgba(${t[0][0]}, ${t[0][1]}, ${t[0][2]}, 0)`)), i.fillStyle = g, i.fill();
131 | }
132 | function kt() {
133 | const { data: n, series: o } = v;
134 | for (let e = 0; e < n.length; e++)
135 | Tt({ points: n[e], id: e, rgba: o[e].rgba, hoverRgba: o[e].hoverRgba, lineColor: o[e].lineColor });
136 | q = !1;
137 | }
138 | function Lt(n, o) {
139 | Y = n, K = o;
140 | for (let t = 0; t < H.length - 1; t++) {
141 | const l = H[t].x, s = H[t + 1].x;
142 | Y > l && Y < s && (et = t);
143 | }
144 | for (let t = 0; t < W.length - 1; t++) {
145 | const l = W[t], s = W[t + 1];
146 | Y > l && Y < s && (z.x = t);
147 | }
148 | for (let t = 0; t < N.length - 1; t++) {
149 | const l = N[t], s = N[t + 1];
150 | K < l && K > s && (z.y = t + 1);
151 | }
152 | let e = nt.find((t) => Math.abs(t.x - n) <= 0.5 ? t : "");
153 | if (e && f) {
154 | if (y.clearRect(0, 0, f.width, f.height), y.beginPath(), y.setLineDash([2, 4]), y.moveTo(e.x, a), y.lineTo(e.x, c - a), y.strokeStyle = "#000", y.stroke(), Ct(y, e.x, e.y, 5), !ct)
155 | u = document.createElement("div"), u.id = "canvasTopBox", u.innerHTML = "", p && p.appendChild(u), ct = !0;
156 | else if (u) {
157 | let t = e.y + u.offsetHeight > f.height - a ? f.height - a - u.offsetHeight : e.y - u.offsetHeight * 0.5;
158 | u.style.left = e.x + 20 + "px", u.style.top = t + "px", u.innerHTML = `
159 |
160 |
161 |
162 |
163 |
人数:${I[z.y]}
164 |
订单数:${G[z.x]}
165 |
166 |
167 | `;
168 | }
169 | }
170 | }
171 | function St(n) {
172 | console.log("ASASASD");
173 | const { left: o, top: e, width: t, height: l } = p.getBoundingClientRect();
174 | n.clientX > o && n.clientX < t + o && n.clientY > e && n.clientY < l + e ? (ht(v, { openAnimate: !1 }), Lt(n.clientX, n.clientY), tt = !0, u && (u.style.display = "block")) : (f && y.clearRect(0, 0, f.width, f.height), tt = !1, ht(v), u && (u.style.display = "none"));
175 | }
176 | function At() {
177 | Rt();
178 | }
179 | const $t = ut.throttle(At, 50, window);
180 | function gt() {
181 | window.addEventListener("mousemove", St), window.addEventListener("resize", $t);
182 | }
183 | function ht(n, o) {
184 | i.clearRect(0, 0, m, c), y.clearRect(0, 0, m, c), p && ut.removeChild(p, [f, S, A]), pt(n, o);
185 | }
186 | function Rt() {
187 | J = [], v = T, V = [], nt = [], j = [], it = 0, k = 0, U = 0, D = 0, ot = 0, at = 0, lt = 0, ft = 0, rt = 0, st = 0, O = 0, $ = 0, Z = 0, P = 0, _ = 0, R = 0, E = 0, a = 0, m = 0, c = 0, ct = !1, I = [], G = [], H = [], Y = 0, K = 0, q = !0, tt = !1, et = -1, W = [], N = [], z = { x: 0, y: 0 }, dt = 0, B = 0, Q = 0, ht(v, { openAnimate: !1 });
188 | }
189 | function xt() {
190 | M.clearRect(0, 0, m, c), M.fillStyle = "rgba(255, 255, 255, 1)", M.fillRect(0, 0, m, c), M.clearRect(
191 | m - B,
192 | c - Q,
193 | B,
194 | Q
195 | ), B += 20, Q += 20, B < m ? dt = requestAnimationFrame(xt) : (cancelAnimationFrame(dt), gt());
196 | }
197 | function pt(n, o = { openAnimate: !0 }) {
198 | wt(n), Pt(), o.openAnimate && xt(), kt(), nt = bt(V), o.openAnimate || gt();
199 | }
200 | function Et(n) {
201 | pt(n);
202 | }
203 | const Xt = (n) => {
204 | const o = /* @__PURE__ */ Object.create(null);
205 | Object.assign(o, T, n), Et(o);
206 | }, Yt = {
207 | line: Xt
208 | };
209 | export {
210 | Yt as graph
211 | };
212 |
--------------------------------------------------------------------------------
/src/core.ts:
--------------------------------------------------------------------------------
1 | import { drawArc, getPathPoint } from "./utils/canvas-utils";
2 | import { options } from "./config/options";
3 | import { Options, PointList, Pos } from "./types";
4 | import utils from "./utils/tools";
5 |
6 | let canvas: HTMLCanvasElement | null, dotCanvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, dotCtx: CanvasRenderingContext2D, labelDOM: HTMLDivElement | null, container: HTMLElement, markCanvas: HTMLCanvasElement,
7 | markCtx: CanvasRenderingContext2D
8 |
9 | let data: number[][] = [], newOpt: Options = options
10 | let pointList: PointList = [], pathPoints: Pos[] = [], concatData = [], maxY = 0, minY = 0, rangeY = 0, ratioY = 0, count = 0, rangeX = 0, xk = 0, xkVal = 0, dataLen = 0, ratioX = 0, stepX = 0, startAreaX = 0, startAreaY = 0, endAreaX = 0, endAreaY = 0, prePointPosX = 0, prePointPosY = 0, margin = 0, width = 0, height = 0, isLabel = false, newYs: string[] = [], newXs: string[] = [],
11 | areaList: Pos[] = [], cx = 0, cy = 0, firstEnding = true, isHover = false,
12 | areaId = -1, axisXList: number[] = [], axisYList: number[] = [], curInfo: { x: number, y: number } = { x: 0, y: 0 }, animateId = 0, maskWidth = 0, maskHeight = 0
13 |
14 | /**
15 | * 初始化数据
16 | * @param options
17 | * @returns
18 | */
19 | function initBaseData(options: Options) {
20 | if (!options.layout.root) throw new Error('your root is must be exist')
21 | newOpt = Object.assign(Object.create(null), options)
22 |
23 | // set options
24 | let { layout: { root, m } } = newOpt
25 | console.log(m);
26 |
27 | margin = m
28 | data = options.data
29 |
30 | container = document.querySelector(root) as HTMLElement
31 | canvas = document.createElement("canvas");
32 | dotCanvas = document.createElement("canvas");
33 | markCanvas = document.createElement("canvas");
34 |
35 | if (!container) return
36 | canvas.id = 'myCanvas', dotCanvas.id = 'myCanvasDot', markCanvas.id = 'markCanvas'
37 |
38 | ctx = canvas.getContext("2d") as CanvasRenderingContext2D, dotCtx = dotCanvas.getContext("2d") as CanvasRenderingContext2D; markCtx = markCanvas.getContext("2d") as CanvasRenderingContext2D;
39 | markCanvas.width = dotCanvas.width = canvas.width = container.offsetWidth
40 | canvas.height = markCanvas.height = dotCanvas.height = container.offsetHeight
41 | container.appendChild(canvas)
42 | container.appendChild(dotCanvas)
43 | container.appendChild(markCanvas)
44 |
45 | // 路由所有点
46 | pointList = [], pathPoints = []
47 | // 完整数据
48 | concatData = data.flat()
49 | // 定义画布尺寸和边距
50 | width = canvas.width, height = canvas.height
51 |
52 | // 计算 Y 轴坐标比例尺 ratioY
53 | maxY = Math.max.apply(null, concatData);
54 | minY = Math.min.apply(null, concatData);
55 | rangeY = maxY - minY;
56 | // 数据和坐标范围的比值
57 | ratioY = (height - 2 * margin) / rangeY;
58 | // 计算 X 轴坐标比例尺和步长
59 | count = concatData.length;
60 | rangeX = width - 2 * margin;
61 | xk = 1, xkVal = xk * margin
62 | dataLen = data.length
63 | ratioX = rangeX / (count - dataLen);
64 | stepX = ratioX;
65 |
66 | startAreaX = 0, startAreaY = 0, endAreaX = 0, endAreaY = 0, prePointPosX = 0, prePointPosY = 0
67 | }
68 |
69 | /**
70 | * 绘制坐标轴
71 | */
72 | function drawAxis() {
73 | ctx.beginPath();
74 | ctx.moveTo(margin, margin);
75 | ctx.lineTo(margin, height - margin);
76 | ctx.lineTo(width - margin + 2, height - margin);
77 | ctx.setLineDash([3, 3])
78 | ctx.strokeStyle = '#aaa'
79 | ctx.stroke();
80 | ctx.setLineDash([1])
81 | const yLen = newOpt.axisY.data.length
82 | const xLen = newOpt.axisX.data.length
83 |
84 | // 绘制 Y 轴坐标标记和标签
85 | for (let i = 0; i < yLen; i++) {
86 | let y = (rangeY * i) / (yLen - 1) + minY;
87 | let yPos = height - margin - (y - minY) * ratioY;
88 |
89 | if (i) {
90 | ctx.beginPath();
91 | ctx.moveTo(margin, yPos);
92 | ctx.lineTo(width - margin, yPos);
93 | ctx.strokeStyle = '#ddd'
94 | ctx.stroke();
95 | }
96 |
97 | ctx.beginPath();
98 | ctx.stroke();
99 | newYs = []
100 | for (const val of options.axisY.data) {
101 | newYs.push(options.axisY.format(val))
102 | }
103 | ctx.fillText(newYs[i] + '', margin - 15 - options.axisY.right, yPos + 5);
104 | firstEnding && axisYList.push(yPos + 5)
105 | }
106 |
107 | // 绘制 X 轴坐标标签
108 | for (let i = 0; i < xLen; i++) {
109 | let x = i * stepX;
110 | let xPos = (margin + x);
111 | if (i) {
112 | ctx.beginPath();
113 | ctx.moveTo(xPos, height - margin);
114 | ctx.lineTo(xPos, margin);
115 | ctx.strokeStyle = '#ddd'
116 | ctx.stroke();
117 | }
118 | newXs = []
119 | for (const val of options.axisX.data) {
120 | newXs.push(options.axisX.format(val))
121 | }
122 | ctx.fillText(newXs[i], xPos - 1, height - margin + 10 + options.axisX.top);
123 | firstEnding && axisXList.push(xPos - 1)
124 | }
125 | }
126 |
127 | /**
128 | * 绘制单组曲线
129 | * @param data
130 | */
131 | function drawLine(data: any) {
132 | const { points, id, rgba, lineColor, hoverRgba } = data
133 | startAreaX = endAreaX
134 | startAreaY = endAreaY
135 | // 分割区
136 | if (firstEnding) {
137 | areaList.push({ x: startAreaX, y: startAreaY })
138 | }
139 |
140 | function darwColorOrLine(lineMode: boolean) {
141 | // 绘制折线
142 | ctx.beginPath();
143 | ctx.moveTo(id ? margin + endAreaX - xkVal : margin + endAreaX, height - margin - (points[0] - minY) * ratioY);
144 | ctx.lineWidth = 2
145 | ctx.setLineDash([0, 0])
146 |
147 | let x = 0, y = 0, translateX = 0
148 | if (id) {
149 | translateX -= (margin)
150 | }
151 | for (let i = 0; i < points.length; i++) {
152 | x = (i * stepX + margin + endAreaX + translateX)
153 | y = height - margin - (points[i] - minY) * ratioY;
154 |
155 | let x0 = (i - 1) * stepX + margin + endAreaX + translateX;
156 | let y0 = height - margin - (points[i - 1] - minY) * ratioY;
157 | let xc = x0 + stepX / 2;
158 | // let yc = (y0 + y) / 2;
159 | if (i === 0) {
160 | prePointPosX = x
161 | prePointPosY = y
162 | ctx.lineTo(x, y);
163 | if (!(prePointPosX === x && prePointPosY === y)) {
164 | pointList.push({ type: 'line', start: { x: prePointPosX, y: prePointPosY }, end: { x: x, y: y } })
165 | }
166 | } else {
167 | ctx.bezierCurveTo(xc, y0, xc, y, x, y);
168 | pointList.push({ type: 'curve', start: { x: prePointPosX, y: prePointPosY }, end: { x: x, y: y }, control1: { x: xc, y: y0 }, control2: { x: xc, y: y } })
169 | }
170 | prePointPosX = x
171 | prePointPosY = y
172 | if (i === points.length - 1) {
173 | endAreaX = x
174 | endAreaY = y
175 |
176 | if (firstEnding && id === newOpt.data.length - 1) {
177 | areaList.push({ x: x, y: y })
178 | }
179 | }
180 | }
181 | ctx.strokeStyle = lineColor
182 | ctx.stroke()
183 |
184 | lineMode && ctx.beginPath()
185 |
186 | // 右侧闭合点
187 | ctx.lineTo(endAreaX, height - margin)
188 | // 左侧闭合点
189 | ctx.lineTo(margin + startAreaX, height - margin)
190 | let startClosePointX = id ? startAreaX : margin + startAreaX
191 | // 交接闭合点
192 | ctx.lineTo(startClosePointX, height - margin)
193 | ctx.strokeStyle = 'transparent'
194 | lineMode && ctx.stroke();
195 | }
196 | darwColorOrLine(false)
197 |
198 | // 渐变
199 | const gradient = ctx.createLinearGradient(200, 110, 200, 290);
200 |
201 | if (isHover && areaId === id) {
202 | gradient.addColorStop(0, `rgba(${hoverRgba[1][0]}, ${hoverRgba[1][1]}, ${hoverRgba[1][2]}, 1)`);
203 | gradient.addColorStop(1, `rgba(${hoverRgba[0][0]}, ${hoverRgba[0][1]}, ${hoverRgba[0][2]}, 1)`);
204 | } else {
205 | gradient.addColorStop(0, `rgba(${rgba[1][0]}, ${rgba[1][1]}, ${rgba[1][2]}, 1)`);
206 | gradient.addColorStop(1, `rgba(${rgba[0][0]}, ${rgba[0][1]}, ${rgba[0][2]}, 0)`);
207 | }
208 |
209 | ctx.fillStyle = gradient;
210 | ctx.fill();
211 | }
212 |
213 | /**
214 | * 绘制所有组的曲线
215 | */
216 | function startDrawLines() {
217 | const { data, series } = newOpt
218 | for (let i = 0; i < data.length; i++) {
219 | drawLine({ points: data[i], id: i, rgba: series[i].rgba, hoverRgba: series[i].hoverRgba, lineColor: series[i].lineColor })
220 | }
221 | firstEnding = false
222 | }
223 |
224 | /**
225 | * label显示
226 | * @param clientX
227 | * @param clientY
228 | */
229 | function drawTouchPoint(clientX: number, clientY: number) {
230 | cx = clientX, cy = clientY
231 |
232 | // 计算颜色
233 | for (let i = 0; i < areaList.length - 1; i++) {
234 | const pre = areaList[i].x;
235 | const after = areaList[i + 1].x;
236 |
237 | if (cx > pre && cx < after) {
238 | areaId = i
239 | }
240 | }
241 | // 计算交叉位置
242 | for (let i = 0; i < axisXList.length - 1; i++) {
243 | const pre = axisXList[i];
244 | const after = axisXList[i + 1];
245 | if (cx > pre && cx < after) {
246 | curInfo.x = i
247 | }
248 | }
249 | for (let i = 0; i < axisYList.length - 1; i++) {
250 | const max = axisYList[i];
251 | const min = axisYList[i + 1];
252 | if (cy < max && cy > min) {
253 | curInfo.y = i + 1
254 | }
255 | }
256 |
257 | let crossPoint = pathPoints.find((item: Pos) => {
258 | const orderNum = .5
259 | if (Math.abs(item.x - clientX) <= orderNum) {
260 | return item
261 | } else {
262 | return ''
263 | }
264 | }) as Pos
265 | if (crossPoint && canvas) {
266 | dotCtx.clearRect(0, 0, canvas.width, canvas.height);
267 |
268 | dotCtx.beginPath()
269 | dotCtx.setLineDash([2, 4]);
270 | dotCtx.moveTo(crossPoint.x, margin)
271 | dotCtx.lineTo(crossPoint.x, height - margin)
272 | dotCtx.strokeStyle = '#000'
273 | dotCtx.stroke()
274 |
275 | drawArc(dotCtx, crossPoint.x, crossPoint.y, 5)
276 |
277 | //label
278 | if (!isLabel) {
279 | labelDOM = document.createElement("div");
280 | labelDOM.id = 'canvasTopBox'
281 | labelDOM.innerHTML = ""
282 | container && container.appendChild(labelDOM)
283 | isLabel = true
284 | } else {
285 | if (labelDOM) {
286 | let t = crossPoint.y + labelDOM.offsetHeight > canvas.height - margin ? canvas.height - margin - labelDOM.offsetHeight : crossPoint.y - labelDOM.offsetHeight * .5
287 | labelDOM.style.left = crossPoint.x + 20 + 'px'
288 | labelDOM.style.top = t + 'px'
289 | labelDOM.innerHTML = `
290 |
291 |
292 |
293 |
294 |
人数:${newYs[curInfo.y]}
295 |
订单数:${newXs[curInfo.x]}
296 |
297 |
298 | `
299 | } else {
300 | }
301 | }
302 | }
303 | }
304 |
305 | function mousemoveEvent(e: MouseEvent) {
306 | console.log('ASASASD');
307 |
308 | const { left, top, width, height } = container.getBoundingClientRect()
309 | if (e.clientX > left && e.clientX < width + left && e.clientY > top && e.clientY < height + top) {
310 | // inside
311 | updateOptions(newOpt, { openAnimate: false })
312 | drawTouchPoint(e.clientX, e.clientY)
313 | isHover = true
314 | if (labelDOM) {
315 | labelDOM.style.display = 'block'
316 | }
317 | } else {
318 | // outside
319 | canvas && dotCtx.clearRect(0, 0, canvas.width, canvas.height);
320 | isHover = false
321 | updateOptions(newOpt)
322 | if (labelDOM) {
323 | labelDOM.style.display = 'none'
324 | }
325 | }
326 | }
327 |
328 | function sizeEvent() {
329 | resetAnimateOptions()
330 | }
331 | const throttleSizeEvent = utils.throttle(sizeEvent, 50, window)
332 |
333 | function watchEvent() {
334 | window.addEventListener('mousemove', mousemoveEvent)
335 | window.addEventListener('resize', throttleSizeEvent)
336 | }
337 | // function removeEvent() {
338 | // window.removeEventListener('mousemove', mousemoveEvent)
339 | // window.removeEventListener('resize', throttleSizeEvent)
340 | // }
341 |
342 | /**
343 | * 更新配置
344 | * @param opt
345 | * @param info
346 | */
347 | function updateOptions(opt: Options, info?: any) {
348 | // removeEvent()
349 | ctx.clearRect(0, 0, width, height);
350 | dotCtx.clearRect(0, 0, width, height);
351 | container && utils.removeChild(container, [canvas, dotCanvas, markCanvas])
352 | init(opt, info)
353 | }
354 |
355 | /**
356 | * 重置(显示动画)
357 | */
358 | function resetAnimateOptions() {
359 | data = [], newOpt = options
360 | pointList = [], pathPoints = [], concatData = [], maxY = 0, minY = 0, rangeY = 0, ratioY = 0, count = 0, rangeX = 0, xk = 0, xkVal = 0, dataLen = 0, ratioX = 0, stepX = 0, startAreaX = 0, startAreaY = 0, endAreaX = 0, endAreaY = 0, prePointPosX = 0, prePointPosY = 0, margin = 0, width = 0, height = 0, isLabel = false, newYs = [], newXs = [], areaList = [], cx = 0, cy = 0, firstEnding = true, isHover = false,
361 | areaId = -1, axisXList = [], axisYList = [], curInfo = { x: 0, y: 0 }, animateId = 0, maskWidth = 0, maskHeight = 0
362 | updateOptions(newOpt, { openAnimate: false })
363 | }
364 |
365 | /**
366 | * 开场动画
367 | */
368 | function drawAnimate() {
369 | markCtx.clearRect(0, 0, width, height);
370 |
371 | markCtx.fillStyle = "rgba(255, 255, 255, 1)"
372 | markCtx.fillRect(0, 0, width, height);
373 |
374 | markCtx.clearRect(
375 | (width - maskWidth),
376 | (height - maskHeight),
377 | maskWidth,
378 | maskHeight
379 | );
380 |
381 | // 更新遮罩区域大小
382 | maskWidth += 20;
383 | maskHeight += 20;
384 | if (maskWidth < width) {
385 | animateId = requestAnimationFrame(drawAnimate);
386 | } else {
387 | cancelAnimationFrame(animateId)
388 | watchEvent()
389 | }
390 | }
391 |
392 | /**
393 | * 初始化
394 | * @param options
395 | * @param info
396 | */
397 | function init(options: Options, info = { openAnimate: true }) {
398 | initBaseData(options)
399 | drawAxis()
400 | info.openAnimate && drawAnimate()
401 | startDrawLines()
402 | pathPoints = getPathPoint(pointList)
403 |
404 | // 防止动画未结束提前监听
405 | if (!info.openAnimate) {
406 | watchEvent()
407 | }
408 | }
409 |
410 |
411 | /**
412 | * 入口
413 | * @param opt
414 | */
415 | export function openSparkECharts(opt: Options) {
416 | init(opt)
417 | }
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | devDependencies:
4 | '@babel/cli':
5 | specifier: ^7.21.0
6 | version: 7.21.0(@babel/core@7.21.4)
7 | '@babel/core':
8 | specifier: ^7.21.4
9 | version: 7.21.4
10 | '@babel/preset-typescript':
11 | specifier: ^7.21.4
12 | version: 7.21.4(@babel/core@7.21.4)
13 | '@types/node':
14 | specifier: ^18.16.1
15 | version: 18.16.1
16 | eslint:
17 | specifier: ^8.38.0
18 | version: 8.38.0
19 | eslint-config-prettier:
20 | specifier: ^8.8.0
21 | version: 8.8.0(eslint@8.38.0)
22 | eslint-config-standard:
23 | specifier: ^17.0.0
24 | version: 17.0.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.38.0)
25 | eslint-plugin-import:
26 | specifier: ^2.27.5
27 | version: 2.27.5(eslint@8.38.0)
28 | eslint-plugin-node:
29 | specifier: ^11.1.0
30 | version: 11.1.0(eslint@8.38.0)
31 | eslint-plugin-prettier:
32 | specifier: ^4.2.1
33 | version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7)
34 | eslint-plugin-promise:
35 | specifier: ^6.1.1
36 | version: 6.1.1(eslint@8.38.0)
37 | typescript:
38 | specifier: ^4.9.3
39 | version: 4.9.3
40 | vite:
41 | specifier: ^4.2.0
42 | version: 4.2.0(@types/node@18.16.1)
43 |
44 | packages:
45 |
46 | /@ampproject/remapping@2.2.1:
47 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
48 | engines: {node: '>=6.0.0'}
49 | dependencies:
50 | '@jridgewell/gen-mapping': 0.3.3
51 | '@jridgewell/trace-mapping': 0.3.18
52 | dev: true
53 |
54 | /@babel/cli@7.21.0(@babel/core@7.21.4):
55 | resolution: {integrity: sha512-xi7CxyS8XjSyiwUGCfwf+brtJxjW1/ZTcBUkP10xawIEXLX5HzLn+3aXkgxozcP2UhRhtKTmQurw9Uaes7jZrA==}
56 | engines: {node: '>=6.9.0'}
57 | hasBin: true
58 | peerDependencies:
59 | '@babel/core': ^7.0.0-0
60 | dependencies:
61 | '@babel/core': 7.21.4
62 | '@jridgewell/trace-mapping': 0.3.18
63 | commander: 4.1.1
64 | convert-source-map: 1.9.0
65 | fs-readdir-recursive: 1.1.0
66 | glob: 7.2.3
67 | make-dir: 2.1.0
68 | slash: 2.0.0
69 | optionalDependencies:
70 | '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3
71 | chokidar: 3.5.3
72 | dev: true
73 |
74 | /@babel/code-frame@7.21.4:
75 | resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
76 | engines: {node: '>=6.9.0'}
77 | dependencies:
78 | '@babel/highlight': 7.18.6
79 | dev: true
80 |
81 | /@babel/compat-data@7.21.4:
82 | resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==}
83 | engines: {node: '>=6.9.0'}
84 | dev: true
85 |
86 | /@babel/core@7.21.4:
87 | resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==}
88 | engines: {node: '>=6.9.0'}
89 | dependencies:
90 | '@ampproject/remapping': 2.2.1
91 | '@babel/code-frame': 7.21.4
92 | '@babel/generator': 7.21.4
93 | '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4)
94 | '@babel/helper-module-transforms': 7.21.2
95 | '@babel/helpers': 7.21.0
96 | '@babel/parser': 7.21.4
97 | '@babel/template': 7.20.7
98 | '@babel/traverse': 7.21.4
99 | '@babel/types': 7.21.4
100 | convert-source-map: 1.9.0
101 | debug: 4.3.4
102 | gensync: 1.0.0-beta.2
103 | json5: 2.2.3
104 | semver: 6.3.0
105 | transitivePeerDependencies:
106 | - supports-color
107 | dev: true
108 |
109 | /@babel/generator@7.21.4:
110 | resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==}
111 | engines: {node: '>=6.9.0'}
112 | dependencies:
113 | '@babel/types': 7.21.4
114 | '@jridgewell/gen-mapping': 0.3.3
115 | '@jridgewell/trace-mapping': 0.3.18
116 | jsesc: 2.5.2
117 | dev: true
118 |
119 | /@babel/helper-annotate-as-pure@7.18.6:
120 | resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
121 | engines: {node: '>=6.9.0'}
122 | dependencies:
123 | '@babel/types': 7.21.4
124 | dev: true
125 |
126 | /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4):
127 | resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==}
128 | engines: {node: '>=6.9.0'}
129 | peerDependencies:
130 | '@babel/core': ^7.0.0
131 | dependencies:
132 | '@babel/compat-data': 7.21.4
133 | '@babel/core': 7.21.4
134 | '@babel/helper-validator-option': 7.21.0
135 | browserslist: 4.21.5
136 | lru-cache: 5.1.1
137 | semver: 6.3.0
138 | dev: true
139 |
140 | /@babel/helper-create-class-features-plugin@7.21.4(@babel/core@7.21.4):
141 | resolution: {integrity: sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==}
142 | engines: {node: '>=6.9.0'}
143 | peerDependencies:
144 | '@babel/core': ^7.0.0
145 | dependencies:
146 | '@babel/core': 7.21.4
147 | '@babel/helper-annotate-as-pure': 7.18.6
148 | '@babel/helper-environment-visitor': 7.18.9
149 | '@babel/helper-function-name': 7.21.0
150 | '@babel/helper-member-expression-to-functions': 7.21.0
151 | '@babel/helper-optimise-call-expression': 7.18.6
152 | '@babel/helper-replace-supers': 7.20.7
153 | '@babel/helper-skip-transparent-expression-wrappers': 7.20.0
154 | '@babel/helper-split-export-declaration': 7.18.6
155 | transitivePeerDependencies:
156 | - supports-color
157 | dev: true
158 |
159 | /@babel/helper-environment-visitor@7.18.9:
160 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==}
161 | engines: {node: '>=6.9.0'}
162 | dev: true
163 |
164 | /@babel/helper-function-name@7.21.0:
165 | resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==}
166 | engines: {node: '>=6.9.0'}
167 | dependencies:
168 | '@babel/template': 7.20.7
169 | '@babel/types': 7.21.4
170 | dev: true
171 |
172 | /@babel/helper-hoist-variables@7.18.6:
173 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
174 | engines: {node: '>=6.9.0'}
175 | dependencies:
176 | '@babel/types': 7.21.4
177 | dev: true
178 |
179 | /@babel/helper-member-expression-to-functions@7.21.0:
180 | resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==}
181 | engines: {node: '>=6.9.0'}
182 | dependencies:
183 | '@babel/types': 7.21.4
184 | dev: true
185 |
186 | /@babel/helper-module-imports@7.21.4:
187 | resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
188 | engines: {node: '>=6.9.0'}
189 | dependencies:
190 | '@babel/types': 7.21.4
191 | dev: true
192 |
193 | /@babel/helper-module-transforms@7.21.2:
194 | resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==}
195 | engines: {node: '>=6.9.0'}
196 | dependencies:
197 | '@babel/helper-environment-visitor': 7.18.9
198 | '@babel/helper-module-imports': 7.21.4
199 | '@babel/helper-simple-access': 7.20.2
200 | '@babel/helper-split-export-declaration': 7.18.6
201 | '@babel/helper-validator-identifier': 7.19.1
202 | '@babel/template': 7.20.7
203 | '@babel/traverse': 7.21.4
204 | '@babel/types': 7.21.4
205 | transitivePeerDependencies:
206 | - supports-color
207 | dev: true
208 |
209 | /@babel/helper-optimise-call-expression@7.18.6:
210 | resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==}
211 | engines: {node: '>=6.9.0'}
212 | dependencies:
213 | '@babel/types': 7.21.4
214 | dev: true
215 |
216 | /@babel/helper-plugin-utils@7.20.2:
217 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==}
218 | engines: {node: '>=6.9.0'}
219 | dev: true
220 |
221 | /@babel/helper-replace-supers@7.20.7:
222 | resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==}
223 | engines: {node: '>=6.9.0'}
224 | dependencies:
225 | '@babel/helper-environment-visitor': 7.18.9
226 | '@babel/helper-member-expression-to-functions': 7.21.0
227 | '@babel/helper-optimise-call-expression': 7.18.6
228 | '@babel/template': 7.20.7
229 | '@babel/traverse': 7.21.4
230 | '@babel/types': 7.21.4
231 | transitivePeerDependencies:
232 | - supports-color
233 | dev: true
234 |
235 | /@babel/helper-simple-access@7.20.2:
236 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==}
237 | engines: {node: '>=6.9.0'}
238 | dependencies:
239 | '@babel/types': 7.21.4
240 | dev: true
241 |
242 | /@babel/helper-skip-transparent-expression-wrappers@7.20.0:
243 | resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==}
244 | engines: {node: '>=6.9.0'}
245 | dependencies:
246 | '@babel/types': 7.21.4
247 | dev: true
248 |
249 | /@babel/helper-split-export-declaration@7.18.6:
250 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
251 | engines: {node: '>=6.9.0'}
252 | dependencies:
253 | '@babel/types': 7.21.4
254 | dev: true
255 |
256 | /@babel/helper-string-parser@7.19.4:
257 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
258 | engines: {node: '>=6.9.0'}
259 | dev: true
260 |
261 | /@babel/helper-validator-identifier@7.19.1:
262 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
263 | engines: {node: '>=6.9.0'}
264 | dev: true
265 |
266 | /@babel/helper-validator-option@7.21.0:
267 | resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
268 | engines: {node: '>=6.9.0'}
269 | dev: true
270 |
271 | /@babel/helpers@7.21.0:
272 | resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==}
273 | engines: {node: '>=6.9.0'}
274 | dependencies:
275 | '@babel/template': 7.20.7
276 | '@babel/traverse': 7.21.4
277 | '@babel/types': 7.21.4
278 | transitivePeerDependencies:
279 | - supports-color
280 | dev: true
281 |
282 | /@babel/highlight@7.18.6:
283 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
284 | engines: {node: '>=6.9.0'}
285 | dependencies:
286 | '@babel/helper-validator-identifier': 7.19.1
287 | chalk: 2.4.2
288 | js-tokens: 4.0.0
289 | dev: true
290 |
291 | /@babel/parser@7.21.4:
292 | resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==}
293 | engines: {node: '>=6.0.0'}
294 | hasBin: true
295 | dependencies:
296 | '@babel/types': 7.21.4
297 | dev: true
298 |
299 | /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4):
300 | resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==}
301 | engines: {node: '>=6.9.0'}
302 | peerDependencies:
303 | '@babel/core': ^7.0.0-0
304 | dependencies:
305 | '@babel/core': 7.21.4
306 | '@babel/helper-plugin-utils': 7.20.2
307 | dev: true
308 |
309 | /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4):
310 | resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
311 | engines: {node: '>=6.9.0'}
312 | peerDependencies:
313 | '@babel/core': ^7.0.0-0
314 | dependencies:
315 | '@babel/core': 7.21.4
316 | '@babel/helper-plugin-utils': 7.20.2
317 | dev: true
318 |
319 | /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.4):
320 | resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==}
321 | engines: {node: '>=6.9.0'}
322 | peerDependencies:
323 | '@babel/core': ^7.0.0-0
324 | dependencies:
325 | '@babel/core': 7.21.4
326 | '@babel/helper-module-transforms': 7.21.2
327 | '@babel/helper-plugin-utils': 7.20.2
328 | '@babel/helper-simple-access': 7.20.2
329 | transitivePeerDependencies:
330 | - supports-color
331 | dev: true
332 |
333 | /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.21.4):
334 | resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==}
335 | engines: {node: '>=6.9.0'}
336 | peerDependencies:
337 | '@babel/core': ^7.0.0-0
338 | dependencies:
339 | '@babel/core': 7.21.4
340 | '@babel/helper-annotate-as-pure': 7.18.6
341 | '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4)
342 | '@babel/helper-plugin-utils': 7.20.2
343 | '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4)
344 | transitivePeerDependencies:
345 | - supports-color
346 | dev: true
347 |
348 | /@babel/preset-typescript@7.21.4(@babel/core@7.21.4):
349 | resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==}
350 | engines: {node: '>=6.9.0'}
351 | peerDependencies:
352 | '@babel/core': ^7.0.0-0
353 | dependencies:
354 | '@babel/core': 7.21.4
355 | '@babel/helper-plugin-utils': 7.20.2
356 | '@babel/helper-validator-option': 7.21.0
357 | '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4)
358 | '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4)
359 | '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.4)
360 | transitivePeerDependencies:
361 | - supports-color
362 | dev: true
363 |
364 | /@babel/template@7.20.7:
365 | resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
366 | engines: {node: '>=6.9.0'}
367 | dependencies:
368 | '@babel/code-frame': 7.21.4
369 | '@babel/parser': 7.21.4
370 | '@babel/types': 7.21.4
371 | dev: true
372 |
373 | /@babel/traverse@7.21.4:
374 | resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==}
375 | engines: {node: '>=6.9.0'}
376 | dependencies:
377 | '@babel/code-frame': 7.21.4
378 | '@babel/generator': 7.21.4
379 | '@babel/helper-environment-visitor': 7.18.9
380 | '@babel/helper-function-name': 7.21.0
381 | '@babel/helper-hoist-variables': 7.18.6
382 | '@babel/helper-split-export-declaration': 7.18.6
383 | '@babel/parser': 7.21.4
384 | '@babel/types': 7.21.4
385 | debug: 4.3.4
386 | globals: 11.12.0
387 | transitivePeerDependencies:
388 | - supports-color
389 | dev: true
390 |
391 | /@babel/types@7.21.4:
392 | resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==}
393 | engines: {node: '>=6.9.0'}
394 | dependencies:
395 | '@babel/helper-string-parser': 7.19.4
396 | '@babel/helper-validator-identifier': 7.19.1
397 | to-fast-properties: 2.0.0
398 | dev: true
399 |
400 | /@esbuild/android-arm64@0.17.17:
401 | resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==}
402 | engines: {node: '>=12'}
403 | cpu: [arm64]
404 | os: [android]
405 | requiresBuild: true
406 | dev: true
407 | optional: true
408 |
409 | /@esbuild/android-arm@0.17.17:
410 | resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==}
411 | engines: {node: '>=12'}
412 | cpu: [arm]
413 | os: [android]
414 | requiresBuild: true
415 | dev: true
416 | optional: true
417 |
418 | /@esbuild/android-x64@0.17.17:
419 | resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==}
420 | engines: {node: '>=12'}
421 | cpu: [x64]
422 | os: [android]
423 | requiresBuild: true
424 | dev: true
425 | optional: true
426 |
427 | /@esbuild/darwin-arm64@0.17.17:
428 | resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==}
429 | engines: {node: '>=12'}
430 | cpu: [arm64]
431 | os: [darwin]
432 | requiresBuild: true
433 | dev: true
434 | optional: true
435 |
436 | /@esbuild/darwin-x64@0.17.17:
437 | resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==}
438 | engines: {node: '>=12'}
439 | cpu: [x64]
440 | os: [darwin]
441 | requiresBuild: true
442 | dev: true
443 | optional: true
444 |
445 | /@esbuild/freebsd-arm64@0.17.17:
446 | resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==}
447 | engines: {node: '>=12'}
448 | cpu: [arm64]
449 | os: [freebsd]
450 | requiresBuild: true
451 | dev: true
452 | optional: true
453 |
454 | /@esbuild/freebsd-x64@0.17.17:
455 | resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==}
456 | engines: {node: '>=12'}
457 | cpu: [x64]
458 | os: [freebsd]
459 | requiresBuild: true
460 | dev: true
461 | optional: true
462 |
463 | /@esbuild/linux-arm64@0.17.17:
464 | resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==}
465 | engines: {node: '>=12'}
466 | cpu: [arm64]
467 | os: [linux]
468 | requiresBuild: true
469 | dev: true
470 | optional: true
471 |
472 | /@esbuild/linux-arm@0.17.17:
473 | resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==}
474 | engines: {node: '>=12'}
475 | cpu: [arm]
476 | os: [linux]
477 | requiresBuild: true
478 | dev: true
479 | optional: true
480 |
481 | /@esbuild/linux-ia32@0.17.17:
482 | resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==}
483 | engines: {node: '>=12'}
484 | cpu: [ia32]
485 | os: [linux]
486 | requiresBuild: true
487 | dev: true
488 | optional: true
489 |
490 | /@esbuild/linux-loong64@0.17.17:
491 | resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==}
492 | engines: {node: '>=12'}
493 | cpu: [loong64]
494 | os: [linux]
495 | requiresBuild: true
496 | dev: true
497 | optional: true
498 |
499 | /@esbuild/linux-mips64el@0.17.17:
500 | resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==}
501 | engines: {node: '>=12'}
502 | cpu: [mips64el]
503 | os: [linux]
504 | requiresBuild: true
505 | dev: true
506 | optional: true
507 |
508 | /@esbuild/linux-ppc64@0.17.17:
509 | resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==}
510 | engines: {node: '>=12'}
511 | cpu: [ppc64]
512 | os: [linux]
513 | requiresBuild: true
514 | dev: true
515 | optional: true
516 |
517 | /@esbuild/linux-riscv64@0.17.17:
518 | resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==}
519 | engines: {node: '>=12'}
520 | cpu: [riscv64]
521 | os: [linux]
522 | requiresBuild: true
523 | dev: true
524 | optional: true
525 |
526 | /@esbuild/linux-s390x@0.17.17:
527 | resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==}
528 | engines: {node: '>=12'}
529 | cpu: [s390x]
530 | os: [linux]
531 | requiresBuild: true
532 | dev: true
533 | optional: true
534 |
535 | /@esbuild/linux-x64@0.17.17:
536 | resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==}
537 | engines: {node: '>=12'}
538 | cpu: [x64]
539 | os: [linux]
540 | requiresBuild: true
541 | dev: true
542 | optional: true
543 |
544 | /@esbuild/netbsd-x64@0.17.17:
545 | resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==}
546 | engines: {node: '>=12'}
547 | cpu: [x64]
548 | os: [netbsd]
549 | requiresBuild: true
550 | dev: true
551 | optional: true
552 |
553 | /@esbuild/openbsd-x64@0.17.17:
554 | resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==}
555 | engines: {node: '>=12'}
556 | cpu: [x64]
557 | os: [openbsd]
558 | requiresBuild: true
559 | dev: true
560 | optional: true
561 |
562 | /@esbuild/sunos-x64@0.17.17:
563 | resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==}
564 | engines: {node: '>=12'}
565 | cpu: [x64]
566 | os: [sunos]
567 | requiresBuild: true
568 | dev: true
569 | optional: true
570 |
571 | /@esbuild/win32-arm64@0.17.17:
572 | resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==}
573 | engines: {node: '>=12'}
574 | cpu: [arm64]
575 | os: [win32]
576 | requiresBuild: true
577 | dev: true
578 | optional: true
579 |
580 | /@esbuild/win32-ia32@0.17.17:
581 | resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==}
582 | engines: {node: '>=12'}
583 | cpu: [ia32]
584 | os: [win32]
585 | requiresBuild: true
586 | dev: true
587 | optional: true
588 |
589 | /@esbuild/win32-x64@0.17.17:
590 | resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==}
591 | engines: {node: '>=12'}
592 | cpu: [x64]
593 | os: [win32]
594 | requiresBuild: true
595 | dev: true
596 | optional: true
597 |
598 | /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0):
599 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
600 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
601 | peerDependencies:
602 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
603 | dependencies:
604 | eslint: 8.38.0
605 | eslint-visitor-keys: 3.4.0
606 | dev: true
607 |
608 | /@eslint-community/regexpp@4.5.0:
609 | resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==}
610 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
611 | dev: true
612 |
613 | /@eslint/eslintrc@2.0.2:
614 | resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==}
615 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
616 | dependencies:
617 | ajv: 6.12.6
618 | debug: 4.3.4
619 | espree: 9.5.1
620 | globals: 13.20.0
621 | ignore: 5.2.4
622 | import-fresh: 3.3.0
623 | js-yaml: 4.1.0
624 | minimatch: 3.1.2
625 | strip-json-comments: 3.1.1
626 | transitivePeerDependencies:
627 | - supports-color
628 | dev: true
629 |
630 | /@eslint/js@8.38.0:
631 | resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==}
632 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
633 | dev: true
634 |
635 | /@humanwhocodes/config-array@0.11.8:
636 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
637 | engines: {node: '>=10.10.0'}
638 | dependencies:
639 | '@humanwhocodes/object-schema': 1.2.1
640 | debug: 4.3.4
641 | minimatch: 3.1.2
642 | transitivePeerDependencies:
643 | - supports-color
644 | dev: true
645 |
646 | /@humanwhocodes/module-importer@1.0.1:
647 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
648 | engines: {node: '>=12.22'}
649 | dev: true
650 |
651 | /@humanwhocodes/object-schema@1.2.1:
652 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
653 | dev: true
654 |
655 | /@jridgewell/gen-mapping@0.3.3:
656 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
657 | engines: {node: '>=6.0.0'}
658 | dependencies:
659 | '@jridgewell/set-array': 1.1.2
660 | '@jridgewell/sourcemap-codec': 1.4.15
661 | '@jridgewell/trace-mapping': 0.3.18
662 | dev: true
663 |
664 | /@jridgewell/resolve-uri@3.1.0:
665 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
666 | engines: {node: '>=6.0.0'}
667 | dev: true
668 |
669 | /@jridgewell/set-array@1.1.2:
670 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
671 | engines: {node: '>=6.0.0'}
672 | dev: true
673 |
674 | /@jridgewell/sourcemap-codec@1.4.14:
675 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
676 | dev: true
677 |
678 | /@jridgewell/sourcemap-codec@1.4.15:
679 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
680 | dev: true
681 |
682 | /@jridgewell/trace-mapping@0.3.18:
683 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
684 | dependencies:
685 | '@jridgewell/resolve-uri': 3.1.0
686 | '@jridgewell/sourcemap-codec': 1.4.14
687 | dev: true
688 |
689 | /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3:
690 | resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==}
691 | requiresBuild: true
692 | dev: true
693 | optional: true
694 |
695 | /@nodelib/fs.scandir@2.1.5:
696 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
697 | engines: {node: '>= 8'}
698 | dependencies:
699 | '@nodelib/fs.stat': 2.0.5
700 | run-parallel: 1.2.0
701 | dev: true
702 |
703 | /@nodelib/fs.stat@2.0.5:
704 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
705 | engines: {node: '>= 8'}
706 | dev: true
707 |
708 | /@nodelib/fs.walk@1.2.8:
709 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
710 | engines: {node: '>= 8'}
711 | dependencies:
712 | '@nodelib/fs.scandir': 2.1.5
713 | fastq: 1.15.0
714 | dev: true
715 |
716 | /@types/json5@0.0.29:
717 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
718 | dev: true
719 |
720 | /@types/node@18.16.1:
721 | resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==}
722 | dev: true
723 |
724 | /acorn-jsx@5.3.2(acorn@8.8.2):
725 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
726 | peerDependencies:
727 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
728 | dependencies:
729 | acorn: 8.8.2
730 | dev: true
731 |
732 | /acorn@8.8.2:
733 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
734 | engines: {node: '>=0.4.0'}
735 | hasBin: true
736 | dev: true
737 |
738 | /ajv@6.12.6:
739 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
740 | dependencies:
741 | fast-deep-equal: 3.1.3
742 | fast-json-stable-stringify: 2.1.0
743 | json-schema-traverse: 0.4.1
744 | uri-js: 4.4.1
745 | dev: true
746 |
747 | /ansi-regex@5.0.1:
748 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
749 | engines: {node: '>=8'}
750 | dev: true
751 |
752 | /ansi-styles@3.2.1:
753 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
754 | engines: {node: '>=4'}
755 | dependencies:
756 | color-convert: 1.9.3
757 | dev: true
758 |
759 | /ansi-styles@4.3.0:
760 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
761 | engines: {node: '>=8'}
762 | dependencies:
763 | color-convert: 2.0.1
764 | dev: true
765 |
766 | /anymatch@3.1.3:
767 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
768 | engines: {node: '>= 8'}
769 | dependencies:
770 | normalize-path: 3.0.0
771 | picomatch: 2.3.1
772 | dev: true
773 | optional: true
774 |
775 | /argparse@2.0.1:
776 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
777 | dev: true
778 |
779 | /array-buffer-byte-length@1.0.0:
780 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
781 | dependencies:
782 | call-bind: 1.0.2
783 | is-array-buffer: 3.0.2
784 | dev: true
785 |
786 | /array-includes@3.1.6:
787 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
788 | engines: {node: '>= 0.4'}
789 | dependencies:
790 | call-bind: 1.0.2
791 | define-properties: 1.2.0
792 | es-abstract: 1.21.2
793 | get-intrinsic: 1.2.0
794 | is-string: 1.0.7
795 | dev: true
796 |
797 | /array.prototype.flat@1.3.1:
798 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
799 | engines: {node: '>= 0.4'}
800 | dependencies:
801 | call-bind: 1.0.2
802 | define-properties: 1.2.0
803 | es-abstract: 1.21.2
804 | es-shim-unscopables: 1.0.0
805 | dev: true
806 |
807 | /array.prototype.flatmap@1.3.1:
808 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
809 | engines: {node: '>= 0.4'}
810 | dependencies:
811 | call-bind: 1.0.2
812 | define-properties: 1.2.0
813 | es-abstract: 1.21.2
814 | es-shim-unscopables: 1.0.0
815 | dev: true
816 |
817 | /available-typed-arrays@1.0.5:
818 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
819 | engines: {node: '>= 0.4'}
820 | dev: true
821 |
822 | /balanced-match@1.0.2:
823 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
824 | dev: true
825 |
826 | /binary-extensions@2.2.0:
827 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
828 | engines: {node: '>=8'}
829 | dev: true
830 | optional: true
831 |
832 | /brace-expansion@1.1.11:
833 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
834 | dependencies:
835 | balanced-match: 1.0.2
836 | concat-map: 0.0.1
837 | dev: true
838 |
839 | /braces@3.0.2:
840 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
841 | engines: {node: '>=8'}
842 | dependencies:
843 | fill-range: 7.0.1
844 | dev: true
845 | optional: true
846 |
847 | /browserslist@4.21.5:
848 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
849 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
850 | hasBin: true
851 | dependencies:
852 | caniuse-lite: 1.0.30001481
853 | electron-to-chromium: 1.4.369
854 | node-releases: 2.0.10
855 | update-browserslist-db: 1.0.11(browserslist@4.21.5)
856 | dev: true
857 |
858 | /builtins@5.0.1:
859 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
860 | dependencies:
861 | semver: 7.5.0
862 | dev: true
863 |
864 | /call-bind@1.0.2:
865 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
866 | dependencies:
867 | function-bind: 1.1.1
868 | get-intrinsic: 1.2.0
869 | dev: true
870 |
871 | /callsites@3.1.0:
872 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
873 | engines: {node: '>=6'}
874 | dev: true
875 |
876 | /caniuse-lite@1.0.30001481:
877 | resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==}
878 | dev: true
879 |
880 | /chalk@2.4.2:
881 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
882 | engines: {node: '>=4'}
883 | dependencies:
884 | ansi-styles: 3.2.1
885 | escape-string-regexp: 1.0.5
886 | supports-color: 5.5.0
887 | dev: true
888 |
889 | /chalk@4.1.2:
890 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
891 | engines: {node: '>=10'}
892 | dependencies:
893 | ansi-styles: 4.3.0
894 | supports-color: 7.2.0
895 | dev: true
896 |
897 | /chokidar@3.5.3:
898 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
899 | engines: {node: '>= 8.10.0'}
900 | requiresBuild: true
901 | dependencies:
902 | anymatch: 3.1.3
903 | braces: 3.0.2
904 | glob-parent: 5.1.2
905 | is-binary-path: 2.1.0
906 | is-glob: 4.0.3
907 | normalize-path: 3.0.0
908 | readdirp: 3.6.0
909 | optionalDependencies:
910 | fsevents: 2.3.2
911 | dev: true
912 | optional: true
913 |
914 | /color-convert@1.9.3:
915 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
916 | dependencies:
917 | color-name: 1.1.3
918 | dev: true
919 |
920 | /color-convert@2.0.1:
921 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
922 | engines: {node: '>=7.0.0'}
923 | dependencies:
924 | color-name: 1.1.4
925 | dev: true
926 |
927 | /color-name@1.1.3:
928 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
929 | dev: true
930 |
931 | /color-name@1.1.4:
932 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
933 | dev: true
934 |
935 | /commander@4.1.1:
936 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
937 | engines: {node: '>= 6'}
938 | dev: true
939 |
940 | /concat-map@0.0.1:
941 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
942 | dev: true
943 |
944 | /convert-source-map@1.9.0:
945 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
946 | dev: true
947 |
948 | /cross-spawn@7.0.3:
949 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
950 | engines: {node: '>= 8'}
951 | dependencies:
952 | path-key: 3.1.1
953 | shebang-command: 2.0.0
954 | which: 2.0.2
955 | dev: true
956 |
957 | /debug@3.2.7:
958 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
959 | peerDependencies:
960 | supports-color: '*'
961 | peerDependenciesMeta:
962 | supports-color:
963 | optional: true
964 | dependencies:
965 | ms: 2.1.3
966 | dev: true
967 |
968 | /debug@4.3.4:
969 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
970 | engines: {node: '>=6.0'}
971 | peerDependencies:
972 | supports-color: '*'
973 | peerDependenciesMeta:
974 | supports-color:
975 | optional: true
976 | dependencies:
977 | ms: 2.1.2
978 | dev: true
979 |
980 | /deep-is@0.1.4:
981 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
982 | dev: true
983 |
984 | /define-properties@1.2.0:
985 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
986 | engines: {node: '>= 0.4'}
987 | dependencies:
988 | has-property-descriptors: 1.0.0
989 | object-keys: 1.1.1
990 | dev: true
991 |
992 | /doctrine@2.1.0:
993 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
994 | engines: {node: '>=0.10.0'}
995 | dependencies:
996 | esutils: 2.0.3
997 | dev: true
998 |
999 | /doctrine@3.0.0:
1000 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1001 | engines: {node: '>=6.0.0'}
1002 | dependencies:
1003 | esutils: 2.0.3
1004 | dev: true
1005 |
1006 | /electron-to-chromium@1.4.369:
1007 | resolution: {integrity: sha512-LfxbHXdA/S+qyoTEA4EbhxGjrxx7WK2h6yb5K2v0UCOufUKX+VZaHbl3svlzZfv9sGseym/g3Ne4DpsgRULmqg==}
1008 | dev: true
1009 |
1010 | /es-abstract@1.21.2:
1011 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
1012 | engines: {node: '>= 0.4'}
1013 | dependencies:
1014 | array-buffer-byte-length: 1.0.0
1015 | available-typed-arrays: 1.0.5
1016 | call-bind: 1.0.2
1017 | es-set-tostringtag: 2.0.1
1018 | es-to-primitive: 1.2.1
1019 | function.prototype.name: 1.1.5
1020 | get-intrinsic: 1.2.0
1021 | get-symbol-description: 1.0.0
1022 | globalthis: 1.0.3
1023 | gopd: 1.0.1
1024 | has: 1.0.3
1025 | has-property-descriptors: 1.0.0
1026 | has-proto: 1.0.1
1027 | has-symbols: 1.0.3
1028 | internal-slot: 1.0.5
1029 | is-array-buffer: 3.0.2
1030 | is-callable: 1.2.7
1031 | is-negative-zero: 2.0.2
1032 | is-regex: 1.1.4
1033 | is-shared-array-buffer: 1.0.2
1034 | is-string: 1.0.7
1035 | is-typed-array: 1.1.10
1036 | is-weakref: 1.0.2
1037 | object-inspect: 1.12.3
1038 | object-keys: 1.1.1
1039 | object.assign: 4.1.4
1040 | regexp.prototype.flags: 1.5.0
1041 | safe-regex-test: 1.0.0
1042 | string.prototype.trim: 1.2.7
1043 | string.prototype.trimend: 1.0.6
1044 | string.prototype.trimstart: 1.0.6
1045 | typed-array-length: 1.0.4
1046 | unbox-primitive: 1.0.2
1047 | which-typed-array: 1.1.9
1048 | dev: true
1049 |
1050 | /es-set-tostringtag@2.0.1:
1051 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
1052 | engines: {node: '>= 0.4'}
1053 | dependencies:
1054 | get-intrinsic: 1.2.0
1055 | has: 1.0.3
1056 | has-tostringtag: 1.0.0
1057 | dev: true
1058 |
1059 | /es-shim-unscopables@1.0.0:
1060 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1061 | dependencies:
1062 | has: 1.0.3
1063 | dev: true
1064 |
1065 | /es-to-primitive@1.2.1:
1066 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1067 | engines: {node: '>= 0.4'}
1068 | dependencies:
1069 | is-callable: 1.2.7
1070 | is-date-object: 1.0.5
1071 | is-symbol: 1.0.4
1072 | dev: true
1073 |
1074 | /esbuild@0.17.17:
1075 | resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==}
1076 | engines: {node: '>=12'}
1077 | hasBin: true
1078 | requiresBuild: true
1079 | optionalDependencies:
1080 | '@esbuild/android-arm': 0.17.17
1081 | '@esbuild/android-arm64': 0.17.17
1082 | '@esbuild/android-x64': 0.17.17
1083 | '@esbuild/darwin-arm64': 0.17.17
1084 | '@esbuild/darwin-x64': 0.17.17
1085 | '@esbuild/freebsd-arm64': 0.17.17
1086 | '@esbuild/freebsd-x64': 0.17.17
1087 | '@esbuild/linux-arm': 0.17.17
1088 | '@esbuild/linux-arm64': 0.17.17
1089 | '@esbuild/linux-ia32': 0.17.17
1090 | '@esbuild/linux-loong64': 0.17.17
1091 | '@esbuild/linux-mips64el': 0.17.17
1092 | '@esbuild/linux-ppc64': 0.17.17
1093 | '@esbuild/linux-riscv64': 0.17.17
1094 | '@esbuild/linux-s390x': 0.17.17
1095 | '@esbuild/linux-x64': 0.17.17
1096 | '@esbuild/netbsd-x64': 0.17.17
1097 | '@esbuild/openbsd-x64': 0.17.17
1098 | '@esbuild/sunos-x64': 0.17.17
1099 | '@esbuild/win32-arm64': 0.17.17
1100 | '@esbuild/win32-ia32': 0.17.17
1101 | '@esbuild/win32-x64': 0.17.17
1102 | dev: true
1103 |
1104 | /escalade@3.1.1:
1105 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1106 | engines: {node: '>=6'}
1107 | dev: true
1108 |
1109 | /escape-string-regexp@1.0.5:
1110 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1111 | engines: {node: '>=0.8.0'}
1112 | dev: true
1113 |
1114 | /escape-string-regexp@4.0.0:
1115 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1116 | engines: {node: '>=10'}
1117 | dev: true
1118 |
1119 | /eslint-config-prettier@8.8.0(eslint@8.38.0):
1120 | resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==}
1121 | hasBin: true
1122 | peerDependencies:
1123 | eslint: '>=7.0.0'
1124 | dependencies:
1125 | eslint: 8.38.0
1126 | dev: true
1127 |
1128 | /eslint-config-standard@17.0.0(eslint-plugin-import@2.27.5)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.38.0):
1129 | resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==}
1130 | peerDependencies:
1131 | eslint: ^8.0.1
1132 | eslint-plugin-import: ^2.25.2
1133 | eslint-plugin-n: ^15.0.0
1134 | eslint-plugin-promise: ^6.0.0
1135 | dependencies:
1136 | eslint: 8.38.0
1137 | eslint-plugin-import: 2.27.5(eslint@8.38.0)
1138 | eslint-plugin-n: 15.7.0(eslint@8.38.0)
1139 | eslint-plugin-promise: 6.1.1(eslint@8.38.0)
1140 | dev: true
1141 |
1142 | /eslint-import-resolver-node@0.3.7:
1143 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
1144 | dependencies:
1145 | debug: 3.2.7
1146 | is-core-module: 2.12.0
1147 | resolve: 1.22.2
1148 | transitivePeerDependencies:
1149 | - supports-color
1150 | dev: true
1151 |
1152 | /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.38.0):
1153 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1154 | engines: {node: '>=4'}
1155 | peerDependencies:
1156 | '@typescript-eslint/parser': '*'
1157 | eslint: '*'
1158 | eslint-import-resolver-node: '*'
1159 | eslint-import-resolver-typescript: '*'
1160 | eslint-import-resolver-webpack: '*'
1161 | peerDependenciesMeta:
1162 | '@typescript-eslint/parser':
1163 | optional: true
1164 | eslint:
1165 | optional: true
1166 | eslint-import-resolver-node:
1167 | optional: true
1168 | eslint-import-resolver-typescript:
1169 | optional: true
1170 | eslint-import-resolver-webpack:
1171 | optional: true
1172 | dependencies:
1173 | debug: 3.2.7
1174 | eslint: 8.38.0
1175 | eslint-import-resolver-node: 0.3.7
1176 | transitivePeerDependencies:
1177 | - supports-color
1178 | dev: true
1179 |
1180 | /eslint-plugin-es@3.0.1(eslint@8.38.0):
1181 | resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==}
1182 | engines: {node: '>=8.10.0'}
1183 | peerDependencies:
1184 | eslint: '>=4.19.1'
1185 | dependencies:
1186 | eslint: 8.38.0
1187 | eslint-utils: 2.1.0
1188 | regexpp: 3.2.0
1189 | dev: true
1190 |
1191 | /eslint-plugin-es@4.1.0(eslint@8.38.0):
1192 | resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==}
1193 | engines: {node: '>=8.10.0'}
1194 | peerDependencies:
1195 | eslint: '>=4.19.1'
1196 | dependencies:
1197 | eslint: 8.38.0
1198 | eslint-utils: 2.1.0
1199 | regexpp: 3.2.0
1200 | dev: true
1201 |
1202 | /eslint-plugin-import@2.27.5(eslint@8.38.0):
1203 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
1204 | engines: {node: '>=4'}
1205 | peerDependencies:
1206 | '@typescript-eslint/parser': '*'
1207 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
1208 | peerDependenciesMeta:
1209 | '@typescript-eslint/parser':
1210 | optional: true
1211 | dependencies:
1212 | array-includes: 3.1.6
1213 | array.prototype.flat: 1.3.1
1214 | array.prototype.flatmap: 1.3.1
1215 | debug: 3.2.7
1216 | doctrine: 2.1.0
1217 | eslint: 8.38.0
1218 | eslint-import-resolver-node: 0.3.7
1219 | eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.38.0)
1220 | has: 1.0.3
1221 | is-core-module: 2.12.0
1222 | is-glob: 4.0.3
1223 | minimatch: 3.1.2
1224 | object.values: 1.1.6
1225 | resolve: 1.22.2
1226 | semver: 6.3.0
1227 | tsconfig-paths: 3.14.2
1228 | transitivePeerDependencies:
1229 | - eslint-import-resolver-typescript
1230 | - eslint-import-resolver-webpack
1231 | - supports-color
1232 | dev: true
1233 |
1234 | /eslint-plugin-n@15.7.0(eslint@8.38.0):
1235 | resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==}
1236 | engines: {node: '>=12.22.0'}
1237 | peerDependencies:
1238 | eslint: '>=7.0.0'
1239 | dependencies:
1240 | builtins: 5.0.1
1241 | eslint: 8.38.0
1242 | eslint-plugin-es: 4.1.0(eslint@8.38.0)
1243 | eslint-utils: 3.0.0(eslint@8.38.0)
1244 | ignore: 5.2.4
1245 | is-core-module: 2.12.0
1246 | minimatch: 3.1.2
1247 | resolve: 1.22.2
1248 | semver: 7.5.0
1249 | dev: true
1250 |
1251 | /eslint-plugin-node@11.1.0(eslint@8.38.0):
1252 | resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==}
1253 | engines: {node: '>=8.10.0'}
1254 | peerDependencies:
1255 | eslint: '>=5.16.0'
1256 | dependencies:
1257 | eslint: 8.38.0
1258 | eslint-plugin-es: 3.0.1(eslint@8.38.0)
1259 | eslint-utils: 2.1.0
1260 | ignore: 5.2.4
1261 | minimatch: 3.1.2
1262 | resolve: 1.22.2
1263 | semver: 6.3.0
1264 | dev: true
1265 |
1266 | /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7):
1267 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
1268 | engines: {node: '>=12.0.0'}
1269 | peerDependencies:
1270 | eslint: '>=7.28.0'
1271 | eslint-config-prettier: '*'
1272 | prettier: '>=2.0.0'
1273 | peerDependenciesMeta:
1274 | eslint-config-prettier:
1275 | optional: true
1276 | dependencies:
1277 | eslint: 8.38.0
1278 | eslint-config-prettier: 8.8.0(eslint@8.38.0)
1279 | prettier: 2.8.7
1280 | prettier-linter-helpers: 1.0.0
1281 | dev: true
1282 |
1283 | /eslint-plugin-promise@6.1.1(eslint@8.38.0):
1284 | resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==}
1285 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1286 | peerDependencies:
1287 | eslint: ^7.0.0 || ^8.0.0
1288 | dependencies:
1289 | eslint: 8.38.0
1290 | dev: true
1291 |
1292 | /eslint-scope@7.2.0:
1293 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==}
1294 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1295 | dependencies:
1296 | esrecurse: 4.3.0
1297 | estraverse: 5.3.0
1298 | dev: true
1299 |
1300 | /eslint-utils@2.1.0:
1301 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
1302 | engines: {node: '>=6'}
1303 | dependencies:
1304 | eslint-visitor-keys: 1.3.0
1305 | dev: true
1306 |
1307 | /eslint-utils@3.0.0(eslint@8.38.0):
1308 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
1309 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
1310 | peerDependencies:
1311 | eslint: '>=5'
1312 | dependencies:
1313 | eslint: 8.38.0
1314 | eslint-visitor-keys: 2.1.0
1315 | dev: true
1316 |
1317 | /eslint-visitor-keys@1.3.0:
1318 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
1319 | engines: {node: '>=4'}
1320 | dev: true
1321 |
1322 | /eslint-visitor-keys@2.1.0:
1323 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
1324 | engines: {node: '>=10'}
1325 | dev: true
1326 |
1327 | /eslint-visitor-keys@3.4.0:
1328 | resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==}
1329 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1330 | dev: true
1331 |
1332 | /eslint@8.38.0:
1333 | resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==}
1334 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1335 | hasBin: true
1336 | dependencies:
1337 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0)
1338 | '@eslint-community/regexpp': 4.5.0
1339 | '@eslint/eslintrc': 2.0.2
1340 | '@eslint/js': 8.38.0
1341 | '@humanwhocodes/config-array': 0.11.8
1342 | '@humanwhocodes/module-importer': 1.0.1
1343 | '@nodelib/fs.walk': 1.2.8
1344 | ajv: 6.12.6
1345 | chalk: 4.1.2
1346 | cross-spawn: 7.0.3
1347 | debug: 4.3.4
1348 | doctrine: 3.0.0
1349 | escape-string-regexp: 4.0.0
1350 | eslint-scope: 7.2.0
1351 | eslint-visitor-keys: 3.4.0
1352 | espree: 9.5.1
1353 | esquery: 1.5.0
1354 | esutils: 2.0.3
1355 | fast-deep-equal: 3.1.3
1356 | file-entry-cache: 6.0.1
1357 | find-up: 5.0.0
1358 | glob-parent: 6.0.2
1359 | globals: 13.20.0
1360 | grapheme-splitter: 1.0.4
1361 | ignore: 5.2.4
1362 | import-fresh: 3.3.0
1363 | imurmurhash: 0.1.4
1364 | is-glob: 4.0.3
1365 | is-path-inside: 3.0.3
1366 | js-sdsl: 4.4.0
1367 | js-yaml: 4.1.0
1368 | json-stable-stringify-without-jsonify: 1.0.1
1369 | levn: 0.4.1
1370 | lodash.merge: 4.6.2
1371 | minimatch: 3.1.2
1372 | natural-compare: 1.4.0
1373 | optionator: 0.9.1
1374 | strip-ansi: 6.0.1
1375 | strip-json-comments: 3.1.1
1376 | text-table: 0.2.0
1377 | transitivePeerDependencies:
1378 | - supports-color
1379 | dev: true
1380 |
1381 | /espree@9.5.1:
1382 | resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==}
1383 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1384 | dependencies:
1385 | acorn: 8.8.2
1386 | acorn-jsx: 5.3.2(acorn@8.8.2)
1387 | eslint-visitor-keys: 3.4.0
1388 | dev: true
1389 |
1390 | /esquery@1.5.0:
1391 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1392 | engines: {node: '>=0.10'}
1393 | dependencies:
1394 | estraverse: 5.3.0
1395 | dev: true
1396 |
1397 | /esrecurse@4.3.0:
1398 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1399 | engines: {node: '>=4.0'}
1400 | dependencies:
1401 | estraverse: 5.3.0
1402 | dev: true
1403 |
1404 | /estraverse@5.3.0:
1405 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1406 | engines: {node: '>=4.0'}
1407 | dev: true
1408 |
1409 | /esutils@2.0.3:
1410 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1411 | engines: {node: '>=0.10.0'}
1412 | dev: true
1413 |
1414 | /fast-deep-equal@3.1.3:
1415 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1416 | dev: true
1417 |
1418 | /fast-diff@1.2.0:
1419 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
1420 | dev: true
1421 |
1422 | /fast-json-stable-stringify@2.1.0:
1423 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1424 | dev: true
1425 |
1426 | /fast-levenshtein@2.0.6:
1427 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1428 | dev: true
1429 |
1430 | /fastq@1.15.0:
1431 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1432 | dependencies:
1433 | reusify: 1.0.4
1434 | dev: true
1435 |
1436 | /file-entry-cache@6.0.1:
1437 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1438 | engines: {node: ^10.12.0 || >=12.0.0}
1439 | dependencies:
1440 | flat-cache: 3.0.4
1441 | dev: true
1442 |
1443 | /fill-range@7.0.1:
1444 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1445 | engines: {node: '>=8'}
1446 | dependencies:
1447 | to-regex-range: 5.0.1
1448 | dev: true
1449 | optional: true
1450 |
1451 | /find-up@5.0.0:
1452 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1453 | engines: {node: '>=10'}
1454 | dependencies:
1455 | locate-path: 6.0.0
1456 | path-exists: 4.0.0
1457 | dev: true
1458 |
1459 | /flat-cache@3.0.4:
1460 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1461 | engines: {node: ^10.12.0 || >=12.0.0}
1462 | dependencies:
1463 | flatted: 3.2.7
1464 | rimraf: 3.0.2
1465 | dev: true
1466 |
1467 | /flatted@3.2.7:
1468 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
1469 | dev: true
1470 |
1471 | /for-each@0.3.3:
1472 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
1473 | dependencies:
1474 | is-callable: 1.2.7
1475 | dev: true
1476 |
1477 | /fs-readdir-recursive@1.1.0:
1478 | resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==}
1479 | dev: true
1480 |
1481 | /fs.realpath@1.0.0:
1482 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1483 | dev: true
1484 |
1485 | /fsevents@2.3.2:
1486 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1487 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1488 | os: [darwin]
1489 | requiresBuild: true
1490 | dev: true
1491 | optional: true
1492 |
1493 | /function-bind@1.1.1:
1494 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1495 | dev: true
1496 |
1497 | /function.prototype.name@1.1.5:
1498 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
1499 | engines: {node: '>= 0.4'}
1500 | dependencies:
1501 | call-bind: 1.0.2
1502 | define-properties: 1.2.0
1503 | es-abstract: 1.21.2
1504 | functions-have-names: 1.2.3
1505 | dev: true
1506 |
1507 | /functions-have-names@1.2.3:
1508 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1509 | dev: true
1510 |
1511 | /gensync@1.0.0-beta.2:
1512 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1513 | engines: {node: '>=6.9.0'}
1514 | dev: true
1515 |
1516 | /get-intrinsic@1.2.0:
1517 | resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
1518 | dependencies:
1519 | function-bind: 1.1.1
1520 | has: 1.0.3
1521 | has-symbols: 1.0.3
1522 | dev: true
1523 |
1524 | /get-symbol-description@1.0.0:
1525 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1526 | engines: {node: '>= 0.4'}
1527 | dependencies:
1528 | call-bind: 1.0.2
1529 | get-intrinsic: 1.2.0
1530 | dev: true
1531 |
1532 | /glob-parent@5.1.2:
1533 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1534 | engines: {node: '>= 6'}
1535 | dependencies:
1536 | is-glob: 4.0.3
1537 | dev: true
1538 | optional: true
1539 |
1540 | /glob-parent@6.0.2:
1541 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1542 | engines: {node: '>=10.13.0'}
1543 | dependencies:
1544 | is-glob: 4.0.3
1545 | dev: true
1546 |
1547 | /glob@7.2.3:
1548 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1549 | dependencies:
1550 | fs.realpath: 1.0.0
1551 | inflight: 1.0.6
1552 | inherits: 2.0.4
1553 | minimatch: 3.1.2
1554 | once: 1.4.0
1555 | path-is-absolute: 1.0.1
1556 | dev: true
1557 |
1558 | /globals@11.12.0:
1559 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1560 | engines: {node: '>=4'}
1561 | dev: true
1562 |
1563 | /globals@13.20.0:
1564 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
1565 | engines: {node: '>=8'}
1566 | dependencies:
1567 | type-fest: 0.20.2
1568 | dev: true
1569 |
1570 | /globalthis@1.0.3:
1571 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
1572 | engines: {node: '>= 0.4'}
1573 | dependencies:
1574 | define-properties: 1.2.0
1575 | dev: true
1576 |
1577 | /gopd@1.0.1:
1578 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1579 | dependencies:
1580 | get-intrinsic: 1.2.0
1581 | dev: true
1582 |
1583 | /grapheme-splitter@1.0.4:
1584 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
1585 | dev: true
1586 |
1587 | /has-bigints@1.0.2:
1588 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1589 | dev: true
1590 |
1591 | /has-flag@3.0.0:
1592 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1593 | engines: {node: '>=4'}
1594 | dev: true
1595 |
1596 | /has-flag@4.0.0:
1597 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1598 | engines: {node: '>=8'}
1599 | dev: true
1600 |
1601 | /has-property-descriptors@1.0.0:
1602 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1603 | dependencies:
1604 | get-intrinsic: 1.2.0
1605 | dev: true
1606 |
1607 | /has-proto@1.0.1:
1608 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1609 | engines: {node: '>= 0.4'}
1610 | dev: true
1611 |
1612 | /has-symbols@1.0.3:
1613 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1614 | engines: {node: '>= 0.4'}
1615 | dev: true
1616 |
1617 | /has-tostringtag@1.0.0:
1618 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1619 | engines: {node: '>= 0.4'}
1620 | dependencies:
1621 | has-symbols: 1.0.3
1622 | dev: true
1623 |
1624 | /has@1.0.3:
1625 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1626 | engines: {node: '>= 0.4.0'}
1627 | dependencies:
1628 | function-bind: 1.1.1
1629 | dev: true
1630 |
1631 | /ignore@5.2.4:
1632 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1633 | engines: {node: '>= 4'}
1634 | dev: true
1635 |
1636 | /import-fresh@3.3.0:
1637 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1638 | engines: {node: '>=6'}
1639 | dependencies:
1640 | parent-module: 1.0.1
1641 | resolve-from: 4.0.0
1642 | dev: true
1643 |
1644 | /imurmurhash@0.1.4:
1645 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1646 | engines: {node: '>=0.8.19'}
1647 | dev: true
1648 |
1649 | /inflight@1.0.6:
1650 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1651 | dependencies:
1652 | once: 1.4.0
1653 | wrappy: 1.0.2
1654 | dev: true
1655 |
1656 | /inherits@2.0.4:
1657 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1658 | dev: true
1659 |
1660 | /internal-slot@1.0.5:
1661 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
1662 | engines: {node: '>= 0.4'}
1663 | dependencies:
1664 | get-intrinsic: 1.2.0
1665 | has: 1.0.3
1666 | side-channel: 1.0.4
1667 | dev: true
1668 |
1669 | /is-array-buffer@3.0.2:
1670 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
1671 | dependencies:
1672 | call-bind: 1.0.2
1673 | get-intrinsic: 1.2.0
1674 | is-typed-array: 1.1.10
1675 | dev: true
1676 |
1677 | /is-bigint@1.0.4:
1678 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1679 | dependencies:
1680 | has-bigints: 1.0.2
1681 | dev: true
1682 |
1683 | /is-binary-path@2.1.0:
1684 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1685 | engines: {node: '>=8'}
1686 | dependencies:
1687 | binary-extensions: 2.2.0
1688 | dev: true
1689 | optional: true
1690 |
1691 | /is-boolean-object@1.1.2:
1692 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1693 | engines: {node: '>= 0.4'}
1694 | dependencies:
1695 | call-bind: 1.0.2
1696 | has-tostringtag: 1.0.0
1697 | dev: true
1698 |
1699 | /is-callable@1.2.7:
1700 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1701 | engines: {node: '>= 0.4'}
1702 | dev: true
1703 |
1704 | /is-core-module@2.12.0:
1705 | resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==}
1706 | dependencies:
1707 | has: 1.0.3
1708 | dev: true
1709 |
1710 | /is-date-object@1.0.5:
1711 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1712 | engines: {node: '>= 0.4'}
1713 | dependencies:
1714 | has-tostringtag: 1.0.0
1715 | dev: true
1716 |
1717 | /is-extglob@2.1.1:
1718 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1719 | engines: {node: '>=0.10.0'}
1720 | dev: true
1721 |
1722 | /is-glob@4.0.3:
1723 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1724 | engines: {node: '>=0.10.0'}
1725 | dependencies:
1726 | is-extglob: 2.1.1
1727 | dev: true
1728 |
1729 | /is-negative-zero@2.0.2:
1730 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1731 | engines: {node: '>= 0.4'}
1732 | dev: true
1733 |
1734 | /is-number-object@1.0.7:
1735 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1736 | engines: {node: '>= 0.4'}
1737 | dependencies:
1738 | has-tostringtag: 1.0.0
1739 | dev: true
1740 |
1741 | /is-number@7.0.0:
1742 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1743 | engines: {node: '>=0.12.0'}
1744 | dev: true
1745 | optional: true
1746 |
1747 | /is-path-inside@3.0.3:
1748 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1749 | engines: {node: '>=8'}
1750 | dev: true
1751 |
1752 | /is-regex@1.1.4:
1753 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1754 | engines: {node: '>= 0.4'}
1755 | dependencies:
1756 | call-bind: 1.0.2
1757 | has-tostringtag: 1.0.0
1758 | dev: true
1759 |
1760 | /is-shared-array-buffer@1.0.2:
1761 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1762 | dependencies:
1763 | call-bind: 1.0.2
1764 | dev: true
1765 |
1766 | /is-string@1.0.7:
1767 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1768 | engines: {node: '>= 0.4'}
1769 | dependencies:
1770 | has-tostringtag: 1.0.0
1771 | dev: true
1772 |
1773 | /is-symbol@1.0.4:
1774 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1775 | engines: {node: '>= 0.4'}
1776 | dependencies:
1777 | has-symbols: 1.0.3
1778 | dev: true
1779 |
1780 | /is-typed-array@1.1.10:
1781 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
1782 | engines: {node: '>= 0.4'}
1783 | dependencies:
1784 | available-typed-arrays: 1.0.5
1785 | call-bind: 1.0.2
1786 | for-each: 0.3.3
1787 | gopd: 1.0.1
1788 | has-tostringtag: 1.0.0
1789 | dev: true
1790 |
1791 | /is-weakref@1.0.2:
1792 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1793 | dependencies:
1794 | call-bind: 1.0.2
1795 | dev: true
1796 |
1797 | /isexe@2.0.0:
1798 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1799 | dev: true
1800 |
1801 | /js-sdsl@4.4.0:
1802 | resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==}
1803 | dev: true
1804 |
1805 | /js-tokens@4.0.0:
1806 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1807 | dev: true
1808 |
1809 | /js-yaml@4.1.0:
1810 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1811 | hasBin: true
1812 | dependencies:
1813 | argparse: 2.0.1
1814 | dev: true
1815 |
1816 | /jsesc@2.5.2:
1817 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1818 | engines: {node: '>=4'}
1819 | hasBin: true
1820 | dev: true
1821 |
1822 | /json-schema-traverse@0.4.1:
1823 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1824 | dev: true
1825 |
1826 | /json-stable-stringify-without-jsonify@1.0.1:
1827 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1828 | dev: true
1829 |
1830 | /json5@1.0.2:
1831 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1832 | hasBin: true
1833 | dependencies:
1834 | minimist: 1.2.8
1835 | dev: true
1836 |
1837 | /json5@2.2.3:
1838 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1839 | engines: {node: '>=6'}
1840 | hasBin: true
1841 | dev: true
1842 |
1843 | /levn@0.4.1:
1844 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1845 | engines: {node: '>= 0.8.0'}
1846 | dependencies:
1847 | prelude-ls: 1.2.1
1848 | type-check: 0.4.0
1849 | dev: true
1850 |
1851 | /locate-path@6.0.0:
1852 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1853 | engines: {node: '>=10'}
1854 | dependencies:
1855 | p-locate: 5.0.0
1856 | dev: true
1857 |
1858 | /lodash.merge@4.6.2:
1859 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1860 | dev: true
1861 |
1862 | /lru-cache@5.1.1:
1863 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
1864 | dependencies:
1865 | yallist: 3.1.1
1866 | dev: true
1867 |
1868 | /lru-cache@6.0.0:
1869 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1870 | engines: {node: '>=10'}
1871 | dependencies:
1872 | yallist: 4.0.0
1873 | dev: true
1874 |
1875 | /make-dir@2.1.0:
1876 | resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
1877 | engines: {node: '>=6'}
1878 | dependencies:
1879 | pify: 4.0.1
1880 | semver: 5.7.1
1881 | dev: true
1882 |
1883 | /minimatch@3.1.2:
1884 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1885 | dependencies:
1886 | brace-expansion: 1.1.11
1887 | dev: true
1888 |
1889 | /minimist@1.2.8:
1890 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1891 | dev: true
1892 |
1893 | /ms@2.1.2:
1894 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1895 | dev: true
1896 |
1897 | /ms@2.1.3:
1898 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1899 | dev: true
1900 |
1901 | /nanoid@3.3.6:
1902 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
1903 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1904 | hasBin: true
1905 | dev: true
1906 |
1907 | /natural-compare@1.4.0:
1908 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1909 | dev: true
1910 |
1911 | /node-releases@2.0.10:
1912 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
1913 | dev: true
1914 |
1915 | /normalize-path@3.0.0:
1916 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1917 | engines: {node: '>=0.10.0'}
1918 | dev: true
1919 | optional: true
1920 |
1921 | /object-inspect@1.12.3:
1922 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
1923 | dev: true
1924 |
1925 | /object-keys@1.1.1:
1926 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1927 | engines: {node: '>= 0.4'}
1928 | dev: true
1929 |
1930 | /object.assign@4.1.4:
1931 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
1932 | engines: {node: '>= 0.4'}
1933 | dependencies:
1934 | call-bind: 1.0.2
1935 | define-properties: 1.2.0
1936 | has-symbols: 1.0.3
1937 | object-keys: 1.1.1
1938 | dev: true
1939 |
1940 | /object.values@1.1.6:
1941 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
1942 | engines: {node: '>= 0.4'}
1943 | dependencies:
1944 | call-bind: 1.0.2
1945 | define-properties: 1.2.0
1946 | es-abstract: 1.21.2
1947 | dev: true
1948 |
1949 | /once@1.4.0:
1950 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1951 | dependencies:
1952 | wrappy: 1.0.2
1953 | dev: true
1954 |
1955 | /optionator@0.9.1:
1956 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
1957 | engines: {node: '>= 0.8.0'}
1958 | dependencies:
1959 | deep-is: 0.1.4
1960 | fast-levenshtein: 2.0.6
1961 | levn: 0.4.1
1962 | prelude-ls: 1.2.1
1963 | type-check: 0.4.0
1964 | word-wrap: 1.2.3
1965 | dev: true
1966 |
1967 | /p-limit@3.1.0:
1968 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1969 | engines: {node: '>=10'}
1970 | dependencies:
1971 | yocto-queue: 0.1.0
1972 | dev: true
1973 |
1974 | /p-locate@5.0.0:
1975 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1976 | engines: {node: '>=10'}
1977 | dependencies:
1978 | p-limit: 3.1.0
1979 | dev: true
1980 |
1981 | /parent-module@1.0.1:
1982 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1983 | engines: {node: '>=6'}
1984 | dependencies:
1985 | callsites: 3.1.0
1986 | dev: true
1987 |
1988 | /path-exists@4.0.0:
1989 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1990 | engines: {node: '>=8'}
1991 | dev: true
1992 |
1993 | /path-is-absolute@1.0.1:
1994 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1995 | engines: {node: '>=0.10.0'}
1996 | dev: true
1997 |
1998 | /path-key@3.1.1:
1999 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2000 | engines: {node: '>=8'}
2001 | dev: true
2002 |
2003 | /path-parse@1.0.7:
2004 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2005 | dev: true
2006 |
2007 | /picocolors@1.0.0:
2008 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2009 | dev: true
2010 |
2011 | /picomatch@2.3.1:
2012 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2013 | engines: {node: '>=8.6'}
2014 | dev: true
2015 | optional: true
2016 |
2017 | /pify@4.0.1:
2018 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
2019 | engines: {node: '>=6'}
2020 | dev: true
2021 |
2022 | /postcss@8.4.23:
2023 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==}
2024 | engines: {node: ^10 || ^12 || >=14}
2025 | dependencies:
2026 | nanoid: 3.3.6
2027 | picocolors: 1.0.0
2028 | source-map-js: 1.0.2
2029 | dev: true
2030 |
2031 | /prelude-ls@1.2.1:
2032 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2033 | engines: {node: '>= 0.8.0'}
2034 | dev: true
2035 |
2036 | /prettier-linter-helpers@1.0.0:
2037 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
2038 | engines: {node: '>=6.0.0'}
2039 | dependencies:
2040 | fast-diff: 1.2.0
2041 | dev: true
2042 |
2043 | /prettier@2.8.7:
2044 | resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==}
2045 | engines: {node: '>=10.13.0'}
2046 | hasBin: true
2047 | dev: true
2048 |
2049 | /punycode@2.3.0:
2050 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
2051 | engines: {node: '>=6'}
2052 | dev: true
2053 |
2054 | /queue-microtask@1.2.3:
2055 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2056 | dev: true
2057 |
2058 | /readdirp@3.6.0:
2059 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2060 | engines: {node: '>=8.10.0'}
2061 | dependencies:
2062 | picomatch: 2.3.1
2063 | dev: true
2064 | optional: true
2065 |
2066 | /regexp.prototype.flags@1.5.0:
2067 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
2068 | engines: {node: '>= 0.4'}
2069 | dependencies:
2070 | call-bind: 1.0.2
2071 | define-properties: 1.2.0
2072 | functions-have-names: 1.2.3
2073 | dev: true
2074 |
2075 | /regexpp@3.2.0:
2076 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
2077 | engines: {node: '>=8'}
2078 | dev: true
2079 |
2080 | /resolve-from@4.0.0:
2081 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2082 | engines: {node: '>=4'}
2083 | dev: true
2084 |
2085 | /resolve@1.22.2:
2086 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
2087 | hasBin: true
2088 | dependencies:
2089 | is-core-module: 2.12.0
2090 | path-parse: 1.0.7
2091 | supports-preserve-symlinks-flag: 1.0.0
2092 | dev: true
2093 |
2094 | /reusify@1.0.4:
2095 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2096 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2097 | dev: true
2098 |
2099 | /rimraf@3.0.2:
2100 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2101 | hasBin: true
2102 | dependencies:
2103 | glob: 7.2.3
2104 | dev: true
2105 |
2106 | /rollup@3.20.7:
2107 | resolution: {integrity: sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==}
2108 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
2109 | hasBin: true
2110 | optionalDependencies:
2111 | fsevents: 2.3.2
2112 | dev: true
2113 |
2114 | /run-parallel@1.2.0:
2115 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2116 | dependencies:
2117 | queue-microtask: 1.2.3
2118 | dev: true
2119 |
2120 | /safe-regex-test@1.0.0:
2121 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
2122 | dependencies:
2123 | call-bind: 1.0.2
2124 | get-intrinsic: 1.2.0
2125 | is-regex: 1.1.4
2126 | dev: true
2127 |
2128 | /semver@5.7.1:
2129 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
2130 | hasBin: true
2131 | dev: true
2132 |
2133 | /semver@6.3.0:
2134 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
2135 | hasBin: true
2136 | dev: true
2137 |
2138 | /semver@7.5.0:
2139 | resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==}
2140 | engines: {node: '>=10'}
2141 | hasBin: true
2142 | dependencies:
2143 | lru-cache: 6.0.0
2144 | dev: true
2145 |
2146 | /shebang-command@2.0.0:
2147 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2148 | engines: {node: '>=8'}
2149 | dependencies:
2150 | shebang-regex: 3.0.0
2151 | dev: true
2152 |
2153 | /shebang-regex@3.0.0:
2154 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2155 | engines: {node: '>=8'}
2156 | dev: true
2157 |
2158 | /side-channel@1.0.4:
2159 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2160 | dependencies:
2161 | call-bind: 1.0.2
2162 | get-intrinsic: 1.2.0
2163 | object-inspect: 1.12.3
2164 | dev: true
2165 |
2166 | /slash@2.0.0:
2167 | resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
2168 | engines: {node: '>=6'}
2169 | dev: true
2170 |
2171 | /source-map-js@1.0.2:
2172 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2173 | engines: {node: '>=0.10.0'}
2174 | dev: true
2175 |
2176 | /string.prototype.trim@1.2.7:
2177 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
2178 | engines: {node: '>= 0.4'}
2179 | dependencies:
2180 | call-bind: 1.0.2
2181 | define-properties: 1.2.0
2182 | es-abstract: 1.21.2
2183 | dev: true
2184 |
2185 | /string.prototype.trimend@1.0.6:
2186 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
2187 | dependencies:
2188 | call-bind: 1.0.2
2189 | define-properties: 1.2.0
2190 | es-abstract: 1.21.2
2191 | dev: true
2192 |
2193 | /string.prototype.trimstart@1.0.6:
2194 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
2195 | dependencies:
2196 | call-bind: 1.0.2
2197 | define-properties: 1.2.0
2198 | es-abstract: 1.21.2
2199 | dev: true
2200 |
2201 | /strip-ansi@6.0.1:
2202 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2203 | engines: {node: '>=8'}
2204 | dependencies:
2205 | ansi-regex: 5.0.1
2206 | dev: true
2207 |
2208 | /strip-bom@3.0.0:
2209 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2210 | engines: {node: '>=4'}
2211 | dev: true
2212 |
2213 | /strip-json-comments@3.1.1:
2214 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2215 | engines: {node: '>=8'}
2216 | dev: true
2217 |
2218 | /supports-color@5.5.0:
2219 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2220 | engines: {node: '>=4'}
2221 | dependencies:
2222 | has-flag: 3.0.0
2223 | dev: true
2224 |
2225 | /supports-color@7.2.0:
2226 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2227 | engines: {node: '>=8'}
2228 | dependencies:
2229 | has-flag: 4.0.0
2230 | dev: true
2231 |
2232 | /supports-preserve-symlinks-flag@1.0.0:
2233 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2234 | engines: {node: '>= 0.4'}
2235 | dev: true
2236 |
2237 | /text-table@0.2.0:
2238 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2239 | dev: true
2240 |
2241 | /to-fast-properties@2.0.0:
2242 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
2243 | engines: {node: '>=4'}
2244 | dev: true
2245 |
2246 | /to-regex-range@5.0.1:
2247 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2248 | engines: {node: '>=8.0'}
2249 | dependencies:
2250 | is-number: 7.0.0
2251 | dev: true
2252 | optional: true
2253 |
2254 | /tsconfig-paths@3.14.2:
2255 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
2256 | dependencies:
2257 | '@types/json5': 0.0.29
2258 | json5: 1.0.2
2259 | minimist: 1.2.8
2260 | strip-bom: 3.0.0
2261 | dev: true
2262 |
2263 | /type-check@0.4.0:
2264 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2265 | engines: {node: '>= 0.8.0'}
2266 | dependencies:
2267 | prelude-ls: 1.2.1
2268 | dev: true
2269 |
2270 | /type-fest@0.20.2:
2271 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2272 | engines: {node: '>=10'}
2273 | dev: true
2274 |
2275 | /typed-array-length@1.0.4:
2276 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
2277 | dependencies:
2278 | call-bind: 1.0.2
2279 | for-each: 0.3.3
2280 | is-typed-array: 1.1.10
2281 | dev: true
2282 |
2283 | /typescript@4.9.3:
2284 | resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==}
2285 | engines: {node: '>=4.2.0'}
2286 | hasBin: true
2287 | dev: true
2288 |
2289 | /unbox-primitive@1.0.2:
2290 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2291 | dependencies:
2292 | call-bind: 1.0.2
2293 | has-bigints: 1.0.2
2294 | has-symbols: 1.0.3
2295 | which-boxed-primitive: 1.0.2
2296 | dev: true
2297 |
2298 | /update-browserslist-db@1.0.11(browserslist@4.21.5):
2299 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
2300 | hasBin: true
2301 | peerDependencies:
2302 | browserslist: '>= 4.21.0'
2303 | dependencies:
2304 | browserslist: 4.21.5
2305 | escalade: 3.1.1
2306 | picocolors: 1.0.0
2307 | dev: true
2308 |
2309 | /uri-js@4.4.1:
2310 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2311 | dependencies:
2312 | punycode: 2.3.0
2313 | dev: true
2314 |
2315 | /vite@4.2.0(@types/node@18.16.1):
2316 | resolution: {integrity: sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==}
2317 | engines: {node: ^14.18.0 || >=16.0.0}
2318 | hasBin: true
2319 | peerDependencies:
2320 | '@types/node': '>= 14'
2321 | less: '*'
2322 | sass: '*'
2323 | stylus: '*'
2324 | sugarss: '*'
2325 | terser: ^5.4.0
2326 | peerDependenciesMeta:
2327 | '@types/node':
2328 | optional: true
2329 | less:
2330 | optional: true
2331 | sass:
2332 | optional: true
2333 | stylus:
2334 | optional: true
2335 | sugarss:
2336 | optional: true
2337 | terser:
2338 | optional: true
2339 | dependencies:
2340 | '@types/node': 18.16.1
2341 | esbuild: 0.17.17
2342 | postcss: 8.4.23
2343 | resolve: 1.22.2
2344 | rollup: 3.20.7
2345 | optionalDependencies:
2346 | fsevents: 2.3.2
2347 | dev: true
2348 |
2349 | /which-boxed-primitive@1.0.2:
2350 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2351 | dependencies:
2352 | is-bigint: 1.0.4
2353 | is-boolean-object: 1.1.2
2354 | is-number-object: 1.0.7
2355 | is-string: 1.0.7
2356 | is-symbol: 1.0.4
2357 | dev: true
2358 |
2359 | /which-typed-array@1.1.9:
2360 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
2361 | engines: {node: '>= 0.4'}
2362 | dependencies:
2363 | available-typed-arrays: 1.0.5
2364 | call-bind: 1.0.2
2365 | for-each: 0.3.3
2366 | gopd: 1.0.1
2367 | has-tostringtag: 1.0.0
2368 | is-typed-array: 1.1.10
2369 | dev: true
2370 |
2371 | /which@2.0.2:
2372 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2373 | engines: {node: '>= 8'}
2374 | hasBin: true
2375 | dependencies:
2376 | isexe: 2.0.0
2377 | dev: true
2378 |
2379 | /word-wrap@1.2.3:
2380 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
2381 | engines: {node: '>=0.10.0'}
2382 | dev: true
2383 |
2384 | /wrappy@1.0.2:
2385 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2386 | dev: true
2387 |
2388 | /yallist@3.1.1:
2389 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
2390 | dev: true
2391 |
2392 | /yallist@4.0.0:
2393 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2394 | dev: true
2395 |
2396 | /yocto-queue@0.1.0:
2397 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2398 | engines: {node: '>=10'}
2399 | dev: true
2400 |
--------------------------------------------------------------------------------