├── .gitignore
├── examples
├── .gitignore
├── vite.config.js
├── package.json
├── index.html
├── index.ts
└── pnpm-lock.yaml
├── docs
└── images
│ └── scheduler.webp
├── jest.config.js
├── .editorconfig
├── tsconfig.json
├── utils
├── utils.ts
├── task.ts
└── scheduler.ts
├── index.ts
├── .eslintrc.json
├── LICENSE
├── tea.yaml
├── lib
├── node.ts
├── task.ts
└── taskList.ts
├── package.json
├── src
├── singleAnimationFrameScheduler.ts
├── idleFrameScheduler.ts
├── animationFrameScheduler.ts
└── immediateScheduler.ts
├── tests
└── taskList.test.ts
├── README.md
└── pnpm-lock.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | package-lock.json
4 | coverage
--------------------------------------------------------------------------------
/examples/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | dist
4 | dist-ssr
5 | *.local
6 | art
--------------------------------------------------------------------------------
/docs/images/scheduler.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sullay/web-scheduler/HEAD/docs/images/scheduler.webp
--------------------------------------------------------------------------------
/examples/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 |
3 | export default defineConfig({})
4 |
--------------------------------------------------------------------------------
/examples/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "examples",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite"
6 | },
7 | "devDependencies": {
8 | "vite": "^2.7.2"
9 | },
10 | "dependencies": {
11 | "web-scheduler": "^1.3.1"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | transform: {
3 | '^.+\\.tsx?$': 'ts-jest'
4 | },
5 | testRegex: '(/tests/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
6 | moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
7 | collectCoverage: true
8 | }
9 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # 顶层EditorConfig文件
2 | root = true
3 |
4 | # 对所有文件生效
5 | [*.ts]
6 | indent_style = space
7 | indent_size = 4
8 | end_of_line = lf
9 | charset = utf-8
10 | trim_trailing_whitespace = true
11 | insert_final_newline = true
12 |
13 | # 特定文件类型的规则
14 | [*.md]
15 | trim_trailing_whitespace = false
16 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "module": "ESNext",
5 | "strict": true,
6 | "noImplicitAny": false,
7 | "declaration": true,
8 | "esModuleInterop": true,
9 | "moduleResolution": "Node"
10 | },
11 | "exclude": [
12 | "node_modules",
13 | "examples"
14 | ]
15 | }
--------------------------------------------------------------------------------
/utils/utils.ts:
--------------------------------------------------------------------------------
1 | export type AnyFunction = (...args: unknown[]) => unknown
2 |
3 | export function isFunction (func: unknown): func is AnyFunction {
4 | return typeof func === 'function'
5 | }
6 |
7 | export function setImmediatePolyfill (callback: AnyFunction) {
8 | const channel = new MessageChannel()
9 | channel.port1.onmessage = callback
10 | channel.port2.postMessage(undefined)
11 | }
12 |
--------------------------------------------------------------------------------
/index.ts:
--------------------------------------------------------------------------------
1 | import { TaskList } from './lib/taskList'
2 | import { animationFrameScheduler } from './src/animationFrameScheduler'
3 | import { idleFrameScheduler } from './src/idleFrameScheduler'
4 | import { immediateScheduler } from './src/immediateScheduler'
5 | import { singleAnimationFrameScheduler } from './src/singleAnimationFrameScheduler'
6 |
7 | import { PRIORITY_TYPE } from './utils/task'
8 |
9 | export {
10 | TaskList,
11 | PRIORITY_TYPE,
12 | animationFrameScheduler,
13 | idleFrameScheduler,
14 | immediateScheduler,
15 | singleAnimationFrameScheduler
16 | }
17 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es2021": true,
5 | "node": true
6 | },
7 | "extends": "standard-with-typescript",
8 | "parserOptions": {
9 | "ecmaVersion": "latest",
10 | "sourceType": "module"
11 | },
12 | "ignorePatterns": [
13 | "examples"
14 | ],
15 | "rules": {
16 | "@typescript-eslint/indent": [
17 | "error",
18 | 4
19 | ],
20 | "@typescript-eslint/explicit-function-return-type": "off",
21 | "@typescript-eslint/no-floating-promises": "off"
22 | }
23 | }
--------------------------------------------------------------------------------
/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | examples
8 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/utils/task.ts:
--------------------------------------------------------------------------------
1 | import type { Node } from '../lib/node'
2 |
3 | // 跳表层级
4 | export const MAX_LEVEL = 16
5 | export const HEAD = Symbol('HEAD')
6 | export const TAIL = Symbol('TAIL')
7 |
8 | /**
9 | * 优先级枚举
10 | */
11 | export enum PRIORITY_TYPE { IMMEDIATE = 'immediate', IDLE = 'idle', HIGH = 'high', NORMAL = 'normal', LOW = 'low' }
12 |
13 | /**
14 | * 默认各优先级超时时间
15 | */
16 | export const DEFAULT_PRIORITY_TIMEOUT = {
17 | [PRIORITY_TYPE.IMMEDIATE]: -1 as const,
18 | [PRIORITY_TYPE.HIGH]: 250,
19 | [PRIORITY_TYPE.NORMAL]: 1000,
20 | [PRIORITY_TYPE.LOW]: 5000,
21 | [PRIORITY_TYPE.IDLE]: 1073741823 as const
22 | }
23 |
24 | export type TaskKeyType = number | string | symbol | object
25 |
26 | export type NodePre = Array
27 |
28 | export type NodeNext = NodePre
29 |
30 | export interface PriorityTimeoutParams { [PRIORITY_TYPE.HIGH]?: number, [PRIORITY_TYPE.NORMAL]?: number, [PRIORITY_TYPE.LOW]?: number }
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 sullay
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 |
--------------------------------------------------------------------------------
/tea.yaml:
--------------------------------------------------------------------------------
1 | # https://tea.xyz/what-is-this-file
2 | ---
3 | version: 1.0.0
4 | codeOwners:
5 | - '0x7F34C1F6fFD31f77170c5EDe96b1141e0D1Bb7A5'
6 | - '0x477D0f6aDDd270610e090d2A0Bb8A1cA225C6405'
7 | - '0x84f03606044927E09BD4da8eE9174E4D2644689E'
8 | - '0xB676ce9c25f13898f931F60DF818240109011a81'
9 | - '0x5B233F495B74c7111C84a5C3D105f99af38F1Fd9'
10 | - '0xa3b262B0e5771388CD6314a675A6f063266a0D95'
11 | - '0x8AEe9023D5E812bdf1243127A4e7D15C2996Ac16'
12 | - '0x08Ea2028d9d00e6D3450C8AA8b565d05C7039677'
13 | - '0x52e4e7633574462F19c6c801B631B2C685d2A689'
14 | - '0x748a10e41e0be1DD9Ad2E55De88e855F72383b1b'
15 | - '0x0ADd736116231Ac82a47A99c46eB87d7598aBa0c'
16 | - '0xD32a40F0B34933A1e7B1B231FC9fc4fE283eE363'
17 | - '0xA4BaA5D5fBaD9A6013E7005248bfCFF3d603888e'
18 | - '0xBDe8ADD4a2034475d4F501228b23D5c9F0b195CB'
19 | - '0xBAD1BACff5e7c266c0a662F8Eb570e4C6e1af63E'
20 | - '0x58ed3b851D417c0825219ab3E5AAA1fa8618CEDF'
21 | - '0x431d829f662304Bc4F17Ce9CAf73Bd1Ba77Ef0F8'
22 | - '0x3C806Cde64755cDa4c12b268d3aeA440de8Cb697'
23 | - '0xa1639513f8F6938DE9D7257473A11CBd8d767C0b'
24 | - '0x37aC9e0e1519e5497E3d7b7dFF2A7a2FA648c2A3'
25 | - '0xd1Cb9F26E3cFD5217B5927fD979728B98d5D0217'
26 | - '0xC3f168f7b73A24f7B68867f7039e3Cc88B77ddbc'
27 | - '0x6dd74726F10D81508596C41aa13Da5974355f77a'
28 | - '0x684F908F148d3F277E0747b1300d90F2760488E5'
29 | quorum: 1
30 |
--------------------------------------------------------------------------------
/utils/scheduler.ts:
--------------------------------------------------------------------------------
1 | import { type PriorityTimeoutParams } from './task'
2 |
3 | export interface BaseConfig {
4 | priorityTimeoutParams?: PriorityTimeoutParams
5 | }
6 |
7 | export interface IdleFrameConfig extends BaseConfig {}
8 |
9 | export interface singleAnimationFrameConfig extends BaseConfig {}
10 |
11 | export interface AnimationFrameConfig extends BaseConfig {
12 | frameDuration?: number
13 | }
14 |
15 | export interface ImmediateConfig extends BaseConfig {
16 | frameDuration?: number
17 | }
18 |
19 | /**
20 | * 计算设备刷新率,每一帧所用时间
21 | */
22 | export async function calculateAverageFrameDuration () {
23 | return await new Promise((resolve) => {
24 | let lastTimestamp: number | null = null
25 | let frameCount = 0
26 | let totalDuration = 0
27 |
28 | function calculateFrameDuration (timestamp: number) {
29 | if (lastTimestamp !== null) {
30 | const frameDuration = timestamp - lastTimestamp
31 | totalDuration += frameDuration
32 | frameCount++
33 | lastTimestamp = timestamp
34 | } else {
35 | lastTimestamp = timestamp
36 | }
37 |
38 | if (frameCount === 10) {
39 | resolve(totalDuration / frameCount) // 返回平均值
40 | }
41 |
42 | if (frameCount < 10) {
43 | requestAnimationFrame(calculateFrameDuration)
44 | }
45 | }
46 |
47 | requestAnimationFrame(calculateFrameDuration)
48 | })
49 | }
50 |
--------------------------------------------------------------------------------
/examples/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | animationFrameScheduler,
3 | singleAnimationFrameScheduler,
4 | idleFrameScheduler,
5 | immediateScheduler,
6 | PRIORITY_TYPE
7 | } from 'web-scheduler'
8 |
9 | const circle = document.querySelector('.circle') as HTMLElement;
10 |
11 |
12 | circle.onclick = ()=>{
13 | for(let i=0; i< 1000; i++){
14 | singleAnimationFrameScheduler.pushTask(()=>{
15 | console.log(i)
16 | circle.style.width = `${i}px`
17 | circle.style.height = `${i}px`
18 | })
19 | }
20 | }
21 |
22 | // circle.onclick = () => {
23 | // for (let i = 0; i < 2000; i++) {
24 | // animationFrameScheduler.pushTask(() => {
25 | // console.log(i)
26 | // circle.style.width = `${~~i/2}px`
27 | // circle.style.height = `${~~i/2}px`
28 | // },{ priority: PRIORITY_TYPE.LOW })
29 | // }
30 | // }
31 |
32 | // circle.onclick = () => {
33 | // for (let i = 0; i < 2000; i++) {
34 | // idleFrameScheduler.pushTask(() => {
35 | // console.log(i)
36 | // circle.style.width = `${~~i/2}px`
37 | // circle.style.height = `${~~i/2}px`
38 | // },{ priority: PRIORITY_TYPE.IDLE })
39 | // }
40 | // }
41 |
42 | // circle.onclick = () => {
43 | // for (let i = 0; i < 2000; i++) {
44 | // immediateScheduler.pushTask(() => {
45 | // console.log(i)
46 | // circle.style.width = `${~~i / 2}px`
47 | // circle.style.height = `${~~i / 2}px`
48 | // })
49 | // }
50 | // }
--------------------------------------------------------------------------------
/lib/node.ts:
--------------------------------------------------------------------------------
1 | import type { NodeNext, NodePre } from '../utils/task'
2 | import { MAX_LEVEL } from '../utils/task'
3 | import { type Task } from './task'
4 |
5 | /**
6 | * 跳表节点类,用于包装单个任务,并携带任务实例在条表中移动
7 | */
8 | export class Node {
9 | /** 跳表各层级后一个节点 */
10 | private next: NodeNext
11 | /** 跳表各层级前一个节点 */
12 | private pre: NodePre
13 | /**
14 | * @param task 任务实例
15 | */
16 | constructor (private readonly task: Task) {
17 | this.next = new Array(MAX_LEVEL).fill(null)
18 | this.pre = new Array(MAX_LEVEL).fill(null)
19 | }
20 |
21 | /**
22 | * 判断是否为Node实例
23 | * @param node Node实例
24 | */
25 | static isNode (node: unknown): node is Node {
26 | return node instanceof this
27 | }
28 |
29 | /**
30 | * 获取当前节点对应的任务
31 | */
32 | getTask () {
33 | return this.task
34 | }
35 |
36 | /**
37 | * 根据层级获取下一个任务
38 | * @param level 层级
39 | */
40 | getNext (level: number) {
41 | return this.next[level]
42 | }
43 |
44 | /**
45 | * 根据层级设置下一个节点
46 | * @param level 层级
47 | * @param node 节点
48 | */
49 | setNext (level: number, node: Node) {
50 | this.next[level] = node
51 | }
52 |
53 | /**
54 | * 根据层级获取上一个任务
55 | * @param level 层级
56 | */
57 | getPre (level: number) {
58 | return this.pre[level]
59 | }
60 |
61 | /**
62 | * 根据层级设置上一个节点
63 | * @param level 层级
64 | * @param node 节点
65 | */
66 | setPre (level: number, node: Node) {
67 | this.pre[level] = node
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "web-scheduler",
3 | "version": "1.5.0",
4 | "description": "",
5 | "main": "index.js",
6 | "types": "index.d.ts",
7 | "scripts": {
8 | "build": "tsc -p tsconfig.json",
9 | "clean": "tsc --build --clean",
10 | "prepublishOnly": "npm run build",
11 | "postpublish": "npm run clean",
12 | "test": "jest"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": "git+https://github.com/sullay/web-scheduler.git"
17 | },
18 | "keywords": [
19 | "scheduler",
20 | "js-art"
21 | ],
22 | "author": "sullay",
23 | "license": "MIT",
24 | "bugs": {
25 | "url": "https://github.com/sullay/web-scheduler/issues"
26 | },
27 | "homepage": "https://github.com/sullay/web-scheduler#readme",
28 | "devDependencies": {
29 | "@types/jest": "^29.5.5",
30 | "@typescript-eslint/eslint-plugin": "^6.7.4",
31 | "@typescript-eslint/parser": "^6.7.4",
32 | "eslint": "^8.50.0",
33 | "eslint-config-standard-with-typescript": "^39.1.0",
34 | "eslint-plugin-import": "^2.28.1",
35 | "eslint-plugin-n": "^15.7.0",
36 | "eslint-plugin-promise": "^6.1.1",
37 | "jest": "^29.7.0",
38 | "standard": "^17.1.0",
39 | "ts-jest": "^29.1.1",
40 | "typescript": "^5.2.2"
41 | },
42 | "files": [
43 | "index.d.ts",
44 | "index.d.ts",
45 | "lib/**/*.js",
46 | "lib/**/*.d.ts",
47 | "utils/**/*.js",
48 | "utils/**/*.d.ts",
49 | "src/**/*.js",
50 | "src/**/*.d.ts"
51 | ]
52 | }
--------------------------------------------------------------------------------
/src/singleAnimationFrameScheduler.ts:
--------------------------------------------------------------------------------
1 | import { TaskList } from '../lib/taskList'
2 | import { type singleAnimationFrameConfig } from '../utils/scheduler'
3 | import type { TaskKeyType, PRIORITY_TYPE } from '../utils/task'
4 | import type { AnyFunction } from '../utils/utils'
5 |
6 | /**
7 | * 基于requestAnimationFrame的任务调度器,每一个动画帧只执行一个任务,用于逐帧操作动画
8 | */
9 | class SingleAnimationFrameScheduler {
10 | private readonly taskList = new TaskList()
11 | private isWorking = false
12 |
13 | /**
14 | * 修改默认配置
15 | * @param priorityTimeoutParams 自定义超时时间
16 | */
17 | async setConfig ({ priorityTimeoutParams = {} }: singleAnimationFrameConfig) {
18 | this.taskList.setPriorityTimeout(priorityTimeoutParams)
19 | }
20 |
21 | /**
22 | * 执行任务循环
23 | * @param timestamp 进入任务调度时的时间戳
24 | */
25 | private workLoop () {
26 | // 任务已空停止运行
27 | if (!this.taskList.isEmpty()) {
28 | const task = this.taskList.shift()
29 | // 执行任务以及回调函数
30 | task?.run()
31 | }
32 |
33 | if (this.taskList.isEmpty()) {
34 | // 不存在任务,停止调度
35 | this.isWorking = false
36 | } else {
37 | // 如果队列中存在任务,下一帧raf阶段执行
38 | requestAnimationFrame(this.workLoop.bind(this))
39 | }
40 | }
41 |
42 | /**
43 | * 添加任务,如果已经存在相同key的任务,更新任务方法,回调函数合并到callbackList,并根据超时时间移动位置。
44 | * @param val 任务方法
45 | * @param options.key 任务key值
46 | * @param options.priority 任务优先级
47 | * @param options.callback 任务回调函数
48 | */
49 | pushTask (val: AnyFunction, options?: { key?: TaskKeyType, priority?: PRIORITY_TYPE, callback?: AnyFunction }) {
50 | // 插入任务
51 | this.taskList.put(val, options)
52 | // 如果任务调度未启动,启动调度,并在下一帧raf阶段执行。
53 | if (!this.isWorking) {
54 | this.isWorking = true
55 | requestAnimationFrame(this.workLoop.bind(this))
56 | }
57 | }
58 | }
59 |
60 | /**
61 | * 基于requestAnimationFrame的任务调度器,每一个动画帧只执行一个任务,用于逐帧操作动画
62 | */
63 | export const singleAnimationFrameScheduler = new SingleAnimationFrameScheduler()
64 |
--------------------------------------------------------------------------------
/lib/task.ts:
--------------------------------------------------------------------------------
1 | import type { TaskKeyType } from '../utils/task'
2 | import { PRIORITY_TYPE, DEFAULT_PRIORITY_TIMEOUT } from '../utils/task'
3 | import { isFunction, type AnyFunction } from '../utils/utils'
4 |
5 | /**
6 | * 任务类
7 | */
8 | export class Task {
9 | /** 回调函数列表 */
10 | private readonly callbackList: AnyFunction[] = []
11 | private readonly priority: PRIORITY_TYPE
12 | private timeout: number
13 | /**
14 | *
15 | * @param key 任务key值
16 | * @param val 任务方法
17 | * @param options.callback 回调函数
18 | * @param options.priority 任务优先级(仅作为标识,实际使用timeout)
19 | * @param options.timeout 任务超时时间 (已超时任务会尽快执行,过多的超时任务可能会导致fps下降)
20 | */
21 | constructor (
22 | private readonly key: TaskKeyType,
23 | private val: AnyFunction = () => { },
24 | options: {
25 | callback?: AnyFunction
26 | priority?: PRIORITY_TYPE
27 | timeout?: number
28 | } = {}
29 | ) {
30 | if (isFunction(options.callback)) this.addCallback(options.callback)
31 | this.priority = options.priority ?? PRIORITY_TYPE.IDLE
32 | this.timeout = options.timeout ?? DEFAULT_PRIORITY_TIMEOUT[PRIORITY_TYPE.IDLE]
33 | }
34 |
35 | /**
36 | * 判断是否为Task实例
37 | * @param task Task实例
38 | */
39 | static isTask (task: unknown): task is Task {
40 | return task instanceof this
41 | }
42 |
43 | /**
44 | * 获取超时时间
45 | */
46 | getTimeout () {
47 | return this.timeout
48 | }
49 |
50 | /**
51 | * 设置超时时间
52 | * @param timeout 超时时间
53 | */
54 | setTimeout (timeout: number) {
55 | this.timeout = timeout
56 | }
57 |
58 | /**
59 | * 获取当前任务的key值
60 | */
61 | getKey () {
62 | return this.key
63 | }
64 |
65 | /**
66 | * 重新设置任务方法
67 | * @param val 任务方法
68 | */
69 | setVal (val: AnyFunction) {
70 | this.val = val
71 | }
72 |
73 | /**
74 | * 新增回掉函数
75 | * @param callback 任务回调函数
76 | */
77 | addCallback (callback: AnyFunction) {
78 | this.callbackList.push(callback)
79 | }
80 |
81 | /**
82 | * 执行任务
83 | */
84 | run () {
85 | this.val()
86 | this.callbackList.forEach(callback => callback())
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/src/idleFrameScheduler.ts:
--------------------------------------------------------------------------------
1 | import { TaskList } from '../lib/taskList'
2 | import type { IdleFrameConfig } from '../utils/scheduler'
3 | import type { TaskKeyType, PRIORITY_TYPE } from '../utils/task'
4 | import type { AnyFunction } from '../utils/utils'
5 |
6 | /**
7 | * 基于requestIdleCallback的任务调度器, 利用每一帧的空闲时间执行任务,最大程度利用计算资源,推荐非关键任务使用
8 | */
9 | class IdleFrameScheduler {
10 | private readonly taskList = new TaskList()
11 | private isWorking = false
12 |
13 | /**
14 | * 修改默认配置
15 | * @param options.priorityTimeoutParams 自定义超时时间
16 | */
17 | async setConfig ({ priorityTimeoutParams = {} }: IdleFrameConfig) {
18 | this.taskList.setPriorityTimeout(priorityTimeoutParams)
19 | }
20 |
21 | /**
22 | * 执行任务循环
23 | * @param timeRemaining 用于计算空闲时间的函数
24 | */
25 | private workLoop (idleDeadline: IdleDeadline) {
26 | while (true) {
27 | // 任务已空停止运行
28 | if (this.taskList.isEmpty()) break
29 | // 没有剩余时间并且不存在超时任务则停止
30 | if (idleDeadline.timeRemaining() <= 0 &&
31 | this.taskList.getFirstTimeOut() > performance.now()) {
32 | break
33 | }
34 |
35 | const task = this.taskList.shift()
36 | // 执行任务以及回调函数
37 | task?.run()
38 | }
39 | if (this.taskList.isEmpty()) {
40 | // 不存在任务,停止调度
41 | this.isWorking = false
42 | } else {
43 | // 如果队列中存在任务,下一帧raf阶段执行
44 | requestIdleCallback(this.workLoop.bind(this))
45 | }
46 | }
47 |
48 | /**
49 | * 添加任务,如果已经存在相同key的任务,更新任务方法,回调函数合并到callbackList,并根据超时时间移动位置。
50 | * @param val 任务方法
51 | * @param options.key 任务key值
52 | * @param options.priority 任务优先级
53 | * @param options.callback 任务回调函数
54 | */
55 | pushTask (val: AnyFunction, options?: { key?: TaskKeyType, priority?: PRIORITY_TYPE, callback?: AnyFunction }) {
56 | // 插入任务
57 | this.taskList.put(val, options)
58 | // 如果任务调度未启动,启动调度,并在下一帧raf阶段执行。
59 | if (!this.isWorking) {
60 | this.isWorking = true
61 | requestIdleCallback(this.workLoop.bind(this))
62 | }
63 | }
64 | }
65 |
66 | /**
67 | * 基于requestIdleCallback的任务调度器, 利用每一帧的空闲时间执行任务,最大程度利用计算资源,推荐非关键任务使用
68 | */
69 | export const idleFrameScheduler = new IdleFrameScheduler()
70 |
--------------------------------------------------------------------------------
/tests/taskList.test.ts:
--------------------------------------------------------------------------------
1 | import { TaskList } from '../lib/taskList'
2 | import { Task } from '../lib/task'
3 | import { PRIORITY_TYPE } from '../utils/task'
4 |
5 | describe('Task Class', () => {
6 | it('should create a Task instance', () => {
7 | const task = new Task('testKey', () => { })
8 | expect(task).toBeInstanceOf(Task)
9 | })
10 |
11 | it('should set and get timeout correctly', () => {
12 | const task = new Task('testKey', () => { }, {
13 | timeout: 2000
14 | })
15 | task.setTimeout(3000)
16 | expect(task.getTimeout()).toBe(3000)
17 | })
18 |
19 | it('should add and run callbacks', () => {
20 | const task = new Task('testKey', () => { })
21 | const callback1 = jest.fn()
22 | const callback2 = jest.fn()
23 |
24 | task.addCallback(callback1)
25 | task.addCallback(callback2)
26 |
27 | task.run()
28 |
29 | expect(callback1).toHaveBeenCalled()
30 | expect(callback2).toHaveBeenCalled()
31 | })
32 |
33 | // 添加更多测试用例以覆盖其他功能
34 | })
35 |
36 | describe('TaskList Class', () => {
37 | it('should create a TaskList instance', () => {
38 | const taskList = new TaskList()
39 | expect(taskList).toBeInstanceOf(TaskList)
40 | })
41 |
42 | it('should add and get tasks from the list', () => {
43 | const taskList = new TaskList()
44 |
45 | taskList.put(() => { }, { key: 'testKey' })
46 |
47 | expect(taskList.has('testKey')).toBe(true)
48 | expect(taskList.get('testKey')).toBeDefined()
49 | })
50 |
51 | it('should shift tasks from the list', () => {
52 | const taskList = new TaskList()
53 | taskList.put(() => { }, { key: 'testKey' })
54 |
55 | const shiftedTask = taskList.shift()
56 |
57 | expect(shiftedTask).toBeInstanceOf(Task)
58 | expect(taskList.has('testKey')).toBe(false)
59 | })
60 |
61 | it('should handle priority correctly', () => {
62 | const taskList = new TaskList()
63 | taskList.put(() => { }, { key: 'testKey1', priority: PRIORITY_TYPE.NORMAL })
64 | taskList.put(() => { }, { key: 'testKey2', priority: PRIORITY_TYPE.HIGH })
65 |
66 | const firstTimeout = taskList.getFirstTimeOut()
67 | taskList.shift()
68 |
69 | expect(taskList.getFirstTimeOut()).toBeGreaterThan(firstTimeout)
70 | })
71 | })
72 |
--------------------------------------------------------------------------------
/src/animationFrameScheduler.ts:
--------------------------------------------------------------------------------
1 | import { TaskList } from '../lib/taskList'
2 | import { calculateAverageFrameDuration, type AnimationFrameConfig } from '../utils/scheduler'
3 | import type { TaskKeyType, PRIORITY_TYPE } from '../utils/task'
4 | import type { AnyFunction } from '../utils/utils'
5 |
6 | /**
7 | * 基于requestAnimationFrame的任务调度器,适用于动画、布局计算
8 | */
9 | class AnimationFrameScheduler {
10 | private readonly taskList = new TaskList()
11 | private isWorking = false
12 | /** 谨慎设置,自定义需要参考运行设备的fps(默认值为设备刷新率时长的一半) */
13 | private frameDuration = 5
14 |
15 | /**
16 | * 修改默认配置
17 | * @param priorityTimeoutParams 自定义超时时间
18 | * @param frameDuration 自定义每帧占用时长(ms)
19 | */
20 | async setConfig ({ priorityTimeoutParams = {}, frameDuration }: AnimationFrameConfig) {
21 | this.taskList.setPriorityTimeout(priorityTimeoutParams)
22 | if (typeof frameDuration === 'number' && frameDuration > 0) this.frameDuration = frameDuration
23 | }
24 |
25 | /**
26 | * 执行任务循环
27 | * @param timestamp 进入任务调度时的时间戳
28 | */
29 | private workLoop (timestamp: number) {
30 | while (true) {
31 | // 任务已空停止运行
32 | if (this.taskList.isEmpty()) break
33 | // requestAnimationFrame占用时长超过{frameDuration},并且没有没有超时任务则停止运行
34 | if (performance.now() - timestamp > this.frameDuration &&
35 | this.taskList.getFirstTimeOut() > performance.now()) {
36 | break
37 | }
38 |
39 | const task = this.taskList.shift()
40 | // 执行任务以及回调函数
41 | task?.run()
42 | }
43 | if (this.taskList.isEmpty()) {
44 | // 不存在任务,停止调度
45 | this.isWorking = false
46 | } else {
47 | // 如果队列中存在任务,下一帧raf阶段执行
48 | requestAnimationFrame(this.workLoop.bind(this))
49 | }
50 | }
51 |
52 | /**
53 | * 添加任务,如果已经存在相同key的任务,更新任务方法,回调函数合并到callbackList,并根据超时时间移动位置。
54 | * @param val 任务方法
55 | * @param options.key 任务key值
56 | * @param options.priority 任务优先级
57 | * @param options.callback 任务回调函数
58 | */
59 | pushTask (val: AnyFunction, options?: { key?: TaskKeyType, priority?: PRIORITY_TYPE, callback?: AnyFunction }) {
60 | // 插入任务
61 | this.taskList.put(val, options)
62 | // 如果任务调度未启动,启动调度,并在下一帧raf阶段执行。
63 | if (!this.isWorking) {
64 | this.isWorking = true
65 | requestAnimationFrame(this.workLoop.bind(this))
66 | }
67 | }
68 | }
69 |
70 | /**
71 | * 基于requestAnimationFrame的任务调度器,适用于动画、布局计算
72 | */
73 | export const animationFrameScheduler = new AnimationFrameScheduler()
74 |
75 | calculateAverageFrameDuration().then(frameDuration => {
76 | animationFrameScheduler.setConfig({ frameDuration: Math.floor(frameDuration / 2) })
77 | })
78 |
--------------------------------------------------------------------------------
/src/immediateScheduler.ts:
--------------------------------------------------------------------------------
1 | import { TaskList } from '../lib/taskList'
2 | import { calculateAverageFrameDuration, type ImmediateConfig } from '../utils/scheduler'
3 | import type { TaskKeyType, PRIORITY_TYPE } from '../utils/task'
4 | import { setImmediatePolyfill, type AnyFunction } from '../utils/utils'
5 |
6 | /**
7 | * 基于setImmediate的任务调度器, 适合用于操作 DOM 元素以及执行其他 JavaScript 功能
8 | */
9 | class ImmediateScheduler {
10 | private readonly taskList = new TaskList()
11 | private isWorking = false
12 | /** 谨慎设置,自定义需要参考运行设备的fps(默认值为设备刷新率时长的一半) */
13 | private frameDuration = 5
14 |
15 | /**
16 | * 修改默认配置
17 | * @param priorityTimeoutParams 自定义超时时间
18 | * @param frameDuration 自定义每帧占用时长(ms)
19 | */
20 | async setConfig ({ priorityTimeoutParams = {}, frameDuration }: ImmediateConfig) {
21 | this.taskList.setPriorityTimeout(priorityTimeoutParams)
22 | if (typeof frameDuration === 'number' && frameDuration > 0) this.frameDuration = frameDuration
23 | }
24 |
25 | /**
26 | * 执行任务循环
27 | * @param timestamp 进入任务调度时的时间戳
28 | */
29 | private workLoop (timestamp: number) {
30 | while (true) {
31 | // 任务已空停止运行
32 | if (this.taskList.isEmpty()) break
33 | // setImmediate占用时长超过{frameDuration},并且没有没有超时任务则停止运行
34 | if (performance.now() - timestamp > this.frameDuration &&
35 | this.taskList.getFirstTimeOut() > performance.now()) {
36 | break
37 | }
38 |
39 | const task = this.taskList.shift()
40 | // 执行任务以及回调函数
41 | task?.run()
42 | }
43 | if (this.taskList.isEmpty()) {
44 | // 不存在任务,停止调度
45 | this.isWorking = false
46 | } else {
47 | // 如果队列中存在任务,下一帧raf阶段执行
48 | setImmediatePolyfill(this.workLoop.bind(this, performance.now()))
49 | }
50 | }
51 |
52 | /**
53 | * 添加任务,如果已经存在相同key的任务,更新任务方法,回调函数合并到callbackList,并根据超时时间移动位置。
54 | * @param val 任务方法
55 | * @param options.key 任务key值
56 | * @param options.priority 任务优先级
57 | * @param options.callback 任务回调函数
58 | */
59 | pushTask (val: AnyFunction, options?: { key?: TaskKeyType, priority?: PRIORITY_TYPE, callback?: AnyFunction }) {
60 | // 插入任务
61 | this.taskList.put(val, options)
62 | // 如果任务调度未启动,启动调度,并在下一帧raf阶段执行。
63 | if (!this.isWorking) {
64 | this.isWorking = true
65 | setImmediatePolyfill(this.workLoop.bind(this, performance.now()))
66 | }
67 | }
68 | }
69 |
70 | /**
71 | * 基于setImmediate的任务调度器, 适合用于操作 DOM 元素以及执行其他 JavaScript 功能
72 | */
73 | export const immediateScheduler = new ImmediateScheduler()
74 |
75 | calculateAverageFrameDuration().then(frameDuration => {
76 | immediateScheduler.setConfig({ frameDuration: Math.floor(frameDuration / 2) })
77 | })
78 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WEB SCHEDULER
2 |
3 | WEB SCHEDULER 是一个应用于浏览器环境的任务调度工具。用于管理系统运行过程中的各类任务,支持大量、高频、高耗时任务的场景,帮助提高系统性能,提升系统流畅度。
4 |
5 | ## 安装
6 |
7 | 你可以使用 npm、pnpm或者yarn 进行安装:
8 |
9 | ```bash
10 | npm install web-sheduler
11 |
12 | yarn add web-sheduler
13 |
14 | pnpm add web-sheduler
15 | ```
16 |
17 | ## 使用
18 |
19 | 支持多种任务调度模式,对应浏览器运行的各个阶段,支持自定应任务调度。
20 |
21 | 
22 |
23 | ### TaskList
24 |
25 | 基于哈希表和双向跳表的任务列表,
26 |
27 | `TaskList` 是一个 JavaScript 类,用于管理任务列表,用于定制化任务调度场景。它基于哈希表和双向跳表实现,允许你添加、删除和更新任务,并根据优先级和超时时间对任务进行排序。后续所有任务调度器都基于此任务列表开发。
28 |
29 | `定制化任务调度场景才会用到,正常使用只需了解运行逻辑即可。`
30 |
31 | #### TaskList示例
32 |
33 | ```ts
34 | import { TaskList, PRIORITY_TYPE } from 'web-scheduler';
35 |
36 | // 创建任务列表
37 | const taskList = new TaskList();
38 |
39 | // 添加任务
40 | taskList.put(() => conosle.log("任务1"));
41 |
42 | taskList.put(() => conosle.log("任务2"), {
43 | key: '任务2',
44 | priority: PRIORITY_TYPE.NORMAL,
45 | callback:() => console.log("任务2 回调函数")
46 | });
47 |
48 | // 取出首个任务并执行
49 | const task = taskList.shift()
50 | task?.run()
51 |
52 | // 更新任务
53 | taskList.put(() => conosle.log("更新任务2"), {
54 | key: '任务2',
55 | priority: PRIORITY_TYPE.LOW,
56 | callback:() => console.log("更新任务2 回调函数")
57 | });
58 |
59 | // 判断任务队列是否为空
60 | taskList.isEmpty();
61 |
62 | // 检查任务是否存在
63 | taskList.has('任务1'); // 输出:true/false
64 |
65 | // 获取首个任务的超时时间
66 | taskList.getFirstTimeOut()
67 |
68 | // 重新设置不同优先级对应的超时时间
69 | // 默认各优先级超时时间
70 | export const DEFAULT_PRIORITY_TIMEOUT = {
71 | [PRIORITY_TYPE.IMMEDIATE]: -1 as const,
72 | [PRIORITY_TYPE.HIGH]: 250,
73 | [PRIORITY_TYPE.NORMAL]: 1000,
74 | [PRIORITY_TYPE.LOW]: 5000,
75 | [PRIORITY_TYPE.IDLE]: 1073741823 as const
76 | }
77 |
78 | taskList.setPriorityTimeout({
79 | [PRIORITY_TYPE.HIGH]: 2500,
80 | [PRIORITY_TYPE.NORMAL]: 10000,
81 | [PRIORITY_TYPE.LOW]: 50000,
82 | })
83 |
84 | ```
85 |
86 | #### TaskList注意事项
87 |
88 | - 默认使用symbol当作key值,不需要更新任务的场景不需要设置options.key参数
89 |
90 | - 任务队列基于超时时间进行排序,优先级只影响任务的超时时间的设置
91 |
92 | - 默认支持的任务调度器中,会优先执行距离超时最近的任务,已超时任务会无视刷新率快速处理掉,自定义任务调度需要自行编写处理策略
93 |
94 | - 使用key值更新任务后,val会被替换掉所以并不保证一定会执行
95 |
96 | - 使用key值更新任务后,会合并新旧的callback回调,所以必须要确保执行的代码请使用callbak
97 |
98 | - 使用key值更新任务后,如果新的超时时间更紧急会向前移动任务,反之则继续使用旧任务的超时时间
99 |
100 | - 修改优先级对应的超时时间不影响先前插入的任务
101 |
102 | ### AnimationFrameScheduler
103 |
104 | `AnimationFrameScheduler` 是一个基于 `requestAnimationFrame` 的任务调度器,适用于动画、布局计算。
105 |
106 | - 执行阶段:rAF
107 | - 时间分片时长:默认通过估算屏幕刷新率计算。例如fps为60hz,Math.floor(1000/{fps}/2) = 4ms
108 | - 已超时任务无视时间分片时长强制运行
109 |
110 | #### AnimationFrameScheduler示例
111 |
112 | ```ts
113 | import { animationFrameScheduler } from 'animation-frame-scheduler';
114 |
115 | // 设置优先级、时间分片时长
116 | await animationFrameSchedular.setConfig ({
117 | priorityTimeoutParams: {
118 | [PRIORITY_TYPE.HIGH]: 2500,
119 | [PRIORITY_TYPE.NORMAL]: 10000,
120 | [PRIORITY_TYPE.LOW]: 50000,
121 | },
122 | frameDuration: 5
123 | }
124 |
125 | // 添加任务到调度器
126 | animationFrameScheduler.pushTask(() => {
127 | // 这里是任务的具体逻辑
128 | });
129 |
130 | animationFrameScheduler.pushTask(() => conosle.log("任务2"), {
131 | key: '任务2',
132 | priority: PRIORITY_TYPE.NORMAL,
133 | callback:() => console.log("任务2 回调函数")
134 | });
135 | ```
136 |
137 | ### SingleAnimationFrameScheduler
138 |
139 | `SingleAnimationFrameScheduler` 是一个基于 `requestAnimationFrame` 的任务调度器,它每帧只执行一个任务,通常用于逐帧操作动画或其他需要按帧处理的任务。这个调度器可以确保在每一帧中只执行一个任务,方便自定义动画的开发,并且避免卡顿和提供流畅的用户体验。
140 |
141 | - 执行阶段:rAF
142 | - 每一帧只执行一次,没有时间分片时长概念
143 | - 即使任务已经超时,也会按照排序逐帧执行
144 |
145 | #### SingleAnimationFrameScheduler示例
146 |
147 | ```ts
148 | import {
149 | singleAnimationFrameScheduler,
150 | } from 'web-scheduler'
151 |
152 | const circle = document.querySelector('.circle') as HTMLElement;
153 |
154 |
155 | circle.onclick = ()=>{
156 | for(let i=0; i< 1000; i++){
157 | singleAnimationFrameScheduler.pushTask(()=>{
158 | circle.style.width = `${i}px`
159 | circle.style.height = `${i}px`
160 | })
161 | }
162 | }
163 | ```
164 |
165 | ### ImmediateScheduler
166 |
167 | `ImmediateScheduler` 是一个基于 `setImmediate` 的任务调度器,适合用于操作 DOM 元素以及执行其他 JavaScript 功能。
168 |
169 | - 执行阶段:JS
170 | - 时间分片时长:默认通过估算屏幕刷新率计算。例如fps为60hz,Math.floor(1000/{fps}/2) = 4ms
171 | - 已超时任务无视时间分片时长强制运行
172 |
173 | #### ImmediateScheduler示例
174 |
175 | ```ts
176 | import { immediateScheduler } from 'web-scheduler';
177 |
178 | function fetchData() {
179 | // 模拟异步数据请求
180 | }
181 |
182 | function processData() {
183 | // 处理数据
184 | console.log('Data processed.');
185 | }
186 |
187 | // 启动任务
188 | immediateScheduler.pushTask(fetchData);
189 | immediateScheduler.pushTask(processData);
190 |
191 | ```
192 |
193 | ### IdleFrameScheduler
194 |
195 | `IdleFrameScheduler` 是一个基于 `requestIdleCallback` 的任务调度器,它允许你在浏览器的每一帧的空闲时间执行任务。这样可以最大程度地利用计算资源,特别适用于执行非关键任务。
196 |
197 | - 执行阶段:Paint之后执行
198 | - 时间分片时长:浏览器渲染一帧全部工作完成后的剩余时长 (1000/{fps} - 已用时长)
199 | - 已超时任务无视时间分片时长强制运行
200 | - 主要用于执行非关键任务,以充分利用浏览器的空闲时间。不建议将关键任务放在此调度器中,如果一直没有空闲时间,任务会超时后才能执行。
201 |
202 | #### IdleFrameScheduler示例
203 |
204 | ```ts
205 | import { idleFrameScheduler } from 'web-scheduler';
206 |
207 | function log() {
208 | // 打印日志
209 | }
210 | function report() {
211 | // 上报数据
212 | }
213 |
214 | // 启动任务
215 | idleFrameScheduler.pushTask(log);
216 | idleFrameScheduler.pushTask(report);
217 | ```
218 |
--------------------------------------------------------------------------------
/lib/taskList.ts:
--------------------------------------------------------------------------------
1 | import type { TaskKeyType, PriorityTimeoutParams } from '../utils/task'
2 | import { MAX_LEVEL, HEAD, TAIL, PRIORITY_TYPE, DEFAULT_PRIORITY_TIMEOUT } from '../utils/task'
3 | import { Task } from './task'
4 | import { Node } from './node'
5 | import { isFunction, type AnyFunction } from '../utils/utils'
6 |
7 | /**
8 | * 基于hash+双向跳表的任务列表,定制场景下可用于自定义任务调度器
9 | */
10 | export class TaskList {
11 | /** 使用map可以通过key值直接定位到目标任务 */
12 | private readonly map = new Map()
13 | /** 跳表最大层级(小于等于MAX_LEVEL) */
14 | private maxLevel = 0
15 | /** 表头 */
16 | private readonly head = new Node(new Task(HEAD))
17 | /** 表尾 */
18 | private readonly tail = new Node(new Task(TAIL))
19 | /** 优先级对应超时时间 */
20 | private priorityTimeout = DEFAULT_PRIORITY_TIMEOUT
21 | /**
22 | * @param options.priorityTimeout 自定义优先级超时时间
23 | */
24 | constructor () {
25 | // 构建空跳表
26 | for (let i = 0; i < MAX_LEVEL; i++) {
27 | this.head.setNext(i, this.tail)
28 | this.tail.setPre(i, this.head)
29 | }
30 | }
31 |
32 | /**
33 | * 随机生成层级
34 | */
35 | static generateLevel () {
36 | let level = 1
37 | for (let i = 1; i < MAX_LEVEL; i++) {
38 | if (Math.random() > 0.5) level++
39 | }
40 | return level
41 | }
42 |
43 | /**
44 | * 重新设置优先级对应超时时间
45 | * @param priorityTimeoutParams 优先级对应超时时间
46 | */
47 | setPriorityTimeout (priorityTimeoutParams: PriorityTimeoutParams) {
48 | this.priorityTimeout = { ...this.priorityTimeout, ...priorityTimeoutParams }
49 | }
50 |
51 | /**
52 | * 判断某个级别是否为空
53 | */
54 | isLevelEmpty (level: number) {
55 | return this.head.getNext(level) === this.tail
56 | }
57 |
58 | /**
59 | * 判断跳表是否为空 (跳表最底层首尾相连说明跳表为空)
60 | */
61 | isEmpty () {
62 | return this.isLevelEmpty(0)
63 | }
64 |
65 | /**
66 | * 通过任务key获取任务
67 | * @param key 任务key值
68 | */
69 | get (key: TaskKeyType) {
70 | return this.map.get(key)
71 | }
72 |
73 | /**
74 | * 判断是否存在任务
75 | * @param key 任务key值
76 | */
77 | has (key: TaskKeyType) {
78 | return this.map.has(key)
79 | }
80 |
81 | /**
82 | * 获取最紧急任务的超时时间
83 | */
84 | getFirstTimeOut () {
85 | if (this.isEmpty()) return DEFAULT_PRIORITY_TIMEOUT[PRIORITY_TYPE.IDLE]
86 | const firstTask = this.head.getNext(0)?.getTask()
87 | if (!Task.isTask(firstTask)) throw new Error('非空跳表中不存在首个任务')
88 | return firstTask.getTimeout()
89 | }
90 |
91 | /**
92 | * 取出首个任务
93 | */
94 | shift () {
95 | // 任务为空
96 | if (this.isEmpty()) return null
97 | // 跳表中当前节点(初始为非head的首个节点)
98 | const currentNode = this.head.getNext(0)
99 | if (!Node.isNode(currentNode)) throw new Error('非空跳表中不存在首个任务')
100 |
101 | // 从跳表中删除首个任务
102 | for (let i = this.maxLevel - 1; i >= 0; i--) {
103 | const preNode = currentNode.getPre(i)
104 | const nextNode = currentNode.getNext(i)
105 | if (!Node.isNode(preNode) && !Node.isNode(nextNode)) continue
106 | if (!Node.isNode(preNode)) throw Error(`首个任务,第${i}层级,只存在nextNode,不存在preNode`)
107 | if (!Node.isNode(nextNode)) throw Error(`首个任务,第${i}层级,只存在preNode,不存在nextNode`)
108 | preNode.setNext(i, nextNode)
109 | nextNode.setPre(i, preNode)
110 | // 删除后判断当前层级是否为空,空则最大高度-1
111 | if (this.isLevelEmpty(i)) this.maxLevel--
112 | }
113 | // 删除map中的任务
114 | const currentTask = currentNode.getTask()
115 | this.map.delete(currentTask.getKey())
116 | return currentTask
117 | }
118 |
119 | /**
120 | * 添加任务,如果已经存在相同key的任务,更新任务方法,回调函数合并到callbackList,并根据超时时间移动位置
121 | * @param val 任务方法
122 | * @param options.key 任务key值
123 | * @param options.priority 任务优先级
124 | * @param options.callback 任务回调函数
125 | */
126 | put (val: AnyFunction, { key = Symbol('default'), priority = PRIORITY_TYPE.NORMAL, callback }: {
127 | key?: TaskKeyType
128 | priority?: PRIORITY_TYPE
129 | callback?: AnyFunction
130 | } = {}) {
131 | // 计算新任务的超时时间
132 | const timeout = performance.now() + this.priorityTimeout[priority]
133 | if (this.has(key)) {
134 | // 已经存在key值相同的任务
135 |
136 | // 获取相同key值任务
137 | const node = this.get(key) as Node
138 | // 获取key值对应的任务
139 | const task = node.getTask()
140 |
141 | // 旧任务重新赋值
142 | node.getTask().setVal(val)
143 |
144 | // 合并新旧任务回调函数
145 | if (isFunction(callback)) task.addCallback(callback)
146 |
147 | // 如果新任务更紧急,则修改过期时间,并移动位置
148 | if (timeout < task.getTimeout()) {
149 | // 赋值超时时间
150 | task.setTimeout(timeout)
151 |
152 | // 最高层级
153 | let level = this.maxLevel
154 |
155 | let nextNode = node.getNext(level - 1)
156 | // 计算当前任务的层级与最高层级的下一个任务
157 | while (!Node.isNode(nextNode)) {
158 | if (level < 1) {
159 | console.error('更新任务异常', key)
160 | throw new Error('任务不在跳表中')
161 | }
162 | level--
163 | nextNode = node.getNext(level - 1)
164 | }
165 | // 从跳表中删除该任务
166 | for (let i = level - 1; i >= 0; i--) {
167 | const pre = node.getPre(i)
168 | const next = node.getNext(i)
169 | if (!Node.isNode(pre) || !Node.isNode(next)) {
170 | console.error('更新任务异常', key)
171 | throw Error(`第${i}层级,不存在nextNode或者preNode`)
172 | }
173 | pre.setNext(i, next)
174 | next.setPre(i, pre)
175 | }
176 | // 各层级插入新的位置
177 | for (let i = level - 1; i >= 0; i--) {
178 | let preNode = nextNode.getPre(i)
179 | if (!Node.isNode(preNode)) {
180 | console.error('更新任务异常', key)
181 | throw Error(`第${i}层级,不存在preNode`)
182 | }
183 |
184 | while (preNode !== this.head && preNode.getTask().getTimeout() > task.getTimeout()) {
185 | nextNode = nextNode.getPre(i)
186 | if (!Node.isNode(nextNode)) {
187 | console.error('更新任务异常', key)
188 | throw Error(`第${i}层级,不存在nextNode`)
189 | }
190 | preNode = preNode.getPre(i)
191 | if (!Node.isNode(preNode)) {
192 | console.error('更新任务异常', key)
193 | throw Error(`第${i}层级,不存在preNode`)
194 | }
195 | }
196 |
197 | node.setNext(i, nextNode)
198 | node.setPre(i, preNode)
199 | nextNode.setPre(i, node)
200 | preNode.setNext(i, node)
201 | }
202 | }
203 | } else {
204 | // 不存在key值相同的任务
205 | // 生成当前任务跳表层级
206 | const level = TaskList.generateLevel()
207 | // 创建任务
208 | const task = new Task(key, val, { callback, priority, timeout })
209 | const node = new Node(task)
210 | // 将新任务插入map
211 | this.map.set(key, node)
212 | // 将任务根据超时时间插入跳表,超时时间相同插入到最后
213 | let preNode = this.head
214 | for (let i = level - 1; i >= 0; i--) {
215 | let nextNode = preNode.getNext(i)
216 | if (!Node.isNode(nextNode)) {
217 | console.error('新增任务异常', preNode.getTask().getKey())
218 | throw new Error('不存在nextNode')
219 | }
220 |
221 | while (nextNode !== this.tail && nextNode.getTask().getTimeout() <= task.getTimeout()) {
222 | const _preNode = preNode.getNext(i)
223 | if (!Node.isNode(_preNode)) throw new Error('不存在preNode')
224 | preNode = _preNode
225 | nextNode = nextNode.getNext(i)
226 | if (!Node.isNode(nextNode)) throw new Error('不存在nextNode')
227 | }
228 |
229 | node.setPre(i, preNode)
230 | node.setNext(i, nextNode)
231 | preNode.setNext(i, node)
232 | nextNode.setPre(i, node)
233 | }
234 | // 重新赋值跳表最大层级
235 | if (level > this.maxLevel) this.maxLevel = level
236 | }
237 | }
238 | }
239 |
--------------------------------------------------------------------------------
/examples/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | web-scheduler:
9 | specifier: ^1.3.1
10 | version: 1.3.1
11 |
12 | devDependencies:
13 | vite:
14 | specifier: ^2.7.2
15 | version: 2.9.16
16 |
17 | packages:
18 |
19 | /@esbuild/linux-loong64@0.14.54:
20 | resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==}
21 | engines: {node: '>=12'}
22 | cpu: [loong64]
23 | os: [linux]
24 | requiresBuild: true
25 | dev: true
26 | optional: true
27 |
28 | /esbuild-android-64@0.14.54:
29 | resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
30 | engines: {node: '>=12'}
31 | cpu: [x64]
32 | os: [android]
33 | requiresBuild: true
34 | dev: true
35 | optional: true
36 |
37 | /esbuild-android-arm64@0.14.54:
38 | resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==}
39 | engines: {node: '>=12'}
40 | cpu: [arm64]
41 | os: [android]
42 | requiresBuild: true
43 | dev: true
44 | optional: true
45 |
46 | /esbuild-darwin-64@0.14.54:
47 | resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==}
48 | engines: {node: '>=12'}
49 | cpu: [x64]
50 | os: [darwin]
51 | requiresBuild: true
52 | dev: true
53 | optional: true
54 |
55 | /esbuild-darwin-arm64@0.14.54:
56 | resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==}
57 | engines: {node: '>=12'}
58 | cpu: [arm64]
59 | os: [darwin]
60 | requiresBuild: true
61 | dev: true
62 | optional: true
63 |
64 | /esbuild-freebsd-64@0.14.54:
65 | resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==}
66 | engines: {node: '>=12'}
67 | cpu: [x64]
68 | os: [freebsd]
69 | requiresBuild: true
70 | dev: true
71 | optional: true
72 |
73 | /esbuild-freebsd-arm64@0.14.54:
74 | resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==}
75 | engines: {node: '>=12'}
76 | cpu: [arm64]
77 | os: [freebsd]
78 | requiresBuild: true
79 | dev: true
80 | optional: true
81 |
82 | /esbuild-linux-32@0.14.54:
83 | resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==}
84 | engines: {node: '>=12'}
85 | cpu: [ia32]
86 | os: [linux]
87 | requiresBuild: true
88 | dev: true
89 | optional: true
90 |
91 | /esbuild-linux-64@0.14.54:
92 | resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==}
93 | engines: {node: '>=12'}
94 | cpu: [x64]
95 | os: [linux]
96 | requiresBuild: true
97 | dev: true
98 | optional: true
99 |
100 | /esbuild-linux-arm64@0.14.54:
101 | resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==}
102 | engines: {node: '>=12'}
103 | cpu: [arm64]
104 | os: [linux]
105 | requiresBuild: true
106 | dev: true
107 | optional: true
108 |
109 | /esbuild-linux-arm@0.14.54:
110 | resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==}
111 | engines: {node: '>=12'}
112 | cpu: [arm]
113 | os: [linux]
114 | requiresBuild: true
115 | dev: true
116 | optional: true
117 |
118 | /esbuild-linux-mips64le@0.14.54:
119 | resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==}
120 | engines: {node: '>=12'}
121 | cpu: [mips64el]
122 | os: [linux]
123 | requiresBuild: true
124 | dev: true
125 | optional: true
126 |
127 | /esbuild-linux-ppc64le@0.14.54:
128 | resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==}
129 | engines: {node: '>=12'}
130 | cpu: [ppc64]
131 | os: [linux]
132 | requiresBuild: true
133 | dev: true
134 | optional: true
135 |
136 | /esbuild-linux-riscv64@0.14.54:
137 | resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==}
138 | engines: {node: '>=12'}
139 | cpu: [riscv64]
140 | os: [linux]
141 | requiresBuild: true
142 | dev: true
143 | optional: true
144 |
145 | /esbuild-linux-s390x@0.14.54:
146 | resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==}
147 | engines: {node: '>=12'}
148 | cpu: [s390x]
149 | os: [linux]
150 | requiresBuild: true
151 | dev: true
152 | optional: true
153 |
154 | /esbuild-netbsd-64@0.14.54:
155 | resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==}
156 | engines: {node: '>=12'}
157 | cpu: [x64]
158 | os: [netbsd]
159 | requiresBuild: true
160 | dev: true
161 | optional: true
162 |
163 | /esbuild-openbsd-64@0.14.54:
164 | resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==}
165 | engines: {node: '>=12'}
166 | cpu: [x64]
167 | os: [openbsd]
168 | requiresBuild: true
169 | dev: true
170 | optional: true
171 |
172 | /esbuild-sunos-64@0.14.54:
173 | resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==}
174 | engines: {node: '>=12'}
175 | cpu: [x64]
176 | os: [sunos]
177 | requiresBuild: true
178 | dev: true
179 | optional: true
180 |
181 | /esbuild-windows-32@0.14.54:
182 | resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==}
183 | engines: {node: '>=12'}
184 | cpu: [ia32]
185 | os: [win32]
186 | requiresBuild: true
187 | dev: true
188 | optional: true
189 |
190 | /esbuild-windows-64@0.14.54:
191 | resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==}
192 | engines: {node: '>=12'}
193 | cpu: [x64]
194 | os: [win32]
195 | requiresBuild: true
196 | dev: true
197 | optional: true
198 |
199 | /esbuild-windows-arm64@0.14.54:
200 | resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==}
201 | engines: {node: '>=12'}
202 | cpu: [arm64]
203 | os: [win32]
204 | requiresBuild: true
205 | dev: true
206 | optional: true
207 |
208 | /esbuild@0.14.54:
209 | resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==}
210 | engines: {node: '>=12'}
211 | hasBin: true
212 | requiresBuild: true
213 | optionalDependencies:
214 | '@esbuild/linux-loong64': 0.14.54
215 | esbuild-android-64: 0.14.54
216 | esbuild-android-arm64: 0.14.54
217 | esbuild-darwin-64: 0.14.54
218 | esbuild-darwin-arm64: 0.14.54
219 | esbuild-freebsd-64: 0.14.54
220 | esbuild-freebsd-arm64: 0.14.54
221 | esbuild-linux-32: 0.14.54
222 | esbuild-linux-64: 0.14.54
223 | esbuild-linux-arm: 0.14.54
224 | esbuild-linux-arm64: 0.14.54
225 | esbuild-linux-mips64le: 0.14.54
226 | esbuild-linux-ppc64le: 0.14.54
227 | esbuild-linux-riscv64: 0.14.54
228 | esbuild-linux-s390x: 0.14.54
229 | esbuild-netbsd-64: 0.14.54
230 | esbuild-openbsd-64: 0.14.54
231 | esbuild-sunos-64: 0.14.54
232 | esbuild-windows-32: 0.14.54
233 | esbuild-windows-64: 0.14.54
234 | esbuild-windows-arm64: 0.14.54
235 | dev: true
236 |
237 | /fsevents@2.3.3:
238 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
239 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
240 | os: [darwin]
241 | requiresBuild: true
242 | dev: true
243 | optional: true
244 |
245 | /has@1.0.4:
246 | resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==}
247 | engines: {node: '>= 0.4.0'}
248 | dev: true
249 |
250 | /is-core-module@2.13.0:
251 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
252 | dependencies:
253 | has: 1.0.4
254 | dev: true
255 |
256 | /nanoid@3.3.6:
257 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
258 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
259 | hasBin: true
260 | dev: true
261 |
262 | /path-parse@1.0.7:
263 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
264 | dev: true
265 |
266 | /picocolors@1.0.0:
267 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
268 | dev: true
269 |
270 | /postcss@8.4.31:
271 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
272 | engines: {node: ^10 || ^12 || >=14}
273 | dependencies:
274 | nanoid: 3.3.6
275 | picocolors: 1.0.0
276 | source-map-js: 1.0.2
277 | dev: true
278 |
279 | /resolve@1.22.6:
280 | resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
281 | hasBin: true
282 | dependencies:
283 | is-core-module: 2.13.0
284 | path-parse: 1.0.7
285 | supports-preserve-symlinks-flag: 1.0.0
286 | dev: true
287 |
288 | /rollup@2.77.3:
289 | resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==}
290 | engines: {node: '>=10.0.0'}
291 | hasBin: true
292 | optionalDependencies:
293 | fsevents: 2.3.3
294 | dev: true
295 |
296 | /source-map-js@1.0.2:
297 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
298 | engines: {node: '>=0.10.0'}
299 | dev: true
300 |
301 | /supports-preserve-symlinks-flag@1.0.0:
302 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
303 | engines: {node: '>= 0.4'}
304 | dev: true
305 |
306 | /vite@2.9.16:
307 | resolution: {integrity: sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==}
308 | engines: {node: '>=12.2.0'}
309 | hasBin: true
310 | peerDependencies:
311 | less: '*'
312 | sass: '*'
313 | stylus: '*'
314 | peerDependenciesMeta:
315 | less:
316 | optional: true
317 | sass:
318 | optional: true
319 | stylus:
320 | optional: true
321 | dependencies:
322 | esbuild: 0.14.54
323 | postcss: 8.4.31
324 | resolve: 1.22.6
325 | rollup: 2.77.3
326 | optionalDependencies:
327 | fsevents: 2.3.3
328 | dev: true
329 |
330 | /web-scheduler@1.3.1:
331 | resolution: {integrity: sha512-H0jCX6fGXzOlthjbYTQWBG8kfAN9POtai6eos4hRTZDWNsxDpk6DaNQr4uvYn+ZoxQxZsqEVjDsFl/+N/auESg==}
332 | dev: false
333 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | devDependencies:
8 | '@types/jest':
9 | specifier: ^29.5.5
10 | version: 29.5.5
11 | '@typescript-eslint/eslint-plugin':
12 | specifier: ^6.7.4
13 | version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2)
14 | '@typescript-eslint/parser':
15 | specifier: ^6.7.4
16 | version: 6.7.4(eslint@8.50.0)(typescript@5.2.2)
17 | eslint:
18 | specifier: ^8.50.0
19 | version: 8.50.0
20 | eslint-config-standard-with-typescript:
21 | specifier: ^39.1.0
22 | version: 39.1.0(@typescript-eslint/eslint-plugin@6.7.4)(eslint-plugin-import@2.28.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0)(typescript@5.2.2)
23 | eslint-plugin-import:
24 | specifier: ^2.28.1
25 | version: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)
26 | eslint-plugin-n:
27 | specifier: ^15.7.0
28 | version: 15.7.0(eslint@8.50.0)
29 | eslint-plugin-promise:
30 | specifier: ^6.1.1
31 | version: 6.1.1(eslint@8.50.0)
32 | jest:
33 | specifier: ^29.7.0
34 | version: 29.7.0
35 | standard:
36 | specifier: ^17.1.0
37 | version: 17.1.0(@typescript-eslint/parser@6.7.4)
38 | ts-jest:
39 | specifier: ^29.1.1
40 | version: 29.1.1(@babel/core@7.23.0)(jest@29.7.0)(typescript@5.2.2)
41 | typescript:
42 | specifier: ^5.2.2
43 | version: 5.2.2
44 |
45 | packages:
46 |
47 | /@aashutoshrathi/word-wrap@1.2.6:
48 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
49 | engines: {node: '>=0.10.0'}
50 | dev: true
51 |
52 | /@ampproject/remapping@2.2.1:
53 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
54 | engines: {node: '>=6.0.0'}
55 | dependencies:
56 | '@jridgewell/gen-mapping': 0.3.3
57 | '@jridgewell/trace-mapping': 0.3.19
58 | dev: true
59 |
60 | /@babel/code-frame@7.22.13:
61 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
62 | engines: {node: '>=6.9.0'}
63 | dependencies:
64 | '@babel/highlight': 7.22.20
65 | chalk: 2.4.2
66 | dev: true
67 |
68 | /@babel/compat-data@7.22.20:
69 | resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==}
70 | engines: {node: '>=6.9.0'}
71 | dev: true
72 |
73 | /@babel/core@7.23.0:
74 | resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==}
75 | engines: {node: '>=6.9.0'}
76 | dependencies:
77 | '@ampproject/remapping': 2.2.1
78 | '@babel/code-frame': 7.22.13
79 | '@babel/generator': 7.23.0
80 | '@babel/helper-compilation-targets': 7.22.15
81 | '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
82 | '@babel/helpers': 7.23.1
83 | '@babel/parser': 7.23.0
84 | '@babel/template': 7.22.15
85 | '@babel/traverse': 7.23.0
86 | '@babel/types': 7.23.0
87 | convert-source-map: 2.0.0
88 | debug: 4.3.4
89 | gensync: 1.0.0-beta.2
90 | json5: 2.2.3
91 | semver: 6.3.1
92 | transitivePeerDependencies:
93 | - supports-color
94 | dev: true
95 |
96 | /@babel/generator@7.23.0:
97 | resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
98 | engines: {node: '>=6.9.0'}
99 | dependencies:
100 | '@babel/types': 7.23.0
101 | '@jridgewell/gen-mapping': 0.3.3
102 | '@jridgewell/trace-mapping': 0.3.19
103 | jsesc: 2.5.2
104 | dev: true
105 |
106 | /@babel/helper-compilation-targets@7.22.15:
107 | resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==}
108 | engines: {node: '>=6.9.0'}
109 | dependencies:
110 | '@babel/compat-data': 7.22.20
111 | '@babel/helper-validator-option': 7.22.15
112 | browserslist: 4.22.1
113 | lru-cache: 5.1.1
114 | semver: 6.3.1
115 | dev: true
116 |
117 | /@babel/helper-environment-visitor@7.22.20:
118 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
119 | engines: {node: '>=6.9.0'}
120 | dev: true
121 |
122 | /@babel/helper-function-name@7.23.0:
123 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
124 | engines: {node: '>=6.9.0'}
125 | dependencies:
126 | '@babel/template': 7.22.15
127 | '@babel/types': 7.23.0
128 | dev: true
129 |
130 | /@babel/helper-hoist-variables@7.22.5:
131 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
132 | engines: {node: '>=6.9.0'}
133 | dependencies:
134 | '@babel/types': 7.23.0
135 | dev: true
136 |
137 | /@babel/helper-module-imports@7.22.15:
138 | resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
139 | engines: {node: '>=6.9.0'}
140 | dependencies:
141 | '@babel/types': 7.23.0
142 | dev: true
143 |
144 | /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0):
145 | resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==}
146 | engines: {node: '>=6.9.0'}
147 | peerDependencies:
148 | '@babel/core': ^7.0.0
149 | dependencies:
150 | '@babel/core': 7.23.0
151 | '@babel/helper-environment-visitor': 7.22.20
152 | '@babel/helper-module-imports': 7.22.15
153 | '@babel/helper-simple-access': 7.22.5
154 | '@babel/helper-split-export-declaration': 7.22.6
155 | '@babel/helper-validator-identifier': 7.22.20
156 | dev: true
157 |
158 | /@babel/helper-plugin-utils@7.22.5:
159 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
160 | engines: {node: '>=6.9.0'}
161 | dev: true
162 |
163 | /@babel/helper-simple-access@7.22.5:
164 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
165 | engines: {node: '>=6.9.0'}
166 | dependencies:
167 | '@babel/types': 7.23.0
168 | dev: true
169 |
170 | /@babel/helper-split-export-declaration@7.22.6:
171 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
172 | engines: {node: '>=6.9.0'}
173 | dependencies:
174 | '@babel/types': 7.23.0
175 | dev: true
176 |
177 | /@babel/helper-string-parser@7.22.5:
178 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
179 | engines: {node: '>=6.9.0'}
180 | dev: true
181 |
182 | /@babel/helper-validator-identifier@7.22.20:
183 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
184 | engines: {node: '>=6.9.0'}
185 | dev: true
186 |
187 | /@babel/helper-validator-option@7.22.15:
188 | resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==}
189 | engines: {node: '>=6.9.0'}
190 | dev: true
191 |
192 | /@babel/helpers@7.23.1:
193 | resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==}
194 | engines: {node: '>=6.9.0'}
195 | dependencies:
196 | '@babel/template': 7.22.15
197 | '@babel/traverse': 7.23.0
198 | '@babel/types': 7.23.0
199 | transitivePeerDependencies:
200 | - supports-color
201 | dev: true
202 |
203 | /@babel/highlight@7.22.20:
204 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
205 | engines: {node: '>=6.9.0'}
206 | dependencies:
207 | '@babel/helper-validator-identifier': 7.22.20
208 | chalk: 2.4.2
209 | js-tokens: 4.0.0
210 | dev: true
211 |
212 | /@babel/parser@7.23.0:
213 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
214 | engines: {node: '>=6.0.0'}
215 | hasBin: true
216 | dependencies:
217 | '@babel/types': 7.23.0
218 | dev: true
219 |
220 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.0):
221 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
222 | peerDependencies:
223 | '@babel/core': ^7.0.0-0
224 | dependencies:
225 | '@babel/core': 7.23.0
226 | '@babel/helper-plugin-utils': 7.22.5
227 | dev: true
228 |
229 | /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.0):
230 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
231 | peerDependencies:
232 | '@babel/core': ^7.0.0-0
233 | dependencies:
234 | '@babel/core': 7.23.0
235 | '@babel/helper-plugin-utils': 7.22.5
236 | dev: true
237 |
238 | /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.0):
239 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
240 | peerDependencies:
241 | '@babel/core': ^7.0.0-0
242 | dependencies:
243 | '@babel/core': 7.23.0
244 | '@babel/helper-plugin-utils': 7.22.5
245 | dev: true
246 |
247 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.0):
248 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
249 | peerDependencies:
250 | '@babel/core': ^7.0.0-0
251 | dependencies:
252 | '@babel/core': 7.23.0
253 | '@babel/helper-plugin-utils': 7.22.5
254 | dev: true
255 |
256 | /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.0):
257 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
258 | peerDependencies:
259 | '@babel/core': ^7.0.0-0
260 | dependencies:
261 | '@babel/core': 7.23.0
262 | '@babel/helper-plugin-utils': 7.22.5
263 | dev: true
264 |
265 | /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.0):
266 | resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
267 | engines: {node: '>=6.9.0'}
268 | peerDependencies:
269 | '@babel/core': ^7.0.0-0
270 | dependencies:
271 | '@babel/core': 7.23.0
272 | '@babel/helper-plugin-utils': 7.22.5
273 | dev: true
274 |
275 | /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.0):
276 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
277 | peerDependencies:
278 | '@babel/core': ^7.0.0-0
279 | dependencies:
280 | '@babel/core': 7.23.0
281 | '@babel/helper-plugin-utils': 7.22.5
282 | dev: true
283 |
284 | /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.0):
285 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
286 | peerDependencies:
287 | '@babel/core': ^7.0.0-0
288 | dependencies:
289 | '@babel/core': 7.23.0
290 | '@babel/helper-plugin-utils': 7.22.5
291 | dev: true
292 |
293 | /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.0):
294 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
295 | peerDependencies:
296 | '@babel/core': ^7.0.0-0
297 | dependencies:
298 | '@babel/core': 7.23.0
299 | '@babel/helper-plugin-utils': 7.22.5
300 | dev: true
301 |
302 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.0):
303 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
304 | peerDependencies:
305 | '@babel/core': ^7.0.0-0
306 | dependencies:
307 | '@babel/core': 7.23.0
308 | '@babel/helper-plugin-utils': 7.22.5
309 | dev: true
310 |
311 | /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.0):
312 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
313 | peerDependencies:
314 | '@babel/core': ^7.0.0-0
315 | dependencies:
316 | '@babel/core': 7.23.0
317 | '@babel/helper-plugin-utils': 7.22.5
318 | dev: true
319 |
320 | /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.0):
321 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
322 | peerDependencies:
323 | '@babel/core': ^7.0.0-0
324 | dependencies:
325 | '@babel/core': 7.23.0
326 | '@babel/helper-plugin-utils': 7.22.5
327 | dev: true
328 |
329 | /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.0):
330 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
331 | engines: {node: '>=6.9.0'}
332 | peerDependencies:
333 | '@babel/core': ^7.0.0-0
334 | dependencies:
335 | '@babel/core': 7.23.0
336 | '@babel/helper-plugin-utils': 7.22.5
337 | dev: true
338 |
339 | /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.0):
340 | resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==}
341 | engines: {node: '>=6.9.0'}
342 | peerDependencies:
343 | '@babel/core': ^7.0.0-0
344 | dependencies:
345 | '@babel/core': 7.23.0
346 | '@babel/helper-plugin-utils': 7.22.5
347 | dev: true
348 |
349 | /@babel/template@7.22.15:
350 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
351 | engines: {node: '>=6.9.0'}
352 | dependencies:
353 | '@babel/code-frame': 7.22.13
354 | '@babel/parser': 7.23.0
355 | '@babel/types': 7.23.0
356 | dev: true
357 |
358 | /@babel/traverse@7.23.0:
359 | resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==}
360 | engines: {node: '>=6.9.0'}
361 | dependencies:
362 | '@babel/code-frame': 7.22.13
363 | '@babel/generator': 7.23.0
364 | '@babel/helper-environment-visitor': 7.22.20
365 | '@babel/helper-function-name': 7.23.0
366 | '@babel/helper-hoist-variables': 7.22.5
367 | '@babel/helper-split-export-declaration': 7.22.6
368 | '@babel/parser': 7.23.0
369 | '@babel/types': 7.23.0
370 | debug: 4.3.4
371 | globals: 11.12.0
372 | transitivePeerDependencies:
373 | - supports-color
374 | dev: true
375 |
376 | /@babel/types@7.23.0:
377 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
378 | engines: {node: '>=6.9.0'}
379 | dependencies:
380 | '@babel/helper-string-parser': 7.22.5
381 | '@babel/helper-validator-identifier': 7.22.20
382 | to-fast-properties: 2.0.0
383 | dev: true
384 |
385 | /@bcoe/v8-coverage@0.2.3:
386 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
387 | dev: true
388 |
389 | /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0):
390 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
391 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
392 | peerDependencies:
393 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
394 | dependencies:
395 | eslint: 8.50.0
396 | eslint-visitor-keys: 3.4.3
397 | dev: true
398 |
399 | /@eslint-community/regexpp@4.9.1:
400 | resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==}
401 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
402 | dev: true
403 |
404 | /@eslint/eslintrc@2.1.2:
405 | resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
406 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
407 | dependencies:
408 | ajv: 6.12.6
409 | debug: 4.3.4
410 | espree: 9.6.1
411 | globals: 13.23.0
412 | ignore: 5.2.4
413 | import-fresh: 3.3.0
414 | js-yaml: 4.1.0
415 | minimatch: 3.1.2
416 | strip-json-comments: 3.1.1
417 | transitivePeerDependencies:
418 | - supports-color
419 | dev: true
420 |
421 | /@eslint/js@8.50.0:
422 | resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==}
423 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
424 | dev: true
425 |
426 | /@humanwhocodes/config-array@0.11.11:
427 | resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
428 | engines: {node: '>=10.10.0'}
429 | dependencies:
430 | '@humanwhocodes/object-schema': 1.2.1
431 | debug: 4.3.4
432 | minimatch: 3.1.2
433 | transitivePeerDependencies:
434 | - supports-color
435 | dev: true
436 |
437 | /@humanwhocodes/module-importer@1.0.1:
438 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
439 | engines: {node: '>=12.22'}
440 | dev: true
441 |
442 | /@humanwhocodes/object-schema@1.2.1:
443 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
444 | dev: true
445 |
446 | /@istanbuljs/load-nyc-config@1.1.0:
447 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
448 | engines: {node: '>=8'}
449 | dependencies:
450 | camelcase: 5.3.1
451 | find-up: 4.1.0
452 | get-package-type: 0.1.0
453 | js-yaml: 3.14.1
454 | resolve-from: 5.0.0
455 | dev: true
456 |
457 | /@istanbuljs/schema@0.1.3:
458 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
459 | engines: {node: '>=8'}
460 | dev: true
461 |
462 | /@jest/console@29.7.0:
463 | resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
464 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
465 | dependencies:
466 | '@jest/types': 29.6.3
467 | '@types/node': 20.8.2
468 | chalk: 4.1.2
469 | jest-message-util: 29.7.0
470 | jest-util: 29.7.0
471 | slash: 3.0.0
472 | dev: true
473 |
474 | /@jest/core@29.7.0:
475 | resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
476 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
477 | peerDependencies:
478 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
479 | peerDependenciesMeta:
480 | node-notifier:
481 | optional: true
482 | dependencies:
483 | '@jest/console': 29.7.0
484 | '@jest/reporters': 29.7.0
485 | '@jest/test-result': 29.7.0
486 | '@jest/transform': 29.7.0
487 | '@jest/types': 29.6.3
488 | '@types/node': 20.8.2
489 | ansi-escapes: 4.3.2
490 | chalk: 4.1.2
491 | ci-info: 3.9.0
492 | exit: 0.1.2
493 | graceful-fs: 4.2.11
494 | jest-changed-files: 29.7.0
495 | jest-config: 29.7.0(@types/node@20.8.2)
496 | jest-haste-map: 29.7.0
497 | jest-message-util: 29.7.0
498 | jest-regex-util: 29.6.3
499 | jest-resolve: 29.7.0
500 | jest-resolve-dependencies: 29.7.0
501 | jest-runner: 29.7.0
502 | jest-runtime: 29.7.0
503 | jest-snapshot: 29.7.0
504 | jest-util: 29.7.0
505 | jest-validate: 29.7.0
506 | jest-watcher: 29.7.0
507 | micromatch: 4.0.5
508 | pretty-format: 29.7.0
509 | slash: 3.0.0
510 | strip-ansi: 6.0.1
511 | transitivePeerDependencies:
512 | - babel-plugin-macros
513 | - supports-color
514 | - ts-node
515 | dev: true
516 |
517 | /@jest/environment@29.7.0:
518 | resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
519 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
520 | dependencies:
521 | '@jest/fake-timers': 29.7.0
522 | '@jest/types': 29.6.3
523 | '@types/node': 20.8.2
524 | jest-mock: 29.7.0
525 | dev: true
526 |
527 | /@jest/expect-utils@29.7.0:
528 | resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
529 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
530 | dependencies:
531 | jest-get-type: 29.6.3
532 | dev: true
533 |
534 | /@jest/expect@29.7.0:
535 | resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
536 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
537 | dependencies:
538 | expect: 29.7.0
539 | jest-snapshot: 29.7.0
540 | transitivePeerDependencies:
541 | - supports-color
542 | dev: true
543 |
544 | /@jest/fake-timers@29.7.0:
545 | resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
546 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
547 | dependencies:
548 | '@jest/types': 29.6.3
549 | '@sinonjs/fake-timers': 10.3.0
550 | '@types/node': 20.8.2
551 | jest-message-util: 29.7.0
552 | jest-mock: 29.7.0
553 | jest-util: 29.7.0
554 | dev: true
555 |
556 | /@jest/globals@29.7.0:
557 | resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
558 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
559 | dependencies:
560 | '@jest/environment': 29.7.0
561 | '@jest/expect': 29.7.0
562 | '@jest/types': 29.6.3
563 | jest-mock: 29.7.0
564 | transitivePeerDependencies:
565 | - supports-color
566 | dev: true
567 |
568 | /@jest/reporters@29.7.0:
569 | resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
570 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
571 | peerDependencies:
572 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
573 | peerDependenciesMeta:
574 | node-notifier:
575 | optional: true
576 | dependencies:
577 | '@bcoe/v8-coverage': 0.2.3
578 | '@jest/console': 29.7.0
579 | '@jest/test-result': 29.7.0
580 | '@jest/transform': 29.7.0
581 | '@jest/types': 29.6.3
582 | '@jridgewell/trace-mapping': 0.3.19
583 | '@types/node': 20.8.2
584 | chalk: 4.1.2
585 | collect-v8-coverage: 1.0.2
586 | exit: 0.1.2
587 | glob: 7.2.3
588 | graceful-fs: 4.2.11
589 | istanbul-lib-coverage: 3.2.0
590 | istanbul-lib-instrument: 6.0.1
591 | istanbul-lib-report: 3.0.1
592 | istanbul-lib-source-maps: 4.0.1
593 | istanbul-reports: 3.1.6
594 | jest-message-util: 29.7.0
595 | jest-util: 29.7.0
596 | jest-worker: 29.7.0
597 | slash: 3.0.0
598 | string-length: 4.0.2
599 | strip-ansi: 6.0.1
600 | v8-to-istanbul: 9.1.3
601 | transitivePeerDependencies:
602 | - supports-color
603 | dev: true
604 |
605 | /@jest/schemas@29.6.3:
606 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
607 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
608 | dependencies:
609 | '@sinclair/typebox': 0.27.8
610 | dev: true
611 |
612 | /@jest/source-map@29.6.3:
613 | resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
614 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
615 | dependencies:
616 | '@jridgewell/trace-mapping': 0.3.19
617 | callsites: 3.1.0
618 | graceful-fs: 4.2.11
619 | dev: true
620 |
621 | /@jest/test-result@29.7.0:
622 | resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
623 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
624 | dependencies:
625 | '@jest/console': 29.7.0
626 | '@jest/types': 29.6.3
627 | '@types/istanbul-lib-coverage': 2.0.4
628 | collect-v8-coverage: 1.0.2
629 | dev: true
630 |
631 | /@jest/test-sequencer@29.7.0:
632 | resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
633 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
634 | dependencies:
635 | '@jest/test-result': 29.7.0
636 | graceful-fs: 4.2.11
637 | jest-haste-map: 29.7.0
638 | slash: 3.0.0
639 | dev: true
640 |
641 | /@jest/transform@29.7.0:
642 | resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
643 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
644 | dependencies:
645 | '@babel/core': 7.23.0
646 | '@jest/types': 29.6.3
647 | '@jridgewell/trace-mapping': 0.3.19
648 | babel-plugin-istanbul: 6.1.1
649 | chalk: 4.1.2
650 | convert-source-map: 2.0.0
651 | fast-json-stable-stringify: 2.1.0
652 | graceful-fs: 4.2.11
653 | jest-haste-map: 29.7.0
654 | jest-regex-util: 29.6.3
655 | jest-util: 29.7.0
656 | micromatch: 4.0.5
657 | pirates: 4.0.6
658 | slash: 3.0.0
659 | write-file-atomic: 4.0.2
660 | transitivePeerDependencies:
661 | - supports-color
662 | dev: true
663 |
664 | /@jest/types@29.6.3:
665 | resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
666 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
667 | dependencies:
668 | '@jest/schemas': 29.6.3
669 | '@types/istanbul-lib-coverage': 2.0.4
670 | '@types/istanbul-reports': 3.0.2
671 | '@types/node': 20.8.2
672 | '@types/yargs': 17.0.26
673 | chalk: 4.1.2
674 | dev: true
675 |
676 | /@jridgewell/gen-mapping@0.3.3:
677 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
678 | engines: {node: '>=6.0.0'}
679 | dependencies:
680 | '@jridgewell/set-array': 1.1.2
681 | '@jridgewell/sourcemap-codec': 1.4.15
682 | '@jridgewell/trace-mapping': 0.3.19
683 | dev: true
684 |
685 | /@jridgewell/resolve-uri@3.1.1:
686 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
687 | engines: {node: '>=6.0.0'}
688 | dev: true
689 |
690 | /@jridgewell/set-array@1.1.2:
691 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
692 | engines: {node: '>=6.0.0'}
693 | dev: true
694 |
695 | /@jridgewell/sourcemap-codec@1.4.15:
696 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
697 | dev: true
698 |
699 | /@jridgewell/trace-mapping@0.3.19:
700 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
701 | dependencies:
702 | '@jridgewell/resolve-uri': 3.1.1
703 | '@jridgewell/sourcemap-codec': 1.4.15
704 | dev: true
705 |
706 | /@nodelib/fs.scandir@2.1.5:
707 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
708 | engines: {node: '>= 8'}
709 | dependencies:
710 | '@nodelib/fs.stat': 2.0.5
711 | run-parallel: 1.2.0
712 | dev: true
713 |
714 | /@nodelib/fs.stat@2.0.5:
715 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
716 | engines: {node: '>= 8'}
717 | dev: true
718 |
719 | /@nodelib/fs.walk@1.2.8:
720 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
721 | engines: {node: '>= 8'}
722 | dependencies:
723 | '@nodelib/fs.scandir': 2.1.5
724 | fastq: 1.15.0
725 | dev: true
726 |
727 | /@sinclair/typebox@0.27.8:
728 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
729 | dev: true
730 |
731 | /@sinonjs/commons@3.0.0:
732 | resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==}
733 | dependencies:
734 | type-detect: 4.0.8
735 | dev: true
736 |
737 | /@sinonjs/fake-timers@10.3.0:
738 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
739 | dependencies:
740 | '@sinonjs/commons': 3.0.0
741 | dev: true
742 |
743 | /@types/babel__core@7.20.2:
744 | resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==}
745 | dependencies:
746 | '@babel/parser': 7.23.0
747 | '@babel/types': 7.23.0
748 | '@types/babel__generator': 7.6.5
749 | '@types/babel__template': 7.4.2
750 | '@types/babel__traverse': 7.20.2
751 | dev: true
752 |
753 | /@types/babel__generator@7.6.5:
754 | resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==}
755 | dependencies:
756 | '@babel/types': 7.23.0
757 | dev: true
758 |
759 | /@types/babel__template@7.4.2:
760 | resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==}
761 | dependencies:
762 | '@babel/parser': 7.23.0
763 | '@babel/types': 7.23.0
764 | dev: true
765 |
766 | /@types/babel__traverse@7.20.2:
767 | resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==}
768 | dependencies:
769 | '@babel/types': 7.23.0
770 | dev: true
771 |
772 | /@types/graceful-fs@4.1.7:
773 | resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==}
774 | dependencies:
775 | '@types/node': 20.8.2
776 | dev: true
777 |
778 | /@types/istanbul-lib-coverage@2.0.4:
779 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
780 | dev: true
781 |
782 | /@types/istanbul-lib-report@3.0.1:
783 | resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==}
784 | dependencies:
785 | '@types/istanbul-lib-coverage': 2.0.4
786 | dev: true
787 |
788 | /@types/istanbul-reports@3.0.2:
789 | resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==}
790 | dependencies:
791 | '@types/istanbul-lib-report': 3.0.1
792 | dev: true
793 |
794 | /@types/jest@29.5.5:
795 | resolution: {integrity: sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==}
796 | dependencies:
797 | expect: 29.7.0
798 | pretty-format: 29.7.0
799 | dev: true
800 |
801 | /@types/json-schema@7.0.13:
802 | resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
803 | dev: true
804 |
805 | /@types/json5@0.0.29:
806 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
807 | dev: true
808 |
809 | /@types/node@20.8.2:
810 | resolution: {integrity: sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==}
811 | dev: true
812 |
813 | /@types/semver@7.5.3:
814 | resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==}
815 | dev: true
816 |
817 | /@types/stack-utils@2.0.1:
818 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
819 | dev: true
820 |
821 | /@types/yargs-parser@21.0.1:
822 | resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==}
823 | dev: true
824 |
825 | /@types/yargs@17.0.26:
826 | resolution: {integrity: sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==}
827 | dependencies:
828 | '@types/yargs-parser': 21.0.1
829 | dev: true
830 |
831 | /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2):
832 | resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==}
833 | engines: {node: ^16.0.0 || >=18.0.0}
834 | peerDependencies:
835 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
836 | eslint: ^7.0.0 || ^8.0.0
837 | typescript: '*'
838 | peerDependenciesMeta:
839 | typescript:
840 | optional: true
841 | dependencies:
842 | '@eslint-community/regexpp': 4.9.1
843 | '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
844 | '@typescript-eslint/scope-manager': 6.7.4
845 | '@typescript-eslint/type-utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
846 | '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
847 | '@typescript-eslint/visitor-keys': 6.7.4
848 | debug: 4.3.4
849 | eslint: 8.50.0
850 | graphemer: 1.4.0
851 | ignore: 5.2.4
852 | natural-compare: 1.4.0
853 | semver: 7.5.4
854 | ts-api-utils: 1.0.3(typescript@5.2.2)
855 | typescript: 5.2.2
856 | transitivePeerDependencies:
857 | - supports-color
858 | dev: true
859 |
860 | /@typescript-eslint/parser@6.7.4(eslint@8.50.0)(typescript@5.2.2):
861 | resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==}
862 | engines: {node: ^16.0.0 || >=18.0.0}
863 | peerDependencies:
864 | eslint: ^7.0.0 || ^8.0.0
865 | typescript: '*'
866 | peerDependenciesMeta:
867 | typescript:
868 | optional: true
869 | dependencies:
870 | '@typescript-eslint/scope-manager': 6.7.4
871 | '@typescript-eslint/types': 6.7.4
872 | '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2)
873 | '@typescript-eslint/visitor-keys': 6.7.4
874 | debug: 4.3.4
875 | eslint: 8.50.0
876 | typescript: 5.2.2
877 | transitivePeerDependencies:
878 | - supports-color
879 | dev: true
880 |
881 | /@typescript-eslint/scope-manager@6.7.4:
882 | resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==}
883 | engines: {node: ^16.0.0 || >=18.0.0}
884 | dependencies:
885 | '@typescript-eslint/types': 6.7.4
886 | '@typescript-eslint/visitor-keys': 6.7.4
887 | dev: true
888 |
889 | /@typescript-eslint/type-utils@6.7.4(eslint@8.50.0)(typescript@5.2.2):
890 | resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==}
891 | engines: {node: ^16.0.0 || >=18.0.0}
892 | peerDependencies:
893 | eslint: ^7.0.0 || ^8.0.0
894 | typescript: '*'
895 | peerDependenciesMeta:
896 | typescript:
897 | optional: true
898 | dependencies:
899 | '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2)
900 | '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
901 | debug: 4.3.4
902 | eslint: 8.50.0
903 | ts-api-utils: 1.0.3(typescript@5.2.2)
904 | typescript: 5.2.2
905 | transitivePeerDependencies:
906 | - supports-color
907 | dev: true
908 |
909 | /@typescript-eslint/types@6.7.4:
910 | resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==}
911 | engines: {node: ^16.0.0 || >=18.0.0}
912 | dev: true
913 |
914 | /@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2):
915 | resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==}
916 | engines: {node: ^16.0.0 || >=18.0.0}
917 | peerDependencies:
918 | typescript: '*'
919 | peerDependenciesMeta:
920 | typescript:
921 | optional: true
922 | dependencies:
923 | '@typescript-eslint/types': 6.7.4
924 | '@typescript-eslint/visitor-keys': 6.7.4
925 | debug: 4.3.4
926 | globby: 11.1.0
927 | is-glob: 4.0.3
928 | semver: 7.5.4
929 | ts-api-utils: 1.0.3(typescript@5.2.2)
930 | typescript: 5.2.2
931 | transitivePeerDependencies:
932 | - supports-color
933 | dev: true
934 |
935 | /@typescript-eslint/utils@6.7.4(eslint@8.50.0)(typescript@5.2.2):
936 | resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==}
937 | engines: {node: ^16.0.0 || >=18.0.0}
938 | peerDependencies:
939 | eslint: ^7.0.0 || ^8.0.0
940 | dependencies:
941 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
942 | '@types/json-schema': 7.0.13
943 | '@types/semver': 7.5.3
944 | '@typescript-eslint/scope-manager': 6.7.4
945 | '@typescript-eslint/types': 6.7.4
946 | '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2)
947 | eslint: 8.50.0
948 | semver: 7.5.4
949 | transitivePeerDependencies:
950 | - supports-color
951 | - typescript
952 | dev: true
953 |
954 | /@typescript-eslint/visitor-keys@6.7.4:
955 | resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==}
956 | engines: {node: ^16.0.0 || >=18.0.0}
957 | dependencies:
958 | '@typescript-eslint/types': 6.7.4
959 | eslint-visitor-keys: 3.4.3
960 | dev: true
961 |
962 | /acorn-jsx@5.3.2(acorn@8.10.0):
963 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
964 | peerDependencies:
965 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
966 | dependencies:
967 | acorn: 8.10.0
968 | dev: true
969 |
970 | /acorn@8.10.0:
971 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
972 | engines: {node: '>=0.4.0'}
973 | hasBin: true
974 | dev: true
975 |
976 | /ajv@6.12.6:
977 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
978 | dependencies:
979 | fast-deep-equal: 3.1.3
980 | fast-json-stable-stringify: 2.1.0
981 | json-schema-traverse: 0.4.1
982 | uri-js: 4.4.1
983 | dev: true
984 |
985 | /ansi-escapes@4.3.2:
986 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
987 | engines: {node: '>=8'}
988 | dependencies:
989 | type-fest: 0.21.3
990 | dev: true
991 |
992 | /ansi-regex@5.0.1:
993 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
994 | engines: {node: '>=8'}
995 | dev: true
996 |
997 | /ansi-styles@3.2.1:
998 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
999 | engines: {node: '>=4'}
1000 | dependencies:
1001 | color-convert: 1.9.3
1002 | dev: true
1003 |
1004 | /ansi-styles@4.3.0:
1005 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1006 | engines: {node: '>=8'}
1007 | dependencies:
1008 | color-convert: 2.0.1
1009 | dev: true
1010 |
1011 | /ansi-styles@5.2.0:
1012 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
1013 | engines: {node: '>=10'}
1014 | dev: true
1015 |
1016 | /anymatch@3.1.3:
1017 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
1018 | engines: {node: '>= 8'}
1019 | dependencies:
1020 | normalize-path: 3.0.0
1021 | picomatch: 2.3.1
1022 | dev: true
1023 |
1024 | /argparse@1.0.10:
1025 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
1026 | dependencies:
1027 | sprintf-js: 1.0.3
1028 | dev: true
1029 |
1030 | /argparse@2.0.1:
1031 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
1032 | dev: true
1033 |
1034 | /array-buffer-byte-length@1.0.0:
1035 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
1036 | dependencies:
1037 | call-bind: 1.0.2
1038 | is-array-buffer: 3.0.2
1039 | dev: true
1040 |
1041 | /array-includes@3.1.7:
1042 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
1043 | engines: {node: '>= 0.4'}
1044 | dependencies:
1045 | call-bind: 1.0.2
1046 | define-properties: 1.2.1
1047 | es-abstract: 1.22.2
1048 | get-intrinsic: 1.2.1
1049 | is-string: 1.0.7
1050 | dev: true
1051 |
1052 | /array-union@2.1.0:
1053 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
1054 | engines: {node: '>=8'}
1055 | dev: true
1056 |
1057 | /array.prototype.findlastindex@1.2.3:
1058 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
1059 | engines: {node: '>= 0.4'}
1060 | dependencies:
1061 | call-bind: 1.0.2
1062 | define-properties: 1.2.1
1063 | es-abstract: 1.22.2
1064 | es-shim-unscopables: 1.0.0
1065 | get-intrinsic: 1.2.1
1066 | dev: true
1067 |
1068 | /array.prototype.flat@1.3.2:
1069 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
1070 | engines: {node: '>= 0.4'}
1071 | dependencies:
1072 | call-bind: 1.0.2
1073 | define-properties: 1.2.1
1074 | es-abstract: 1.22.2
1075 | es-shim-unscopables: 1.0.0
1076 | dev: true
1077 |
1078 | /array.prototype.flatmap@1.3.2:
1079 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
1080 | engines: {node: '>= 0.4'}
1081 | dependencies:
1082 | call-bind: 1.0.2
1083 | define-properties: 1.2.1
1084 | es-abstract: 1.22.2
1085 | es-shim-unscopables: 1.0.0
1086 | dev: true
1087 |
1088 | /array.prototype.tosorted@1.1.2:
1089 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==}
1090 | dependencies:
1091 | call-bind: 1.0.2
1092 | define-properties: 1.2.1
1093 | es-abstract: 1.22.2
1094 | es-shim-unscopables: 1.0.0
1095 | get-intrinsic: 1.2.1
1096 | dev: true
1097 |
1098 | /arraybuffer.prototype.slice@1.0.2:
1099 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
1100 | engines: {node: '>= 0.4'}
1101 | dependencies:
1102 | array-buffer-byte-length: 1.0.0
1103 | call-bind: 1.0.2
1104 | define-properties: 1.2.1
1105 | es-abstract: 1.22.2
1106 | get-intrinsic: 1.2.1
1107 | is-array-buffer: 3.0.2
1108 | is-shared-array-buffer: 1.0.2
1109 | dev: true
1110 |
1111 | /asynciterator.prototype@1.0.0:
1112 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==}
1113 | dependencies:
1114 | has-symbols: 1.0.3
1115 | dev: true
1116 |
1117 | /available-typed-arrays@1.0.5:
1118 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
1119 | engines: {node: '>= 0.4'}
1120 | dev: true
1121 |
1122 | /babel-jest@29.7.0(@babel/core@7.23.0):
1123 | resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
1124 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1125 | peerDependencies:
1126 | '@babel/core': ^7.8.0
1127 | dependencies:
1128 | '@babel/core': 7.23.0
1129 | '@jest/transform': 29.7.0
1130 | '@types/babel__core': 7.20.2
1131 | babel-plugin-istanbul: 6.1.1
1132 | babel-preset-jest: 29.6.3(@babel/core@7.23.0)
1133 | chalk: 4.1.2
1134 | graceful-fs: 4.2.11
1135 | slash: 3.0.0
1136 | transitivePeerDependencies:
1137 | - supports-color
1138 | dev: true
1139 |
1140 | /babel-plugin-istanbul@6.1.1:
1141 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
1142 | engines: {node: '>=8'}
1143 | dependencies:
1144 | '@babel/helper-plugin-utils': 7.22.5
1145 | '@istanbuljs/load-nyc-config': 1.1.0
1146 | '@istanbuljs/schema': 0.1.3
1147 | istanbul-lib-instrument: 5.2.1
1148 | test-exclude: 6.0.0
1149 | transitivePeerDependencies:
1150 | - supports-color
1151 | dev: true
1152 |
1153 | /babel-plugin-jest-hoist@29.6.3:
1154 | resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
1155 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1156 | dependencies:
1157 | '@babel/template': 7.22.15
1158 | '@babel/types': 7.23.0
1159 | '@types/babel__core': 7.20.2
1160 | '@types/babel__traverse': 7.20.2
1161 | dev: true
1162 |
1163 | /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.0):
1164 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
1165 | peerDependencies:
1166 | '@babel/core': ^7.0.0
1167 | dependencies:
1168 | '@babel/core': 7.23.0
1169 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0)
1170 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.0)
1171 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.0)
1172 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.0)
1173 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0)
1174 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0)
1175 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0)
1176 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0)
1177 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0)
1178 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0)
1179 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0)
1180 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.0)
1181 | dev: true
1182 |
1183 | /babel-preset-jest@29.6.3(@babel/core@7.23.0):
1184 | resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
1185 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1186 | peerDependencies:
1187 | '@babel/core': ^7.0.0
1188 | dependencies:
1189 | '@babel/core': 7.23.0
1190 | babel-plugin-jest-hoist: 29.6.3
1191 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0)
1192 | dev: true
1193 |
1194 | /balanced-match@1.0.2:
1195 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1196 | dev: true
1197 |
1198 | /brace-expansion@1.1.11:
1199 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1200 | dependencies:
1201 | balanced-match: 1.0.2
1202 | concat-map: 0.0.1
1203 | dev: true
1204 |
1205 | /braces@3.0.2:
1206 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1207 | engines: {node: '>=8'}
1208 | dependencies:
1209 | fill-range: 7.0.1
1210 | dev: true
1211 |
1212 | /browserslist@4.22.1:
1213 | resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
1214 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1215 | hasBin: true
1216 | dependencies:
1217 | caniuse-lite: 1.0.30001546
1218 | electron-to-chromium: 1.4.543
1219 | node-releases: 2.0.13
1220 | update-browserslist-db: 1.0.13(browserslist@4.22.1)
1221 | dev: true
1222 |
1223 | /bs-logger@0.2.6:
1224 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
1225 | engines: {node: '>= 6'}
1226 | dependencies:
1227 | fast-json-stable-stringify: 2.1.0
1228 | dev: true
1229 |
1230 | /bser@2.1.1:
1231 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
1232 | dependencies:
1233 | node-int64: 0.4.0
1234 | dev: true
1235 |
1236 | /buffer-from@1.1.2:
1237 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
1238 | dev: true
1239 |
1240 | /builtins@5.0.1:
1241 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
1242 | dependencies:
1243 | semver: 7.5.4
1244 | dev: true
1245 |
1246 | /call-bind@1.0.2:
1247 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
1248 | dependencies:
1249 | function-bind: 1.1.1
1250 | get-intrinsic: 1.2.1
1251 | dev: true
1252 |
1253 | /callsites@3.1.0:
1254 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
1255 | engines: {node: '>=6'}
1256 | dev: true
1257 |
1258 | /camelcase@5.3.1:
1259 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
1260 | engines: {node: '>=6'}
1261 | dev: true
1262 |
1263 | /camelcase@6.3.0:
1264 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
1265 | engines: {node: '>=10'}
1266 | dev: true
1267 |
1268 | /caniuse-lite@1.0.30001546:
1269 | resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==}
1270 | dev: true
1271 |
1272 | /chalk@2.4.2:
1273 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
1274 | engines: {node: '>=4'}
1275 | dependencies:
1276 | ansi-styles: 3.2.1
1277 | escape-string-regexp: 1.0.5
1278 | supports-color: 5.5.0
1279 | dev: true
1280 |
1281 | /chalk@4.1.2:
1282 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1283 | engines: {node: '>=10'}
1284 | dependencies:
1285 | ansi-styles: 4.3.0
1286 | supports-color: 7.2.0
1287 | dev: true
1288 |
1289 | /char-regex@1.0.2:
1290 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
1291 | engines: {node: '>=10'}
1292 | dev: true
1293 |
1294 | /ci-info@3.9.0:
1295 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
1296 | engines: {node: '>=8'}
1297 | dev: true
1298 |
1299 | /cjs-module-lexer@1.2.3:
1300 | resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
1301 | dev: true
1302 |
1303 | /cliui@8.0.1:
1304 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
1305 | engines: {node: '>=12'}
1306 | dependencies:
1307 | string-width: 4.2.3
1308 | strip-ansi: 6.0.1
1309 | wrap-ansi: 7.0.0
1310 | dev: true
1311 |
1312 | /co@4.6.0:
1313 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
1314 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
1315 | dev: true
1316 |
1317 | /collect-v8-coverage@1.0.2:
1318 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==}
1319 | dev: true
1320 |
1321 | /color-convert@1.9.3:
1322 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
1323 | dependencies:
1324 | color-name: 1.1.3
1325 | dev: true
1326 |
1327 | /color-convert@2.0.1:
1328 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1329 | engines: {node: '>=7.0.0'}
1330 | dependencies:
1331 | color-name: 1.1.4
1332 | dev: true
1333 |
1334 | /color-name@1.1.3:
1335 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
1336 | dev: true
1337 |
1338 | /color-name@1.1.4:
1339 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1340 | dev: true
1341 |
1342 | /concat-map@0.0.1:
1343 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1344 | dev: true
1345 |
1346 | /convert-source-map@2.0.0:
1347 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
1348 | dev: true
1349 |
1350 | /create-jest@29.7.0:
1351 | resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
1352 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1353 | hasBin: true
1354 | dependencies:
1355 | '@jest/types': 29.6.3
1356 | chalk: 4.1.2
1357 | exit: 0.1.2
1358 | graceful-fs: 4.2.11
1359 | jest-config: 29.7.0(@types/node@20.8.2)
1360 | jest-util: 29.7.0
1361 | prompts: 2.4.2
1362 | transitivePeerDependencies:
1363 | - '@types/node'
1364 | - babel-plugin-macros
1365 | - supports-color
1366 | - ts-node
1367 | dev: true
1368 |
1369 | /cross-spawn@7.0.3:
1370 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1371 | engines: {node: '>= 8'}
1372 | dependencies:
1373 | path-key: 3.1.1
1374 | shebang-command: 2.0.0
1375 | which: 2.0.2
1376 | dev: true
1377 |
1378 | /debug@3.2.7:
1379 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
1380 | peerDependencies:
1381 | supports-color: '*'
1382 | peerDependenciesMeta:
1383 | supports-color:
1384 | optional: true
1385 | dependencies:
1386 | ms: 2.1.2
1387 | dev: true
1388 |
1389 | /debug@4.3.4:
1390 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1391 | engines: {node: '>=6.0'}
1392 | peerDependencies:
1393 | supports-color: '*'
1394 | peerDependenciesMeta:
1395 | supports-color:
1396 | optional: true
1397 | dependencies:
1398 | ms: 2.1.2
1399 | dev: true
1400 |
1401 | /dedent@1.5.1:
1402 | resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==}
1403 | peerDependencies:
1404 | babel-plugin-macros: ^3.1.0
1405 | peerDependenciesMeta:
1406 | babel-plugin-macros:
1407 | optional: true
1408 | dev: true
1409 |
1410 | /deep-is@0.1.4:
1411 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1412 | dev: true
1413 |
1414 | /deepmerge@4.3.1:
1415 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
1416 | engines: {node: '>=0.10.0'}
1417 | dev: true
1418 |
1419 | /define-data-property@1.1.0:
1420 | resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==}
1421 | engines: {node: '>= 0.4'}
1422 | dependencies:
1423 | get-intrinsic: 1.2.1
1424 | gopd: 1.0.1
1425 | has-property-descriptors: 1.0.0
1426 | dev: true
1427 |
1428 | /define-properties@1.2.1:
1429 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
1430 | engines: {node: '>= 0.4'}
1431 | dependencies:
1432 | define-data-property: 1.1.0
1433 | has-property-descriptors: 1.0.0
1434 | object-keys: 1.1.1
1435 | dev: true
1436 |
1437 | /detect-newline@3.1.0:
1438 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
1439 | engines: {node: '>=8'}
1440 | dev: true
1441 |
1442 | /diff-sequences@29.6.3:
1443 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
1444 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1445 | dev: true
1446 |
1447 | /dir-glob@3.0.1:
1448 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1449 | engines: {node: '>=8'}
1450 | dependencies:
1451 | path-type: 4.0.0
1452 | dev: true
1453 |
1454 | /doctrine@2.1.0:
1455 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
1456 | engines: {node: '>=0.10.0'}
1457 | dependencies:
1458 | esutils: 2.0.3
1459 | dev: true
1460 |
1461 | /doctrine@3.0.0:
1462 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1463 | engines: {node: '>=6.0.0'}
1464 | dependencies:
1465 | esutils: 2.0.3
1466 | dev: true
1467 |
1468 | /electron-to-chromium@1.4.543:
1469 | resolution: {integrity: sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g==}
1470 | dev: true
1471 |
1472 | /emittery@0.13.1:
1473 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
1474 | engines: {node: '>=12'}
1475 | dev: true
1476 |
1477 | /emoji-regex@8.0.0:
1478 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1479 | dev: true
1480 |
1481 | /error-ex@1.3.2:
1482 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1483 | dependencies:
1484 | is-arrayish: 0.2.1
1485 | dev: true
1486 |
1487 | /es-abstract@1.22.2:
1488 | resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==}
1489 | engines: {node: '>= 0.4'}
1490 | dependencies:
1491 | array-buffer-byte-length: 1.0.0
1492 | arraybuffer.prototype.slice: 1.0.2
1493 | available-typed-arrays: 1.0.5
1494 | call-bind: 1.0.2
1495 | es-set-tostringtag: 2.0.1
1496 | es-to-primitive: 1.2.1
1497 | function.prototype.name: 1.1.6
1498 | get-intrinsic: 1.2.1
1499 | get-symbol-description: 1.0.0
1500 | globalthis: 1.0.3
1501 | gopd: 1.0.1
1502 | has: 1.0.4
1503 | has-property-descriptors: 1.0.0
1504 | has-proto: 1.0.1
1505 | has-symbols: 1.0.3
1506 | internal-slot: 1.0.5
1507 | is-array-buffer: 3.0.2
1508 | is-callable: 1.2.7
1509 | is-negative-zero: 2.0.2
1510 | is-regex: 1.1.4
1511 | is-shared-array-buffer: 1.0.2
1512 | is-string: 1.0.7
1513 | is-typed-array: 1.1.12
1514 | is-weakref: 1.0.2
1515 | object-inspect: 1.12.3
1516 | object-keys: 1.1.1
1517 | object.assign: 4.1.4
1518 | regexp.prototype.flags: 1.5.1
1519 | safe-array-concat: 1.0.1
1520 | safe-regex-test: 1.0.0
1521 | string.prototype.trim: 1.2.8
1522 | string.prototype.trimend: 1.0.7
1523 | string.prototype.trimstart: 1.0.7
1524 | typed-array-buffer: 1.0.0
1525 | typed-array-byte-length: 1.0.0
1526 | typed-array-byte-offset: 1.0.0
1527 | typed-array-length: 1.0.4
1528 | unbox-primitive: 1.0.2
1529 | which-typed-array: 1.1.11
1530 | dev: true
1531 |
1532 | /es-iterator-helpers@1.0.15:
1533 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==}
1534 | dependencies:
1535 | asynciterator.prototype: 1.0.0
1536 | call-bind: 1.0.2
1537 | define-properties: 1.2.1
1538 | es-abstract: 1.22.2
1539 | es-set-tostringtag: 2.0.1
1540 | function-bind: 1.1.1
1541 | get-intrinsic: 1.2.1
1542 | globalthis: 1.0.3
1543 | has-property-descriptors: 1.0.0
1544 | has-proto: 1.0.1
1545 | has-symbols: 1.0.3
1546 | internal-slot: 1.0.5
1547 | iterator.prototype: 1.1.2
1548 | safe-array-concat: 1.0.1
1549 | dev: true
1550 |
1551 | /es-set-tostringtag@2.0.1:
1552 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
1553 | engines: {node: '>= 0.4'}
1554 | dependencies:
1555 | get-intrinsic: 1.2.1
1556 | has: 1.0.4
1557 | has-tostringtag: 1.0.0
1558 | dev: true
1559 |
1560 | /es-shim-unscopables@1.0.0:
1561 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1562 | dependencies:
1563 | has: 1.0.4
1564 | dev: true
1565 |
1566 | /es-to-primitive@1.2.1:
1567 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1568 | engines: {node: '>= 0.4'}
1569 | dependencies:
1570 | is-callable: 1.2.7
1571 | is-date-object: 1.0.5
1572 | is-symbol: 1.0.4
1573 | dev: true
1574 |
1575 | /escalade@3.1.1:
1576 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1577 | engines: {node: '>=6'}
1578 | dev: true
1579 |
1580 | /escape-string-regexp@1.0.5:
1581 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1582 | engines: {node: '>=0.8.0'}
1583 | dev: true
1584 |
1585 | /escape-string-regexp@2.0.0:
1586 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
1587 | engines: {node: '>=8'}
1588 | dev: true
1589 |
1590 | /escape-string-regexp@4.0.0:
1591 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1592 | engines: {node: '>=10'}
1593 | dev: true
1594 |
1595 | /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.33.2)(eslint@8.50.0):
1596 | resolution: {integrity: sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==}
1597 | peerDependencies:
1598 | eslint: ^8.8.0
1599 | eslint-plugin-react: ^7.28.0
1600 | dependencies:
1601 | eslint: 8.50.0
1602 | eslint-plugin-react: 7.33.2(eslint@8.50.0)
1603 | dev: true
1604 |
1605 | /eslint-config-standard-with-typescript@39.1.0(@typescript-eslint/eslint-plugin@6.7.4)(eslint-plugin-import@2.28.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0)(typescript@5.2.2):
1606 | resolution: {integrity: sha512-5+SPKis3yr6T1X6wSA7HhDuumTRMrTDMcsTrIWhdZuI+sX3e8SPGZYzuJxVxdc239Yo718dEVEVyJhHI6jUjrQ==}
1607 | peerDependencies:
1608 | '@typescript-eslint/eslint-plugin': ^6.4.0
1609 | eslint: ^8.0.1
1610 | eslint-plugin-import: ^2.25.2
1611 | eslint-plugin-n: '^15.0.0 || ^16.0.0 '
1612 | eslint-plugin-promise: ^6.0.0
1613 | typescript: '*'
1614 | dependencies:
1615 | '@typescript-eslint/eslint-plugin': 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2)
1616 | '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
1617 | eslint: 8.50.0
1618 | eslint-config-standard: 17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0)
1619 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)
1620 | eslint-plugin-n: 15.7.0(eslint@8.50.0)
1621 | eslint-plugin-promise: 6.1.1(eslint@8.50.0)
1622 | typescript: 5.2.2
1623 | transitivePeerDependencies:
1624 | - supports-color
1625 | dev: true
1626 |
1627 | /eslint-config-standard@17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0):
1628 | resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==}
1629 | engines: {node: '>=12.0.0'}
1630 | peerDependencies:
1631 | eslint: ^8.0.1
1632 | eslint-plugin-import: ^2.25.2
1633 | eslint-plugin-n: '^15.0.0 || ^16.0.0 '
1634 | eslint-plugin-promise: ^6.0.0
1635 | dependencies:
1636 | eslint: 8.50.0
1637 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)
1638 | eslint-plugin-n: 15.7.0(eslint@8.50.0)
1639 | eslint-plugin-promise: 6.1.1(eslint@8.50.0)
1640 | dev: true
1641 |
1642 | /eslint-import-resolver-node@0.3.9:
1643 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
1644 | dependencies:
1645 | debug: 3.2.7
1646 | is-core-module: 2.13.0
1647 | resolve: 1.22.6
1648 | transitivePeerDependencies:
1649 | - supports-color
1650 | dev: true
1651 |
1652 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0):
1653 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1654 | engines: {node: '>=4'}
1655 | peerDependencies:
1656 | '@typescript-eslint/parser': '*'
1657 | eslint: '*'
1658 | eslint-import-resolver-node: '*'
1659 | eslint-import-resolver-typescript: '*'
1660 | eslint-import-resolver-webpack: '*'
1661 | peerDependenciesMeta:
1662 | '@typescript-eslint/parser':
1663 | optional: true
1664 | eslint:
1665 | optional: true
1666 | eslint-import-resolver-node:
1667 | optional: true
1668 | eslint-import-resolver-typescript:
1669 | optional: true
1670 | eslint-import-resolver-webpack:
1671 | optional: true
1672 | dependencies:
1673 | '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
1674 | debug: 3.2.7
1675 | eslint: 8.50.0
1676 | eslint-import-resolver-node: 0.3.9
1677 | transitivePeerDependencies:
1678 | - supports-color
1679 | dev: true
1680 |
1681 | /eslint-plugin-es@4.1.0(eslint@8.50.0):
1682 | resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==}
1683 | engines: {node: '>=8.10.0'}
1684 | peerDependencies:
1685 | eslint: '>=4.19.1'
1686 | dependencies:
1687 | eslint: 8.50.0
1688 | eslint-utils: 2.1.0
1689 | regexpp: 3.2.0
1690 | dev: true
1691 |
1692 | /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0):
1693 | resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
1694 | engines: {node: '>=4'}
1695 | peerDependencies:
1696 | '@typescript-eslint/parser': '*'
1697 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
1698 | peerDependenciesMeta:
1699 | '@typescript-eslint/parser':
1700 | optional: true
1701 | dependencies:
1702 | '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
1703 | array-includes: 3.1.7
1704 | array.prototype.findlastindex: 1.2.3
1705 | array.prototype.flat: 1.3.2
1706 | array.prototype.flatmap: 1.3.2
1707 | debug: 3.2.7
1708 | doctrine: 2.1.0
1709 | eslint: 8.50.0
1710 | eslint-import-resolver-node: 0.3.9
1711 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0)
1712 | has: 1.0.4
1713 | is-core-module: 2.13.0
1714 | is-glob: 4.0.3
1715 | minimatch: 3.1.2
1716 | object.fromentries: 2.0.7
1717 | object.groupby: 1.0.1
1718 | object.values: 1.1.7
1719 | semver: 6.3.1
1720 | tsconfig-paths: 3.14.2
1721 | transitivePeerDependencies:
1722 | - eslint-import-resolver-typescript
1723 | - eslint-import-resolver-webpack
1724 | - supports-color
1725 | dev: true
1726 |
1727 | /eslint-plugin-n@15.7.0(eslint@8.50.0):
1728 | resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==}
1729 | engines: {node: '>=12.22.0'}
1730 | peerDependencies:
1731 | eslint: '>=7.0.0'
1732 | dependencies:
1733 | builtins: 5.0.1
1734 | eslint: 8.50.0
1735 | eslint-plugin-es: 4.1.0(eslint@8.50.0)
1736 | eslint-utils: 3.0.0(eslint@8.50.0)
1737 | ignore: 5.2.4
1738 | is-core-module: 2.13.0
1739 | minimatch: 3.1.2
1740 | resolve: 1.22.6
1741 | semver: 7.5.4
1742 | dev: true
1743 |
1744 | /eslint-plugin-promise@6.1.1(eslint@8.50.0):
1745 | resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==}
1746 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1747 | peerDependencies:
1748 | eslint: ^7.0.0 || ^8.0.0
1749 | dependencies:
1750 | eslint: 8.50.0
1751 | dev: true
1752 |
1753 | /eslint-plugin-react@7.33.2(eslint@8.50.0):
1754 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==}
1755 | engines: {node: '>=4'}
1756 | peerDependencies:
1757 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1758 | dependencies:
1759 | array-includes: 3.1.7
1760 | array.prototype.flatmap: 1.3.2
1761 | array.prototype.tosorted: 1.1.2
1762 | doctrine: 2.1.0
1763 | es-iterator-helpers: 1.0.15
1764 | eslint: 8.50.0
1765 | estraverse: 5.3.0
1766 | jsx-ast-utils: 3.3.5
1767 | minimatch: 3.1.2
1768 | object.entries: 1.1.7
1769 | object.fromentries: 2.0.7
1770 | object.hasown: 1.1.3
1771 | object.values: 1.1.7
1772 | prop-types: 15.8.1
1773 | resolve: 2.0.0-next.4
1774 | semver: 6.3.1
1775 | string.prototype.matchall: 4.0.10
1776 | dev: true
1777 |
1778 | /eslint-scope@7.2.2:
1779 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1780 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1781 | dependencies:
1782 | esrecurse: 4.3.0
1783 | estraverse: 5.3.0
1784 | dev: true
1785 |
1786 | /eslint-utils@2.1.0:
1787 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
1788 | engines: {node: '>=6'}
1789 | dependencies:
1790 | eslint-visitor-keys: 1.3.0
1791 | dev: true
1792 |
1793 | /eslint-utils@3.0.0(eslint@8.50.0):
1794 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
1795 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
1796 | peerDependencies:
1797 | eslint: '>=5'
1798 | dependencies:
1799 | eslint: 8.50.0
1800 | eslint-visitor-keys: 2.1.0
1801 | dev: true
1802 |
1803 | /eslint-visitor-keys@1.3.0:
1804 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
1805 | engines: {node: '>=4'}
1806 | dev: true
1807 |
1808 | /eslint-visitor-keys@2.1.0:
1809 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
1810 | engines: {node: '>=10'}
1811 | dev: true
1812 |
1813 | /eslint-visitor-keys@3.4.3:
1814 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1815 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1816 | dev: true
1817 |
1818 | /eslint@8.50.0:
1819 | resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==}
1820 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1821 | hasBin: true
1822 | dependencies:
1823 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
1824 | '@eslint-community/regexpp': 4.9.1
1825 | '@eslint/eslintrc': 2.1.2
1826 | '@eslint/js': 8.50.0
1827 | '@humanwhocodes/config-array': 0.11.11
1828 | '@humanwhocodes/module-importer': 1.0.1
1829 | '@nodelib/fs.walk': 1.2.8
1830 | ajv: 6.12.6
1831 | chalk: 4.1.2
1832 | cross-spawn: 7.0.3
1833 | debug: 4.3.4
1834 | doctrine: 3.0.0
1835 | escape-string-regexp: 4.0.0
1836 | eslint-scope: 7.2.2
1837 | eslint-visitor-keys: 3.4.3
1838 | espree: 9.6.1
1839 | esquery: 1.5.0
1840 | esutils: 2.0.3
1841 | fast-deep-equal: 3.1.3
1842 | file-entry-cache: 6.0.1
1843 | find-up: 5.0.0
1844 | glob-parent: 6.0.2
1845 | globals: 13.23.0
1846 | graphemer: 1.4.0
1847 | ignore: 5.2.4
1848 | imurmurhash: 0.1.4
1849 | is-glob: 4.0.3
1850 | is-path-inside: 3.0.3
1851 | js-yaml: 4.1.0
1852 | json-stable-stringify-without-jsonify: 1.0.1
1853 | levn: 0.4.1
1854 | lodash.merge: 4.6.2
1855 | minimatch: 3.1.2
1856 | natural-compare: 1.4.0
1857 | optionator: 0.9.3
1858 | strip-ansi: 6.0.1
1859 | text-table: 0.2.0
1860 | transitivePeerDependencies:
1861 | - supports-color
1862 | dev: true
1863 |
1864 | /espree@9.6.1:
1865 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1866 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1867 | dependencies:
1868 | acorn: 8.10.0
1869 | acorn-jsx: 5.3.2(acorn@8.10.0)
1870 | eslint-visitor-keys: 3.4.3
1871 | dev: true
1872 |
1873 | /esprima@4.0.1:
1874 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1875 | engines: {node: '>=4'}
1876 | hasBin: true
1877 | dev: true
1878 |
1879 | /esquery@1.5.0:
1880 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1881 | engines: {node: '>=0.10'}
1882 | dependencies:
1883 | estraverse: 5.3.0
1884 | dev: true
1885 |
1886 | /esrecurse@4.3.0:
1887 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1888 | engines: {node: '>=4.0'}
1889 | dependencies:
1890 | estraverse: 5.3.0
1891 | dev: true
1892 |
1893 | /estraverse@5.3.0:
1894 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1895 | engines: {node: '>=4.0'}
1896 | dev: true
1897 |
1898 | /esutils@2.0.3:
1899 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1900 | engines: {node: '>=0.10.0'}
1901 | dev: true
1902 |
1903 | /execa@5.1.1:
1904 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1905 | engines: {node: '>=10'}
1906 | dependencies:
1907 | cross-spawn: 7.0.3
1908 | get-stream: 6.0.1
1909 | human-signals: 2.1.0
1910 | is-stream: 2.0.1
1911 | merge-stream: 2.0.0
1912 | npm-run-path: 4.0.1
1913 | onetime: 5.1.2
1914 | signal-exit: 3.0.7
1915 | strip-final-newline: 2.0.0
1916 | dev: true
1917 |
1918 | /exit@0.1.2:
1919 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
1920 | engines: {node: '>= 0.8.0'}
1921 | dev: true
1922 |
1923 | /expect@29.7.0:
1924 | resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
1925 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1926 | dependencies:
1927 | '@jest/expect-utils': 29.7.0
1928 | jest-get-type: 29.6.3
1929 | jest-matcher-utils: 29.7.0
1930 | jest-message-util: 29.7.0
1931 | jest-util: 29.7.0
1932 | dev: true
1933 |
1934 | /fast-deep-equal@3.1.3:
1935 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1936 | dev: true
1937 |
1938 | /fast-glob@3.3.1:
1939 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
1940 | engines: {node: '>=8.6.0'}
1941 | dependencies:
1942 | '@nodelib/fs.stat': 2.0.5
1943 | '@nodelib/fs.walk': 1.2.8
1944 | glob-parent: 5.1.2
1945 | merge2: 1.4.1
1946 | micromatch: 4.0.5
1947 | dev: true
1948 |
1949 | /fast-json-stable-stringify@2.1.0:
1950 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1951 | dev: true
1952 |
1953 | /fast-levenshtein@2.0.6:
1954 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1955 | dev: true
1956 |
1957 | /fastq@1.15.0:
1958 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1959 | dependencies:
1960 | reusify: 1.0.4
1961 | dev: true
1962 |
1963 | /fb-watchman@2.0.2:
1964 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
1965 | dependencies:
1966 | bser: 2.1.1
1967 | dev: true
1968 |
1969 | /file-entry-cache@6.0.1:
1970 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1971 | engines: {node: ^10.12.0 || >=12.0.0}
1972 | dependencies:
1973 | flat-cache: 3.1.0
1974 | dev: true
1975 |
1976 | /fill-range@7.0.1:
1977 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1978 | engines: {node: '>=8'}
1979 | dependencies:
1980 | to-regex-range: 5.0.1
1981 | dev: true
1982 |
1983 | /find-up@3.0.0:
1984 | resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
1985 | engines: {node: '>=6'}
1986 | dependencies:
1987 | locate-path: 3.0.0
1988 | dev: true
1989 |
1990 | /find-up@4.1.0:
1991 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1992 | engines: {node: '>=8'}
1993 | dependencies:
1994 | locate-path: 5.0.0
1995 | path-exists: 4.0.0
1996 | dev: true
1997 |
1998 | /find-up@5.0.0:
1999 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
2000 | engines: {node: '>=10'}
2001 | dependencies:
2002 | locate-path: 6.0.0
2003 | path-exists: 4.0.0
2004 | dev: true
2005 |
2006 | /flat-cache@3.1.0:
2007 | resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==}
2008 | engines: {node: '>=12.0.0'}
2009 | dependencies:
2010 | flatted: 3.2.9
2011 | keyv: 4.5.3
2012 | rimraf: 3.0.2
2013 | dev: true
2014 |
2015 | /flatted@3.2.9:
2016 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
2017 | dev: true
2018 |
2019 | /for-each@0.3.3:
2020 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
2021 | dependencies:
2022 | is-callable: 1.2.7
2023 | dev: true
2024 |
2025 | /fs.realpath@1.0.0:
2026 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
2027 | dev: true
2028 |
2029 | /fsevents@2.3.3:
2030 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
2031 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
2032 | os: [darwin]
2033 | requiresBuild: true
2034 | dev: true
2035 | optional: true
2036 |
2037 | /function-bind@1.1.1:
2038 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
2039 | dev: true
2040 |
2041 | /function.prototype.name@1.1.6:
2042 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
2043 | engines: {node: '>= 0.4'}
2044 | dependencies:
2045 | call-bind: 1.0.2
2046 | define-properties: 1.2.1
2047 | es-abstract: 1.22.2
2048 | functions-have-names: 1.2.3
2049 | dev: true
2050 |
2051 | /functions-have-names@1.2.3:
2052 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
2053 | dev: true
2054 |
2055 | /gensync@1.0.0-beta.2:
2056 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
2057 | engines: {node: '>=6.9.0'}
2058 | dev: true
2059 |
2060 | /get-caller-file@2.0.5:
2061 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
2062 | engines: {node: 6.* || 8.* || >= 10.*}
2063 | dev: true
2064 |
2065 | /get-intrinsic@1.2.1:
2066 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
2067 | dependencies:
2068 | function-bind: 1.1.1
2069 | has: 1.0.4
2070 | has-proto: 1.0.1
2071 | has-symbols: 1.0.3
2072 | dev: true
2073 |
2074 | /get-package-type@0.1.0:
2075 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
2076 | engines: {node: '>=8.0.0'}
2077 | dev: true
2078 |
2079 | /get-stdin@8.0.0:
2080 | resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==}
2081 | engines: {node: '>=10'}
2082 | dev: true
2083 |
2084 | /get-stream@6.0.1:
2085 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
2086 | engines: {node: '>=10'}
2087 | dev: true
2088 |
2089 | /get-symbol-description@1.0.0:
2090 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
2091 | engines: {node: '>= 0.4'}
2092 | dependencies:
2093 | call-bind: 1.0.2
2094 | get-intrinsic: 1.2.1
2095 | dev: true
2096 |
2097 | /glob-parent@5.1.2:
2098 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
2099 | engines: {node: '>= 6'}
2100 | dependencies:
2101 | is-glob: 4.0.3
2102 | dev: true
2103 |
2104 | /glob-parent@6.0.2:
2105 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
2106 | engines: {node: '>=10.13.0'}
2107 | dependencies:
2108 | is-glob: 4.0.3
2109 | dev: true
2110 |
2111 | /glob@7.2.3:
2112 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
2113 | dependencies:
2114 | fs.realpath: 1.0.0
2115 | inflight: 1.0.6
2116 | inherits: 2.0.4
2117 | minimatch: 3.1.2
2118 | once: 1.4.0
2119 | path-is-absolute: 1.0.1
2120 | dev: true
2121 |
2122 | /globals@11.12.0:
2123 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
2124 | engines: {node: '>=4'}
2125 | dev: true
2126 |
2127 | /globals@13.23.0:
2128 | resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==}
2129 | engines: {node: '>=8'}
2130 | dependencies:
2131 | type-fest: 0.20.2
2132 | dev: true
2133 |
2134 | /globalthis@1.0.3:
2135 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
2136 | engines: {node: '>= 0.4'}
2137 | dependencies:
2138 | define-properties: 1.2.1
2139 | dev: true
2140 |
2141 | /globby@11.1.0:
2142 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
2143 | engines: {node: '>=10'}
2144 | dependencies:
2145 | array-union: 2.1.0
2146 | dir-glob: 3.0.1
2147 | fast-glob: 3.3.1
2148 | ignore: 5.2.4
2149 | merge2: 1.4.1
2150 | slash: 3.0.0
2151 | dev: true
2152 |
2153 | /gopd@1.0.1:
2154 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
2155 | dependencies:
2156 | get-intrinsic: 1.2.1
2157 | dev: true
2158 |
2159 | /graceful-fs@4.2.11:
2160 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
2161 | dev: true
2162 |
2163 | /graphemer@1.4.0:
2164 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
2165 | dev: true
2166 |
2167 | /has-bigints@1.0.2:
2168 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
2169 | dev: true
2170 |
2171 | /has-flag@3.0.0:
2172 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
2173 | engines: {node: '>=4'}
2174 | dev: true
2175 |
2176 | /has-flag@4.0.0:
2177 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
2178 | engines: {node: '>=8'}
2179 | dev: true
2180 |
2181 | /has-property-descriptors@1.0.0:
2182 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
2183 | dependencies:
2184 | get-intrinsic: 1.2.1
2185 | dev: true
2186 |
2187 | /has-proto@1.0.1:
2188 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
2189 | engines: {node: '>= 0.4'}
2190 | dev: true
2191 |
2192 | /has-symbols@1.0.3:
2193 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
2194 | engines: {node: '>= 0.4'}
2195 | dev: true
2196 |
2197 | /has-tostringtag@1.0.0:
2198 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
2199 | engines: {node: '>= 0.4'}
2200 | dependencies:
2201 | has-symbols: 1.0.3
2202 | dev: true
2203 |
2204 | /has@1.0.4:
2205 | resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==}
2206 | engines: {node: '>= 0.4.0'}
2207 | dev: true
2208 |
2209 | /html-escaper@2.0.2:
2210 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
2211 | dev: true
2212 |
2213 | /human-signals@2.1.0:
2214 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
2215 | engines: {node: '>=10.17.0'}
2216 | dev: true
2217 |
2218 | /ignore@5.2.4:
2219 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
2220 | engines: {node: '>= 4'}
2221 | dev: true
2222 |
2223 | /import-fresh@3.3.0:
2224 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
2225 | engines: {node: '>=6'}
2226 | dependencies:
2227 | parent-module: 1.0.1
2228 | resolve-from: 4.0.0
2229 | dev: true
2230 |
2231 | /import-local@3.1.0:
2232 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
2233 | engines: {node: '>=8'}
2234 | hasBin: true
2235 | dependencies:
2236 | pkg-dir: 4.2.0
2237 | resolve-cwd: 3.0.0
2238 | dev: true
2239 |
2240 | /imurmurhash@0.1.4:
2241 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
2242 | engines: {node: '>=0.8.19'}
2243 | dev: true
2244 |
2245 | /inflight@1.0.6:
2246 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
2247 | dependencies:
2248 | once: 1.4.0
2249 | wrappy: 1.0.2
2250 | dev: true
2251 |
2252 | /inherits@2.0.4:
2253 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
2254 | dev: true
2255 |
2256 | /internal-slot@1.0.5:
2257 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
2258 | engines: {node: '>= 0.4'}
2259 | dependencies:
2260 | get-intrinsic: 1.2.1
2261 | has: 1.0.4
2262 | side-channel: 1.0.4
2263 | dev: true
2264 |
2265 | /is-array-buffer@3.0.2:
2266 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
2267 | dependencies:
2268 | call-bind: 1.0.2
2269 | get-intrinsic: 1.2.1
2270 | is-typed-array: 1.1.12
2271 | dev: true
2272 |
2273 | /is-arrayish@0.2.1:
2274 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
2275 | dev: true
2276 |
2277 | /is-async-function@2.0.0:
2278 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
2279 | engines: {node: '>= 0.4'}
2280 | dependencies:
2281 | has-tostringtag: 1.0.0
2282 | dev: true
2283 |
2284 | /is-bigint@1.0.4:
2285 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
2286 | dependencies:
2287 | has-bigints: 1.0.2
2288 | dev: true
2289 |
2290 | /is-boolean-object@1.1.2:
2291 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
2292 | engines: {node: '>= 0.4'}
2293 | dependencies:
2294 | call-bind: 1.0.2
2295 | has-tostringtag: 1.0.0
2296 | dev: true
2297 |
2298 | /is-callable@1.2.7:
2299 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
2300 | engines: {node: '>= 0.4'}
2301 | dev: true
2302 |
2303 | /is-core-module@2.13.0:
2304 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
2305 | dependencies:
2306 | has: 1.0.4
2307 | dev: true
2308 |
2309 | /is-date-object@1.0.5:
2310 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
2311 | engines: {node: '>= 0.4'}
2312 | dependencies:
2313 | has-tostringtag: 1.0.0
2314 | dev: true
2315 |
2316 | /is-extglob@2.1.1:
2317 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
2318 | engines: {node: '>=0.10.0'}
2319 | dev: true
2320 |
2321 | /is-finalizationregistry@1.0.2:
2322 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
2323 | dependencies:
2324 | call-bind: 1.0.2
2325 | dev: true
2326 |
2327 | /is-fullwidth-code-point@3.0.0:
2328 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
2329 | engines: {node: '>=8'}
2330 | dev: true
2331 |
2332 | /is-generator-fn@2.1.0:
2333 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
2334 | engines: {node: '>=6'}
2335 | dev: true
2336 |
2337 | /is-generator-function@1.0.10:
2338 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
2339 | engines: {node: '>= 0.4'}
2340 | dependencies:
2341 | has-tostringtag: 1.0.0
2342 | dev: true
2343 |
2344 | /is-glob@4.0.3:
2345 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
2346 | engines: {node: '>=0.10.0'}
2347 | dependencies:
2348 | is-extglob: 2.1.1
2349 | dev: true
2350 |
2351 | /is-map@2.0.2:
2352 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
2353 | dev: true
2354 |
2355 | /is-negative-zero@2.0.2:
2356 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
2357 | engines: {node: '>= 0.4'}
2358 | dev: true
2359 |
2360 | /is-number-object@1.0.7:
2361 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
2362 | engines: {node: '>= 0.4'}
2363 | dependencies:
2364 | has-tostringtag: 1.0.0
2365 | dev: true
2366 |
2367 | /is-number@7.0.0:
2368 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
2369 | engines: {node: '>=0.12.0'}
2370 | dev: true
2371 |
2372 | /is-path-inside@3.0.3:
2373 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
2374 | engines: {node: '>=8'}
2375 | dev: true
2376 |
2377 | /is-regex@1.1.4:
2378 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
2379 | engines: {node: '>= 0.4'}
2380 | dependencies:
2381 | call-bind: 1.0.2
2382 | has-tostringtag: 1.0.0
2383 | dev: true
2384 |
2385 | /is-set@2.0.2:
2386 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
2387 | dev: true
2388 |
2389 | /is-shared-array-buffer@1.0.2:
2390 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
2391 | dependencies:
2392 | call-bind: 1.0.2
2393 | dev: true
2394 |
2395 | /is-stream@2.0.1:
2396 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
2397 | engines: {node: '>=8'}
2398 | dev: true
2399 |
2400 | /is-string@1.0.7:
2401 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
2402 | engines: {node: '>= 0.4'}
2403 | dependencies:
2404 | has-tostringtag: 1.0.0
2405 | dev: true
2406 |
2407 | /is-symbol@1.0.4:
2408 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
2409 | engines: {node: '>= 0.4'}
2410 | dependencies:
2411 | has-symbols: 1.0.3
2412 | dev: true
2413 |
2414 | /is-typed-array@1.1.12:
2415 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
2416 | engines: {node: '>= 0.4'}
2417 | dependencies:
2418 | which-typed-array: 1.1.11
2419 | dev: true
2420 |
2421 | /is-weakmap@2.0.1:
2422 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
2423 | dev: true
2424 |
2425 | /is-weakref@1.0.2:
2426 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
2427 | dependencies:
2428 | call-bind: 1.0.2
2429 | dev: true
2430 |
2431 | /is-weakset@2.0.2:
2432 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
2433 | dependencies:
2434 | call-bind: 1.0.2
2435 | get-intrinsic: 1.2.1
2436 | dev: true
2437 |
2438 | /isarray@2.0.5:
2439 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
2440 | dev: true
2441 |
2442 | /isexe@2.0.0:
2443 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
2444 | dev: true
2445 |
2446 | /istanbul-lib-coverage@3.2.0:
2447 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
2448 | engines: {node: '>=8'}
2449 | dev: true
2450 |
2451 | /istanbul-lib-instrument@5.2.1:
2452 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
2453 | engines: {node: '>=8'}
2454 | dependencies:
2455 | '@babel/core': 7.23.0
2456 | '@babel/parser': 7.23.0
2457 | '@istanbuljs/schema': 0.1.3
2458 | istanbul-lib-coverage: 3.2.0
2459 | semver: 6.3.1
2460 | transitivePeerDependencies:
2461 | - supports-color
2462 | dev: true
2463 |
2464 | /istanbul-lib-instrument@6.0.1:
2465 | resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==}
2466 | engines: {node: '>=10'}
2467 | dependencies:
2468 | '@babel/core': 7.23.0
2469 | '@babel/parser': 7.23.0
2470 | '@istanbuljs/schema': 0.1.3
2471 | istanbul-lib-coverage: 3.2.0
2472 | semver: 7.5.4
2473 | transitivePeerDependencies:
2474 | - supports-color
2475 | dev: true
2476 |
2477 | /istanbul-lib-report@3.0.1:
2478 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
2479 | engines: {node: '>=10'}
2480 | dependencies:
2481 | istanbul-lib-coverage: 3.2.0
2482 | make-dir: 4.0.0
2483 | supports-color: 7.2.0
2484 | dev: true
2485 |
2486 | /istanbul-lib-source-maps@4.0.1:
2487 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
2488 | engines: {node: '>=10'}
2489 | dependencies:
2490 | debug: 4.3.4
2491 | istanbul-lib-coverage: 3.2.0
2492 | source-map: 0.6.1
2493 | transitivePeerDependencies:
2494 | - supports-color
2495 | dev: true
2496 |
2497 | /istanbul-reports@3.1.6:
2498 | resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==}
2499 | engines: {node: '>=8'}
2500 | dependencies:
2501 | html-escaper: 2.0.2
2502 | istanbul-lib-report: 3.0.1
2503 | dev: true
2504 |
2505 | /iterator.prototype@1.1.2:
2506 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
2507 | dependencies:
2508 | define-properties: 1.2.1
2509 | get-intrinsic: 1.2.1
2510 | has-symbols: 1.0.3
2511 | reflect.getprototypeof: 1.0.4
2512 | set-function-name: 2.0.1
2513 | dev: true
2514 |
2515 | /jest-changed-files@29.7.0:
2516 | resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
2517 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2518 | dependencies:
2519 | execa: 5.1.1
2520 | jest-util: 29.7.0
2521 | p-limit: 3.1.0
2522 | dev: true
2523 |
2524 | /jest-circus@29.7.0:
2525 | resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
2526 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2527 | dependencies:
2528 | '@jest/environment': 29.7.0
2529 | '@jest/expect': 29.7.0
2530 | '@jest/test-result': 29.7.0
2531 | '@jest/types': 29.6.3
2532 | '@types/node': 20.8.2
2533 | chalk: 4.1.2
2534 | co: 4.6.0
2535 | dedent: 1.5.1
2536 | is-generator-fn: 2.1.0
2537 | jest-each: 29.7.0
2538 | jest-matcher-utils: 29.7.0
2539 | jest-message-util: 29.7.0
2540 | jest-runtime: 29.7.0
2541 | jest-snapshot: 29.7.0
2542 | jest-util: 29.7.0
2543 | p-limit: 3.1.0
2544 | pretty-format: 29.7.0
2545 | pure-rand: 6.0.4
2546 | slash: 3.0.0
2547 | stack-utils: 2.0.6
2548 | transitivePeerDependencies:
2549 | - babel-plugin-macros
2550 | - supports-color
2551 | dev: true
2552 |
2553 | /jest-cli@29.7.0:
2554 | resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
2555 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2556 | hasBin: true
2557 | peerDependencies:
2558 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
2559 | peerDependenciesMeta:
2560 | node-notifier:
2561 | optional: true
2562 | dependencies:
2563 | '@jest/core': 29.7.0
2564 | '@jest/test-result': 29.7.0
2565 | '@jest/types': 29.6.3
2566 | chalk: 4.1.2
2567 | create-jest: 29.7.0
2568 | exit: 0.1.2
2569 | import-local: 3.1.0
2570 | jest-config: 29.7.0(@types/node@20.8.2)
2571 | jest-util: 29.7.0
2572 | jest-validate: 29.7.0
2573 | yargs: 17.7.2
2574 | transitivePeerDependencies:
2575 | - '@types/node'
2576 | - babel-plugin-macros
2577 | - supports-color
2578 | - ts-node
2579 | dev: true
2580 |
2581 | /jest-config@29.7.0(@types/node@20.8.2):
2582 | resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
2583 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2584 | peerDependencies:
2585 | '@types/node': '*'
2586 | ts-node: '>=9.0.0'
2587 | peerDependenciesMeta:
2588 | '@types/node':
2589 | optional: true
2590 | ts-node:
2591 | optional: true
2592 | dependencies:
2593 | '@babel/core': 7.23.0
2594 | '@jest/test-sequencer': 29.7.0
2595 | '@jest/types': 29.6.3
2596 | '@types/node': 20.8.2
2597 | babel-jest: 29.7.0(@babel/core@7.23.0)
2598 | chalk: 4.1.2
2599 | ci-info: 3.9.0
2600 | deepmerge: 4.3.1
2601 | glob: 7.2.3
2602 | graceful-fs: 4.2.11
2603 | jest-circus: 29.7.0
2604 | jest-environment-node: 29.7.0
2605 | jest-get-type: 29.6.3
2606 | jest-regex-util: 29.6.3
2607 | jest-resolve: 29.7.0
2608 | jest-runner: 29.7.0
2609 | jest-util: 29.7.0
2610 | jest-validate: 29.7.0
2611 | micromatch: 4.0.5
2612 | parse-json: 5.2.0
2613 | pretty-format: 29.7.0
2614 | slash: 3.0.0
2615 | strip-json-comments: 3.1.1
2616 | transitivePeerDependencies:
2617 | - babel-plugin-macros
2618 | - supports-color
2619 | dev: true
2620 |
2621 | /jest-diff@29.7.0:
2622 | resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
2623 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2624 | dependencies:
2625 | chalk: 4.1.2
2626 | diff-sequences: 29.6.3
2627 | jest-get-type: 29.6.3
2628 | pretty-format: 29.7.0
2629 | dev: true
2630 |
2631 | /jest-docblock@29.7.0:
2632 | resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
2633 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2634 | dependencies:
2635 | detect-newline: 3.1.0
2636 | dev: true
2637 |
2638 | /jest-each@29.7.0:
2639 | resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
2640 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2641 | dependencies:
2642 | '@jest/types': 29.6.3
2643 | chalk: 4.1.2
2644 | jest-get-type: 29.6.3
2645 | jest-util: 29.7.0
2646 | pretty-format: 29.7.0
2647 | dev: true
2648 |
2649 | /jest-environment-node@29.7.0:
2650 | resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
2651 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2652 | dependencies:
2653 | '@jest/environment': 29.7.0
2654 | '@jest/fake-timers': 29.7.0
2655 | '@jest/types': 29.6.3
2656 | '@types/node': 20.8.2
2657 | jest-mock: 29.7.0
2658 | jest-util: 29.7.0
2659 | dev: true
2660 |
2661 | /jest-get-type@29.6.3:
2662 | resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
2663 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2664 | dev: true
2665 |
2666 | /jest-haste-map@29.7.0:
2667 | resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
2668 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2669 | dependencies:
2670 | '@jest/types': 29.6.3
2671 | '@types/graceful-fs': 4.1.7
2672 | '@types/node': 20.8.2
2673 | anymatch: 3.1.3
2674 | fb-watchman: 2.0.2
2675 | graceful-fs: 4.2.11
2676 | jest-regex-util: 29.6.3
2677 | jest-util: 29.7.0
2678 | jest-worker: 29.7.0
2679 | micromatch: 4.0.5
2680 | walker: 1.0.8
2681 | optionalDependencies:
2682 | fsevents: 2.3.3
2683 | dev: true
2684 |
2685 | /jest-leak-detector@29.7.0:
2686 | resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
2687 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2688 | dependencies:
2689 | jest-get-type: 29.6.3
2690 | pretty-format: 29.7.0
2691 | dev: true
2692 |
2693 | /jest-matcher-utils@29.7.0:
2694 | resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
2695 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2696 | dependencies:
2697 | chalk: 4.1.2
2698 | jest-diff: 29.7.0
2699 | jest-get-type: 29.6.3
2700 | pretty-format: 29.7.0
2701 | dev: true
2702 |
2703 | /jest-message-util@29.7.0:
2704 | resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
2705 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2706 | dependencies:
2707 | '@babel/code-frame': 7.22.13
2708 | '@jest/types': 29.6.3
2709 | '@types/stack-utils': 2.0.1
2710 | chalk: 4.1.2
2711 | graceful-fs: 4.2.11
2712 | micromatch: 4.0.5
2713 | pretty-format: 29.7.0
2714 | slash: 3.0.0
2715 | stack-utils: 2.0.6
2716 | dev: true
2717 |
2718 | /jest-mock@29.7.0:
2719 | resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
2720 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2721 | dependencies:
2722 | '@jest/types': 29.6.3
2723 | '@types/node': 20.8.2
2724 | jest-util: 29.7.0
2725 | dev: true
2726 |
2727 | /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
2728 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
2729 | engines: {node: '>=6'}
2730 | peerDependencies:
2731 | jest-resolve: '*'
2732 | peerDependenciesMeta:
2733 | jest-resolve:
2734 | optional: true
2735 | dependencies:
2736 | jest-resolve: 29.7.0
2737 | dev: true
2738 |
2739 | /jest-regex-util@29.6.3:
2740 | resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
2741 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2742 | dev: true
2743 |
2744 | /jest-resolve-dependencies@29.7.0:
2745 | resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
2746 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2747 | dependencies:
2748 | jest-regex-util: 29.6.3
2749 | jest-snapshot: 29.7.0
2750 | transitivePeerDependencies:
2751 | - supports-color
2752 | dev: true
2753 |
2754 | /jest-resolve@29.7.0:
2755 | resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
2756 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2757 | dependencies:
2758 | chalk: 4.1.2
2759 | graceful-fs: 4.2.11
2760 | jest-haste-map: 29.7.0
2761 | jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
2762 | jest-util: 29.7.0
2763 | jest-validate: 29.7.0
2764 | resolve: 1.22.6
2765 | resolve.exports: 2.0.2
2766 | slash: 3.0.0
2767 | dev: true
2768 |
2769 | /jest-runner@29.7.0:
2770 | resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
2771 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2772 | dependencies:
2773 | '@jest/console': 29.7.0
2774 | '@jest/environment': 29.7.0
2775 | '@jest/test-result': 29.7.0
2776 | '@jest/transform': 29.7.0
2777 | '@jest/types': 29.6.3
2778 | '@types/node': 20.8.2
2779 | chalk: 4.1.2
2780 | emittery: 0.13.1
2781 | graceful-fs: 4.2.11
2782 | jest-docblock: 29.7.0
2783 | jest-environment-node: 29.7.0
2784 | jest-haste-map: 29.7.0
2785 | jest-leak-detector: 29.7.0
2786 | jest-message-util: 29.7.0
2787 | jest-resolve: 29.7.0
2788 | jest-runtime: 29.7.0
2789 | jest-util: 29.7.0
2790 | jest-watcher: 29.7.0
2791 | jest-worker: 29.7.0
2792 | p-limit: 3.1.0
2793 | source-map-support: 0.5.13
2794 | transitivePeerDependencies:
2795 | - supports-color
2796 | dev: true
2797 |
2798 | /jest-runtime@29.7.0:
2799 | resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
2800 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2801 | dependencies:
2802 | '@jest/environment': 29.7.0
2803 | '@jest/fake-timers': 29.7.0
2804 | '@jest/globals': 29.7.0
2805 | '@jest/source-map': 29.6.3
2806 | '@jest/test-result': 29.7.0
2807 | '@jest/transform': 29.7.0
2808 | '@jest/types': 29.6.3
2809 | '@types/node': 20.8.2
2810 | chalk: 4.1.2
2811 | cjs-module-lexer: 1.2.3
2812 | collect-v8-coverage: 1.0.2
2813 | glob: 7.2.3
2814 | graceful-fs: 4.2.11
2815 | jest-haste-map: 29.7.0
2816 | jest-message-util: 29.7.0
2817 | jest-mock: 29.7.0
2818 | jest-regex-util: 29.6.3
2819 | jest-resolve: 29.7.0
2820 | jest-snapshot: 29.7.0
2821 | jest-util: 29.7.0
2822 | slash: 3.0.0
2823 | strip-bom: 4.0.0
2824 | transitivePeerDependencies:
2825 | - supports-color
2826 | dev: true
2827 |
2828 | /jest-snapshot@29.7.0:
2829 | resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
2830 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2831 | dependencies:
2832 | '@babel/core': 7.23.0
2833 | '@babel/generator': 7.23.0
2834 | '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.0)
2835 | '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.0)
2836 | '@babel/types': 7.23.0
2837 | '@jest/expect-utils': 29.7.0
2838 | '@jest/transform': 29.7.0
2839 | '@jest/types': 29.6.3
2840 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0)
2841 | chalk: 4.1.2
2842 | expect: 29.7.0
2843 | graceful-fs: 4.2.11
2844 | jest-diff: 29.7.0
2845 | jest-get-type: 29.6.3
2846 | jest-matcher-utils: 29.7.0
2847 | jest-message-util: 29.7.0
2848 | jest-util: 29.7.0
2849 | natural-compare: 1.4.0
2850 | pretty-format: 29.7.0
2851 | semver: 7.5.4
2852 | transitivePeerDependencies:
2853 | - supports-color
2854 | dev: true
2855 |
2856 | /jest-util@29.7.0:
2857 | resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
2858 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2859 | dependencies:
2860 | '@jest/types': 29.6.3
2861 | '@types/node': 20.8.2
2862 | chalk: 4.1.2
2863 | ci-info: 3.9.0
2864 | graceful-fs: 4.2.11
2865 | picomatch: 2.3.1
2866 | dev: true
2867 |
2868 | /jest-validate@29.7.0:
2869 | resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
2870 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2871 | dependencies:
2872 | '@jest/types': 29.6.3
2873 | camelcase: 6.3.0
2874 | chalk: 4.1.2
2875 | jest-get-type: 29.6.3
2876 | leven: 3.1.0
2877 | pretty-format: 29.7.0
2878 | dev: true
2879 |
2880 | /jest-watcher@29.7.0:
2881 | resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
2882 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2883 | dependencies:
2884 | '@jest/test-result': 29.7.0
2885 | '@jest/types': 29.6.3
2886 | '@types/node': 20.8.2
2887 | ansi-escapes: 4.3.2
2888 | chalk: 4.1.2
2889 | emittery: 0.13.1
2890 | jest-util: 29.7.0
2891 | string-length: 4.0.2
2892 | dev: true
2893 |
2894 | /jest-worker@29.7.0:
2895 | resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
2896 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2897 | dependencies:
2898 | '@types/node': 20.8.2
2899 | jest-util: 29.7.0
2900 | merge-stream: 2.0.0
2901 | supports-color: 8.1.1
2902 | dev: true
2903 |
2904 | /jest@29.7.0:
2905 | resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
2906 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2907 | hasBin: true
2908 | peerDependencies:
2909 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
2910 | peerDependenciesMeta:
2911 | node-notifier:
2912 | optional: true
2913 | dependencies:
2914 | '@jest/core': 29.7.0
2915 | '@jest/types': 29.6.3
2916 | import-local: 3.1.0
2917 | jest-cli: 29.7.0
2918 | transitivePeerDependencies:
2919 | - '@types/node'
2920 | - babel-plugin-macros
2921 | - supports-color
2922 | - ts-node
2923 | dev: true
2924 |
2925 | /js-tokens@4.0.0:
2926 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
2927 | dev: true
2928 |
2929 | /js-yaml@3.14.1:
2930 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
2931 | hasBin: true
2932 | dependencies:
2933 | argparse: 1.0.10
2934 | esprima: 4.0.1
2935 | dev: true
2936 |
2937 | /js-yaml@4.1.0:
2938 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
2939 | hasBin: true
2940 | dependencies:
2941 | argparse: 2.0.1
2942 | dev: true
2943 |
2944 | /jsesc@2.5.2:
2945 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
2946 | engines: {node: '>=4'}
2947 | hasBin: true
2948 | dev: true
2949 |
2950 | /json-buffer@3.0.1:
2951 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
2952 | dev: true
2953 |
2954 | /json-parse-better-errors@1.0.2:
2955 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
2956 | dev: true
2957 |
2958 | /json-parse-even-better-errors@2.3.1:
2959 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
2960 | dev: true
2961 |
2962 | /json-schema-traverse@0.4.1:
2963 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
2964 | dev: true
2965 |
2966 | /json-stable-stringify-without-jsonify@1.0.1:
2967 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
2968 | dev: true
2969 |
2970 | /json5@1.0.2:
2971 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
2972 | hasBin: true
2973 | dependencies:
2974 | minimist: 1.2.8
2975 | dev: true
2976 |
2977 | /json5@2.2.3:
2978 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
2979 | engines: {node: '>=6'}
2980 | hasBin: true
2981 | dev: true
2982 |
2983 | /jsx-ast-utils@3.3.5:
2984 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
2985 | engines: {node: '>=4.0'}
2986 | dependencies:
2987 | array-includes: 3.1.7
2988 | array.prototype.flat: 1.3.2
2989 | object.assign: 4.1.4
2990 | object.values: 1.1.7
2991 | dev: true
2992 |
2993 | /keyv@4.5.3:
2994 | resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
2995 | dependencies:
2996 | json-buffer: 3.0.1
2997 | dev: true
2998 |
2999 | /kleur@3.0.3:
3000 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
3001 | engines: {node: '>=6'}
3002 | dev: true
3003 |
3004 | /leven@3.1.0:
3005 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
3006 | engines: {node: '>=6'}
3007 | dev: true
3008 |
3009 | /levn@0.4.1:
3010 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
3011 | engines: {node: '>= 0.8.0'}
3012 | dependencies:
3013 | prelude-ls: 1.2.1
3014 | type-check: 0.4.0
3015 | dev: true
3016 |
3017 | /lines-and-columns@1.2.4:
3018 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
3019 | dev: true
3020 |
3021 | /load-json-file@5.3.0:
3022 | resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==}
3023 | engines: {node: '>=6'}
3024 | dependencies:
3025 | graceful-fs: 4.2.11
3026 | parse-json: 4.0.0
3027 | pify: 4.0.1
3028 | strip-bom: 3.0.0
3029 | type-fest: 0.3.1
3030 | dev: true
3031 |
3032 | /locate-path@3.0.0:
3033 | resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
3034 | engines: {node: '>=6'}
3035 | dependencies:
3036 | p-locate: 3.0.0
3037 | path-exists: 3.0.0
3038 | dev: true
3039 |
3040 | /locate-path@5.0.0:
3041 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
3042 | engines: {node: '>=8'}
3043 | dependencies:
3044 | p-locate: 4.1.0
3045 | dev: true
3046 |
3047 | /locate-path@6.0.0:
3048 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
3049 | engines: {node: '>=10'}
3050 | dependencies:
3051 | p-locate: 5.0.0
3052 | dev: true
3053 |
3054 | /lodash.memoize@4.1.2:
3055 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
3056 | dev: true
3057 |
3058 | /lodash.merge@4.6.2:
3059 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
3060 | dev: true
3061 |
3062 | /loose-envify@1.4.0:
3063 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
3064 | hasBin: true
3065 | dependencies:
3066 | js-tokens: 4.0.0
3067 | dev: true
3068 |
3069 | /lru-cache@5.1.1:
3070 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
3071 | dependencies:
3072 | yallist: 3.1.1
3073 | dev: true
3074 |
3075 | /lru-cache@6.0.0:
3076 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
3077 | engines: {node: '>=10'}
3078 | dependencies:
3079 | yallist: 4.0.0
3080 | dev: true
3081 |
3082 | /make-dir@4.0.0:
3083 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
3084 | engines: {node: '>=10'}
3085 | dependencies:
3086 | semver: 7.5.4
3087 | dev: true
3088 |
3089 | /make-error@1.3.6:
3090 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
3091 | dev: true
3092 |
3093 | /makeerror@1.0.12:
3094 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
3095 | dependencies:
3096 | tmpl: 1.0.5
3097 | dev: true
3098 |
3099 | /merge-stream@2.0.0:
3100 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
3101 | dev: true
3102 |
3103 | /merge2@1.4.1:
3104 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
3105 | engines: {node: '>= 8'}
3106 | dev: true
3107 |
3108 | /micromatch@4.0.5:
3109 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
3110 | engines: {node: '>=8.6'}
3111 | dependencies:
3112 | braces: 3.0.2
3113 | picomatch: 2.3.1
3114 | dev: true
3115 |
3116 | /mimic-fn@2.1.0:
3117 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
3118 | engines: {node: '>=6'}
3119 | dev: true
3120 |
3121 | /minimatch@3.1.2:
3122 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
3123 | dependencies:
3124 | brace-expansion: 1.1.11
3125 | dev: true
3126 |
3127 | /minimist@1.2.8:
3128 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
3129 | dev: true
3130 |
3131 | /ms@2.1.2:
3132 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
3133 | dev: true
3134 |
3135 | /natural-compare@1.4.0:
3136 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
3137 | dev: true
3138 |
3139 | /node-int64@0.4.0:
3140 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
3141 | dev: true
3142 |
3143 | /node-releases@2.0.13:
3144 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
3145 | dev: true
3146 |
3147 | /normalize-path@3.0.0:
3148 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
3149 | engines: {node: '>=0.10.0'}
3150 | dev: true
3151 |
3152 | /npm-run-path@4.0.1:
3153 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
3154 | engines: {node: '>=8'}
3155 | dependencies:
3156 | path-key: 3.1.1
3157 | dev: true
3158 |
3159 | /object-assign@4.1.1:
3160 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
3161 | engines: {node: '>=0.10.0'}
3162 | dev: true
3163 |
3164 | /object-inspect@1.12.3:
3165 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
3166 | dev: true
3167 |
3168 | /object-keys@1.1.1:
3169 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
3170 | engines: {node: '>= 0.4'}
3171 | dev: true
3172 |
3173 | /object.assign@4.1.4:
3174 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
3175 | engines: {node: '>= 0.4'}
3176 | dependencies:
3177 | call-bind: 1.0.2
3178 | define-properties: 1.2.1
3179 | has-symbols: 1.0.3
3180 | object-keys: 1.1.1
3181 | dev: true
3182 |
3183 | /object.entries@1.1.7:
3184 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==}
3185 | engines: {node: '>= 0.4'}
3186 | dependencies:
3187 | call-bind: 1.0.2
3188 | define-properties: 1.2.1
3189 | es-abstract: 1.22.2
3190 | dev: true
3191 |
3192 | /object.fromentries@2.0.7:
3193 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
3194 | engines: {node: '>= 0.4'}
3195 | dependencies:
3196 | call-bind: 1.0.2
3197 | define-properties: 1.2.1
3198 | es-abstract: 1.22.2
3199 | dev: true
3200 |
3201 | /object.groupby@1.0.1:
3202 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
3203 | dependencies:
3204 | call-bind: 1.0.2
3205 | define-properties: 1.2.1
3206 | es-abstract: 1.22.2
3207 | get-intrinsic: 1.2.1
3208 | dev: true
3209 |
3210 | /object.hasown@1.1.3:
3211 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==}
3212 | dependencies:
3213 | define-properties: 1.2.1
3214 | es-abstract: 1.22.2
3215 | dev: true
3216 |
3217 | /object.values@1.1.7:
3218 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
3219 | engines: {node: '>= 0.4'}
3220 | dependencies:
3221 | call-bind: 1.0.2
3222 | define-properties: 1.2.1
3223 | es-abstract: 1.22.2
3224 | dev: true
3225 |
3226 | /once@1.4.0:
3227 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
3228 | dependencies:
3229 | wrappy: 1.0.2
3230 | dev: true
3231 |
3232 | /onetime@5.1.2:
3233 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
3234 | engines: {node: '>=6'}
3235 | dependencies:
3236 | mimic-fn: 2.1.0
3237 | dev: true
3238 |
3239 | /optionator@0.9.3:
3240 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
3241 | engines: {node: '>= 0.8.0'}
3242 | dependencies:
3243 | '@aashutoshrathi/word-wrap': 1.2.6
3244 | deep-is: 0.1.4
3245 | fast-levenshtein: 2.0.6
3246 | levn: 0.4.1
3247 | prelude-ls: 1.2.1
3248 | type-check: 0.4.0
3249 | dev: true
3250 |
3251 | /p-limit@2.3.0:
3252 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
3253 | engines: {node: '>=6'}
3254 | dependencies:
3255 | p-try: 2.2.0
3256 | dev: true
3257 |
3258 | /p-limit@3.1.0:
3259 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
3260 | engines: {node: '>=10'}
3261 | dependencies:
3262 | yocto-queue: 0.1.0
3263 | dev: true
3264 |
3265 | /p-locate@3.0.0:
3266 | resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
3267 | engines: {node: '>=6'}
3268 | dependencies:
3269 | p-limit: 2.3.0
3270 | dev: true
3271 |
3272 | /p-locate@4.1.0:
3273 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
3274 | engines: {node: '>=8'}
3275 | dependencies:
3276 | p-limit: 2.3.0
3277 | dev: true
3278 |
3279 | /p-locate@5.0.0:
3280 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
3281 | engines: {node: '>=10'}
3282 | dependencies:
3283 | p-limit: 3.1.0
3284 | dev: true
3285 |
3286 | /p-try@2.2.0:
3287 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
3288 | engines: {node: '>=6'}
3289 | dev: true
3290 |
3291 | /parent-module@1.0.1:
3292 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
3293 | engines: {node: '>=6'}
3294 | dependencies:
3295 | callsites: 3.1.0
3296 | dev: true
3297 |
3298 | /parse-json@4.0.0:
3299 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
3300 | engines: {node: '>=4'}
3301 | dependencies:
3302 | error-ex: 1.3.2
3303 | json-parse-better-errors: 1.0.2
3304 | dev: true
3305 |
3306 | /parse-json@5.2.0:
3307 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
3308 | engines: {node: '>=8'}
3309 | dependencies:
3310 | '@babel/code-frame': 7.22.13
3311 | error-ex: 1.3.2
3312 | json-parse-even-better-errors: 2.3.1
3313 | lines-and-columns: 1.2.4
3314 | dev: true
3315 |
3316 | /path-exists@3.0.0:
3317 | resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
3318 | engines: {node: '>=4'}
3319 | dev: true
3320 |
3321 | /path-exists@4.0.0:
3322 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
3323 | engines: {node: '>=8'}
3324 | dev: true
3325 |
3326 | /path-is-absolute@1.0.1:
3327 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
3328 | engines: {node: '>=0.10.0'}
3329 | dev: true
3330 |
3331 | /path-key@3.1.1:
3332 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
3333 | engines: {node: '>=8'}
3334 | dev: true
3335 |
3336 | /path-parse@1.0.7:
3337 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
3338 | dev: true
3339 |
3340 | /path-type@4.0.0:
3341 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
3342 | engines: {node: '>=8'}
3343 | dev: true
3344 |
3345 | /picocolors@1.0.0:
3346 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
3347 | dev: true
3348 |
3349 | /picomatch@2.3.1:
3350 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
3351 | engines: {node: '>=8.6'}
3352 | dev: true
3353 |
3354 | /pify@4.0.1:
3355 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
3356 | engines: {node: '>=6'}
3357 | dev: true
3358 |
3359 | /pirates@4.0.6:
3360 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
3361 | engines: {node: '>= 6'}
3362 | dev: true
3363 |
3364 | /pkg-conf@3.1.0:
3365 | resolution: {integrity: sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==}
3366 | engines: {node: '>=6'}
3367 | dependencies:
3368 | find-up: 3.0.0
3369 | load-json-file: 5.3.0
3370 | dev: true
3371 |
3372 | /pkg-dir@4.2.0:
3373 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
3374 | engines: {node: '>=8'}
3375 | dependencies:
3376 | find-up: 4.1.0
3377 | dev: true
3378 |
3379 | /prelude-ls@1.2.1:
3380 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
3381 | engines: {node: '>= 0.8.0'}
3382 | dev: true
3383 |
3384 | /pretty-format@29.7.0:
3385 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
3386 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
3387 | dependencies:
3388 | '@jest/schemas': 29.6.3
3389 | ansi-styles: 5.2.0
3390 | react-is: 18.2.0
3391 | dev: true
3392 |
3393 | /prompts@2.4.2:
3394 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
3395 | engines: {node: '>= 6'}
3396 | dependencies:
3397 | kleur: 3.0.3
3398 | sisteransi: 1.0.5
3399 | dev: true
3400 |
3401 | /prop-types@15.8.1:
3402 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
3403 | dependencies:
3404 | loose-envify: 1.4.0
3405 | object-assign: 4.1.1
3406 | react-is: 16.13.1
3407 | dev: true
3408 |
3409 | /punycode@2.3.0:
3410 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
3411 | engines: {node: '>=6'}
3412 | dev: true
3413 |
3414 | /pure-rand@6.0.4:
3415 | resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==}
3416 | dev: true
3417 |
3418 | /queue-microtask@1.2.3:
3419 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
3420 | dev: true
3421 |
3422 | /react-is@16.13.1:
3423 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
3424 | dev: true
3425 |
3426 | /react-is@18.2.0:
3427 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
3428 | dev: true
3429 |
3430 | /reflect.getprototypeof@1.0.4:
3431 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==}
3432 | engines: {node: '>= 0.4'}
3433 | dependencies:
3434 | call-bind: 1.0.2
3435 | define-properties: 1.2.1
3436 | es-abstract: 1.22.2
3437 | get-intrinsic: 1.2.1
3438 | globalthis: 1.0.3
3439 | which-builtin-type: 1.1.3
3440 | dev: true
3441 |
3442 | /regexp.prototype.flags@1.5.1:
3443 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
3444 | engines: {node: '>= 0.4'}
3445 | dependencies:
3446 | call-bind: 1.0.2
3447 | define-properties: 1.2.1
3448 | set-function-name: 2.0.1
3449 | dev: true
3450 |
3451 | /regexpp@3.2.0:
3452 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
3453 | engines: {node: '>=8'}
3454 | dev: true
3455 |
3456 | /require-directory@2.1.1:
3457 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
3458 | engines: {node: '>=0.10.0'}
3459 | dev: true
3460 |
3461 | /resolve-cwd@3.0.0:
3462 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
3463 | engines: {node: '>=8'}
3464 | dependencies:
3465 | resolve-from: 5.0.0
3466 | dev: true
3467 |
3468 | /resolve-from@4.0.0:
3469 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
3470 | engines: {node: '>=4'}
3471 | dev: true
3472 |
3473 | /resolve-from@5.0.0:
3474 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
3475 | engines: {node: '>=8'}
3476 | dev: true
3477 |
3478 | /resolve.exports@2.0.2:
3479 | resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
3480 | engines: {node: '>=10'}
3481 | dev: true
3482 |
3483 | /resolve@1.22.6:
3484 | resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
3485 | hasBin: true
3486 | dependencies:
3487 | is-core-module: 2.13.0
3488 | path-parse: 1.0.7
3489 | supports-preserve-symlinks-flag: 1.0.0
3490 | dev: true
3491 |
3492 | /resolve@2.0.0-next.4:
3493 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
3494 | hasBin: true
3495 | dependencies:
3496 | is-core-module: 2.13.0
3497 | path-parse: 1.0.7
3498 | supports-preserve-symlinks-flag: 1.0.0
3499 | dev: true
3500 |
3501 | /reusify@1.0.4:
3502 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
3503 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
3504 | dev: true
3505 |
3506 | /rimraf@3.0.2:
3507 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
3508 | hasBin: true
3509 | dependencies:
3510 | glob: 7.2.3
3511 | dev: true
3512 |
3513 | /run-parallel@1.2.0:
3514 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
3515 | dependencies:
3516 | queue-microtask: 1.2.3
3517 | dev: true
3518 |
3519 | /safe-array-concat@1.0.1:
3520 | resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
3521 | engines: {node: '>=0.4'}
3522 | dependencies:
3523 | call-bind: 1.0.2
3524 | get-intrinsic: 1.2.1
3525 | has-symbols: 1.0.3
3526 | isarray: 2.0.5
3527 | dev: true
3528 |
3529 | /safe-regex-test@1.0.0:
3530 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
3531 | dependencies:
3532 | call-bind: 1.0.2
3533 | get-intrinsic: 1.2.1
3534 | is-regex: 1.1.4
3535 | dev: true
3536 |
3537 | /semver@6.3.1:
3538 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
3539 | hasBin: true
3540 | dev: true
3541 |
3542 | /semver@7.5.4:
3543 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
3544 | engines: {node: '>=10'}
3545 | hasBin: true
3546 | dependencies:
3547 | lru-cache: 6.0.0
3548 | dev: true
3549 |
3550 | /set-function-name@2.0.1:
3551 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
3552 | engines: {node: '>= 0.4'}
3553 | dependencies:
3554 | define-data-property: 1.1.0
3555 | functions-have-names: 1.2.3
3556 | has-property-descriptors: 1.0.0
3557 | dev: true
3558 |
3559 | /shebang-command@2.0.0:
3560 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
3561 | engines: {node: '>=8'}
3562 | dependencies:
3563 | shebang-regex: 3.0.0
3564 | dev: true
3565 |
3566 | /shebang-regex@3.0.0:
3567 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
3568 | engines: {node: '>=8'}
3569 | dev: true
3570 |
3571 | /side-channel@1.0.4:
3572 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
3573 | dependencies:
3574 | call-bind: 1.0.2
3575 | get-intrinsic: 1.2.1
3576 | object-inspect: 1.12.3
3577 | dev: true
3578 |
3579 | /signal-exit@3.0.7:
3580 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
3581 | dev: true
3582 |
3583 | /sisteransi@1.0.5:
3584 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
3585 | dev: true
3586 |
3587 | /slash@3.0.0:
3588 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
3589 | engines: {node: '>=8'}
3590 | dev: true
3591 |
3592 | /source-map-support@0.5.13:
3593 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
3594 | dependencies:
3595 | buffer-from: 1.1.2
3596 | source-map: 0.6.1
3597 | dev: true
3598 |
3599 | /source-map@0.6.1:
3600 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
3601 | engines: {node: '>=0.10.0'}
3602 | dev: true
3603 |
3604 | /sprintf-js@1.0.3:
3605 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
3606 | dev: true
3607 |
3608 | /stack-utils@2.0.6:
3609 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
3610 | engines: {node: '>=10'}
3611 | dependencies:
3612 | escape-string-regexp: 2.0.0
3613 | dev: true
3614 |
3615 | /standard-engine@15.1.0:
3616 | resolution: {integrity: sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==}
3617 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3618 | dependencies:
3619 | get-stdin: 8.0.0
3620 | minimist: 1.2.8
3621 | pkg-conf: 3.1.0
3622 | xdg-basedir: 4.0.0
3623 | dev: true
3624 |
3625 | /standard@17.1.0(@typescript-eslint/parser@6.7.4):
3626 | resolution: {integrity: sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g==}
3627 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3628 | hasBin: true
3629 | dependencies:
3630 | eslint: 8.50.0
3631 | eslint-config-standard: 17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0)
3632 | eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.33.2)(eslint@8.50.0)
3633 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)
3634 | eslint-plugin-n: 15.7.0(eslint@8.50.0)
3635 | eslint-plugin-promise: 6.1.1(eslint@8.50.0)
3636 | eslint-plugin-react: 7.33.2(eslint@8.50.0)
3637 | standard-engine: 15.1.0
3638 | version-guard: 1.1.1
3639 | transitivePeerDependencies:
3640 | - '@typescript-eslint/parser'
3641 | - eslint-import-resolver-typescript
3642 | - eslint-import-resolver-webpack
3643 | - supports-color
3644 | dev: true
3645 |
3646 | /string-length@4.0.2:
3647 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
3648 | engines: {node: '>=10'}
3649 | dependencies:
3650 | char-regex: 1.0.2
3651 | strip-ansi: 6.0.1
3652 | dev: true
3653 |
3654 | /string-width@4.2.3:
3655 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
3656 | engines: {node: '>=8'}
3657 | dependencies:
3658 | emoji-regex: 8.0.0
3659 | is-fullwidth-code-point: 3.0.0
3660 | strip-ansi: 6.0.1
3661 | dev: true
3662 |
3663 | /string.prototype.matchall@4.0.10:
3664 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
3665 | dependencies:
3666 | call-bind: 1.0.2
3667 | define-properties: 1.2.1
3668 | es-abstract: 1.22.2
3669 | get-intrinsic: 1.2.1
3670 | has-symbols: 1.0.3
3671 | internal-slot: 1.0.5
3672 | regexp.prototype.flags: 1.5.1
3673 | set-function-name: 2.0.1
3674 | side-channel: 1.0.4
3675 | dev: true
3676 |
3677 | /string.prototype.trim@1.2.8:
3678 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
3679 | engines: {node: '>= 0.4'}
3680 | dependencies:
3681 | call-bind: 1.0.2
3682 | define-properties: 1.2.1
3683 | es-abstract: 1.22.2
3684 | dev: true
3685 |
3686 | /string.prototype.trimend@1.0.7:
3687 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
3688 | dependencies:
3689 | call-bind: 1.0.2
3690 | define-properties: 1.2.1
3691 | es-abstract: 1.22.2
3692 | dev: true
3693 |
3694 | /string.prototype.trimstart@1.0.7:
3695 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
3696 | dependencies:
3697 | call-bind: 1.0.2
3698 | define-properties: 1.2.1
3699 | es-abstract: 1.22.2
3700 | dev: true
3701 |
3702 | /strip-ansi@6.0.1:
3703 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
3704 | engines: {node: '>=8'}
3705 | dependencies:
3706 | ansi-regex: 5.0.1
3707 | dev: true
3708 |
3709 | /strip-bom@3.0.0:
3710 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
3711 | engines: {node: '>=4'}
3712 | dev: true
3713 |
3714 | /strip-bom@4.0.0:
3715 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
3716 | engines: {node: '>=8'}
3717 | dev: true
3718 |
3719 | /strip-final-newline@2.0.0:
3720 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
3721 | engines: {node: '>=6'}
3722 | dev: true
3723 |
3724 | /strip-json-comments@3.1.1:
3725 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
3726 | engines: {node: '>=8'}
3727 | dev: true
3728 |
3729 | /supports-color@5.5.0:
3730 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
3731 | engines: {node: '>=4'}
3732 | dependencies:
3733 | has-flag: 3.0.0
3734 | dev: true
3735 |
3736 | /supports-color@7.2.0:
3737 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
3738 | engines: {node: '>=8'}
3739 | dependencies:
3740 | has-flag: 4.0.0
3741 | dev: true
3742 |
3743 | /supports-color@8.1.1:
3744 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
3745 | engines: {node: '>=10'}
3746 | dependencies:
3747 | has-flag: 4.0.0
3748 | dev: true
3749 |
3750 | /supports-preserve-symlinks-flag@1.0.0:
3751 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
3752 | engines: {node: '>= 0.4'}
3753 | dev: true
3754 |
3755 | /test-exclude@6.0.0:
3756 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
3757 | engines: {node: '>=8'}
3758 | dependencies:
3759 | '@istanbuljs/schema': 0.1.3
3760 | glob: 7.2.3
3761 | minimatch: 3.1.2
3762 | dev: true
3763 |
3764 | /text-table@0.2.0:
3765 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
3766 | dev: true
3767 |
3768 | /tmpl@1.0.5:
3769 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
3770 | dev: true
3771 |
3772 | /to-fast-properties@2.0.0:
3773 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
3774 | engines: {node: '>=4'}
3775 | dev: true
3776 |
3777 | /to-regex-range@5.0.1:
3778 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
3779 | engines: {node: '>=8.0'}
3780 | dependencies:
3781 | is-number: 7.0.0
3782 | dev: true
3783 |
3784 | /ts-api-utils@1.0.3(typescript@5.2.2):
3785 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
3786 | engines: {node: '>=16.13.0'}
3787 | peerDependencies:
3788 | typescript: '>=4.2.0'
3789 | dependencies:
3790 | typescript: 5.2.2
3791 | dev: true
3792 |
3793 | /ts-jest@29.1.1(@babel/core@7.23.0)(jest@29.7.0)(typescript@5.2.2):
3794 | resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==}
3795 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
3796 | hasBin: true
3797 | peerDependencies:
3798 | '@babel/core': '>=7.0.0-beta.0 <8'
3799 | '@jest/types': ^29.0.0
3800 | babel-jest: ^29.0.0
3801 | esbuild: '*'
3802 | jest: ^29.0.0
3803 | typescript: '>=4.3 <6'
3804 | peerDependenciesMeta:
3805 | '@babel/core':
3806 | optional: true
3807 | '@jest/types':
3808 | optional: true
3809 | babel-jest:
3810 | optional: true
3811 | esbuild:
3812 | optional: true
3813 | dependencies:
3814 | '@babel/core': 7.23.0
3815 | bs-logger: 0.2.6
3816 | fast-json-stable-stringify: 2.1.0
3817 | jest: 29.7.0
3818 | jest-util: 29.7.0
3819 | json5: 2.2.3
3820 | lodash.memoize: 4.1.2
3821 | make-error: 1.3.6
3822 | semver: 7.5.4
3823 | typescript: 5.2.2
3824 | yargs-parser: 21.1.1
3825 | dev: true
3826 |
3827 | /tsconfig-paths@3.14.2:
3828 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
3829 | dependencies:
3830 | '@types/json5': 0.0.29
3831 | json5: 1.0.2
3832 | minimist: 1.2.8
3833 | strip-bom: 3.0.0
3834 | dev: true
3835 |
3836 | /type-check@0.4.0:
3837 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
3838 | engines: {node: '>= 0.8.0'}
3839 | dependencies:
3840 | prelude-ls: 1.2.1
3841 | dev: true
3842 |
3843 | /type-detect@4.0.8:
3844 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
3845 | engines: {node: '>=4'}
3846 | dev: true
3847 |
3848 | /type-fest@0.20.2:
3849 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
3850 | engines: {node: '>=10'}
3851 | dev: true
3852 |
3853 | /type-fest@0.21.3:
3854 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
3855 | engines: {node: '>=10'}
3856 | dev: true
3857 |
3858 | /type-fest@0.3.1:
3859 | resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==}
3860 | engines: {node: '>=6'}
3861 | dev: true
3862 |
3863 | /typed-array-buffer@1.0.0:
3864 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
3865 | engines: {node: '>= 0.4'}
3866 | dependencies:
3867 | call-bind: 1.0.2
3868 | get-intrinsic: 1.2.1
3869 | is-typed-array: 1.1.12
3870 | dev: true
3871 |
3872 | /typed-array-byte-length@1.0.0:
3873 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
3874 | engines: {node: '>= 0.4'}
3875 | dependencies:
3876 | call-bind: 1.0.2
3877 | for-each: 0.3.3
3878 | has-proto: 1.0.1
3879 | is-typed-array: 1.1.12
3880 | dev: true
3881 |
3882 | /typed-array-byte-offset@1.0.0:
3883 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
3884 | engines: {node: '>= 0.4'}
3885 | dependencies:
3886 | available-typed-arrays: 1.0.5
3887 | call-bind: 1.0.2
3888 | for-each: 0.3.3
3889 | has-proto: 1.0.1
3890 | is-typed-array: 1.1.12
3891 | dev: true
3892 |
3893 | /typed-array-length@1.0.4:
3894 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
3895 | dependencies:
3896 | call-bind: 1.0.2
3897 | for-each: 0.3.3
3898 | is-typed-array: 1.1.12
3899 | dev: true
3900 |
3901 | /typescript@5.2.2:
3902 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
3903 | engines: {node: '>=14.17'}
3904 | hasBin: true
3905 | dev: true
3906 |
3907 | /unbox-primitive@1.0.2:
3908 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
3909 | dependencies:
3910 | call-bind: 1.0.2
3911 | has-bigints: 1.0.2
3912 | has-symbols: 1.0.3
3913 | which-boxed-primitive: 1.0.2
3914 | dev: true
3915 |
3916 | /update-browserslist-db@1.0.13(browserslist@4.22.1):
3917 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
3918 | hasBin: true
3919 | peerDependencies:
3920 | browserslist: '>= 4.21.0'
3921 | dependencies:
3922 | browserslist: 4.22.1
3923 | escalade: 3.1.1
3924 | picocolors: 1.0.0
3925 | dev: true
3926 |
3927 | /uri-js@4.4.1:
3928 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
3929 | dependencies:
3930 | punycode: 2.3.0
3931 | dev: true
3932 |
3933 | /v8-to-istanbul@9.1.3:
3934 | resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==}
3935 | engines: {node: '>=10.12.0'}
3936 | dependencies:
3937 | '@jridgewell/trace-mapping': 0.3.19
3938 | '@types/istanbul-lib-coverage': 2.0.4
3939 | convert-source-map: 2.0.0
3940 | dev: true
3941 |
3942 | /version-guard@1.1.1:
3943 | resolution: {integrity: sha512-MGQLX89UxmYHgDvcXyjBI0cbmoW+t/dANDppNPrno64rYr8nH4SHSuElQuSYdXGEs0mUzdQe1BY+FhVPNsAmJQ==}
3944 | engines: {node: '>=0.10.48'}
3945 | dev: true
3946 |
3947 | /walker@1.0.8:
3948 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
3949 | dependencies:
3950 | makeerror: 1.0.12
3951 | dev: true
3952 |
3953 | /which-boxed-primitive@1.0.2:
3954 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
3955 | dependencies:
3956 | is-bigint: 1.0.4
3957 | is-boolean-object: 1.1.2
3958 | is-number-object: 1.0.7
3959 | is-string: 1.0.7
3960 | is-symbol: 1.0.4
3961 | dev: true
3962 |
3963 | /which-builtin-type@1.1.3:
3964 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==}
3965 | engines: {node: '>= 0.4'}
3966 | dependencies:
3967 | function.prototype.name: 1.1.6
3968 | has-tostringtag: 1.0.0
3969 | is-async-function: 2.0.0
3970 | is-date-object: 1.0.5
3971 | is-finalizationregistry: 1.0.2
3972 | is-generator-function: 1.0.10
3973 | is-regex: 1.1.4
3974 | is-weakref: 1.0.2
3975 | isarray: 2.0.5
3976 | which-boxed-primitive: 1.0.2
3977 | which-collection: 1.0.1
3978 | which-typed-array: 1.1.11
3979 | dev: true
3980 |
3981 | /which-collection@1.0.1:
3982 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
3983 | dependencies:
3984 | is-map: 2.0.2
3985 | is-set: 2.0.2
3986 | is-weakmap: 2.0.1
3987 | is-weakset: 2.0.2
3988 | dev: true
3989 |
3990 | /which-typed-array@1.1.11:
3991 | resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
3992 | engines: {node: '>= 0.4'}
3993 | dependencies:
3994 | available-typed-arrays: 1.0.5
3995 | call-bind: 1.0.2
3996 | for-each: 0.3.3
3997 | gopd: 1.0.1
3998 | has-tostringtag: 1.0.0
3999 | dev: true
4000 |
4001 | /which@2.0.2:
4002 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
4003 | engines: {node: '>= 8'}
4004 | hasBin: true
4005 | dependencies:
4006 | isexe: 2.0.0
4007 | dev: true
4008 |
4009 | /wrap-ansi@7.0.0:
4010 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
4011 | engines: {node: '>=10'}
4012 | dependencies:
4013 | ansi-styles: 4.3.0
4014 | string-width: 4.2.3
4015 | strip-ansi: 6.0.1
4016 | dev: true
4017 |
4018 | /wrappy@1.0.2:
4019 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
4020 | dev: true
4021 |
4022 | /write-file-atomic@4.0.2:
4023 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
4024 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
4025 | dependencies:
4026 | imurmurhash: 0.1.4
4027 | signal-exit: 3.0.7
4028 | dev: true
4029 |
4030 | /xdg-basedir@4.0.0:
4031 | resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==}
4032 | engines: {node: '>=8'}
4033 | dev: true
4034 |
4035 | /y18n@5.0.8:
4036 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
4037 | engines: {node: '>=10'}
4038 | dev: true
4039 |
4040 | /yallist@3.1.1:
4041 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
4042 | dev: true
4043 |
4044 | /yallist@4.0.0:
4045 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
4046 | dev: true
4047 |
4048 | /yargs-parser@21.1.1:
4049 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
4050 | engines: {node: '>=12'}
4051 | dev: true
4052 |
4053 | /yargs@17.7.2:
4054 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
4055 | engines: {node: '>=12'}
4056 | dependencies:
4057 | cliui: 8.0.1
4058 | escalade: 3.1.1
4059 | get-caller-file: 2.0.5
4060 | require-directory: 2.1.1
4061 | string-width: 4.2.3
4062 | y18n: 5.0.8
4063 | yargs-parser: 21.1.1
4064 | dev: true
4065 |
4066 | /yocto-queue@0.1.0:
4067 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
4068 | engines: {node: '>=10'}
4069 | dev: true
4070 |
--------------------------------------------------------------------------------