├── .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 | ![浏览器渲染生命周期](./docs/images/scheduler.webp) 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 | --------------------------------------------------------------------------------