├── .husky ├── .gitignore └── pre-commit ├── .gitattributes ├── .env.example ├── .gitignore ├── .prettierrc ├── tsconfig.json ├── .editorconfig ├── src ├── utils.ts ├── types │ ├── base.ts │ └── spotify.ts ├── spot.ts └── index.ts ├── .github └── workflows │ └── main.yml ├── LICENSE ├── package.json ├── README.md ├── tests └── spotify-test.js └── pnpm-lock.yaml /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | SPOTIFY_CLIENT_ID= 2 | SPOTIFY_CLIENT_SECRET= 3 | SPOTIFY_REFRESH_TOKEN= -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npm test 5 | npx lint-staged 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | *.vim 4 | package-lock.json 5 | yarn.lock 6 | dist 7 | yarn-error.log 8 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSameLine": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 90, 6 | "semi": false 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "moduleResolution": "node", 5 | "allowSyntheticDefaultImports": true, 6 | "target": "esnext", 7 | "module": "esnext" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | [*.md] 11 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { Track } from 'spotify-types' 2 | import { ResponseTrack } from './types/base' 3 | 4 | export const filterTrack = (track: Track): ResponseTrack => ({ 5 | title: track?.name, 6 | artist: track?.artists?.map((artist) => artist?.name).join(', '), 7 | link: track?.external_urls.spotify 8 | }) 9 | 10 | export const encodeToBase64 = (str: string): string => Buffer.from(str).toString('base64') 11 | -------------------------------------------------------------------------------- /src/types/base.ts: -------------------------------------------------------------------------------- 1 | export interface ResponseTrack { 2 | title: string 3 | artist: string 4 | link: string 5 | } 6 | 7 | export interface SpotifyClientOptions { 8 | clientId: string 9 | clientSecret: string 10 | refreshToken: string 11 | } 12 | 13 | export interface CurrentlyPlayingOptions { 14 | fallbackToLastPlayed?: boolean 15 | } 16 | 17 | export interface TopItemsOptions { 18 | limit?: number 19 | timeRange?: 'long' | 'medium' | 'short' 20 | } 21 | 22 | export interface CurrentlyPlayingResponse extends ResponseTrack { 23 | isPlaying: boolean 24 | } 25 | -------------------------------------------------------------------------------- /src/types/spotify.ts: -------------------------------------------------------------------------------- 1 | import { Album, Artist, ExternalID, ExternalUrl } from 'spotify-types' 2 | 3 | export interface TopTracks { 4 | href: string 5 | items: Item[] 6 | limit: number 7 | next: string 8 | offset: number 9 | previous: string 10 | total: number 11 | } 12 | 13 | export interface Item { 14 | album: Album 15 | artists: Artist[] 16 | available_markets: string[] 17 | disc_number: number 18 | duration_ms: number 19 | explicit: boolean 20 | external_ids: ExternalID 21 | external_urls: ExternalUrl 22 | href: string 23 | id: string 24 | is_local: boolean 25 | name: string 26 | popularity: number 27 | preview_url: string 28 | track_number: number 29 | type: string 30 | uri: string 31 | } 32 | 33 | export interface BaseError { 34 | error: string 35 | error_description: string 36 | } 37 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [main, develop] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | environment: actions 13 | 14 | strategy: 15 | matrix: 16 | node-version: [16.x, 18.x, 19.x, 20.x] 17 | 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v4 21 | 22 | - name: Install Node ${{ matrix.node-version }} 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version: ${{ matrix.node-version }} 26 | 27 | - name: Install pnpm 28 | uses: pnpm/action-setup@v2 29 | with: 30 | version: 8 31 | 32 | - name: Install dependencies 33 | run: pnpm install --frozen-lockfile 34 | 35 | - name: Run the tests 36 | run: pnpm test 37 | -------------------------------------------------------------------------------- /src/spot.ts: -------------------------------------------------------------------------------- 1 | // This file is used for quick testing and debugging the SpotifyClient class 2 | // Example usage: `tsx spot.ts` 3 | 4 | import * as dotenv from 'dotenv' 5 | import path from 'path' 6 | dotenv.config({ path: path.resolve(process.cwd(), '../.env') }) 7 | import { SpotifyClient } from './index' 8 | 9 | const SPOTIFY_CLIENT_ID = process.env.SPOTIFY_CLIENT_ID as string 10 | const SPOTIFY_CLIENT_SECRET = process.env.SPOTIFY_CLIENT_SECRET as string 11 | const SPOTIFY_REFRESH_TOKEN = process.env.SPOTIFY_REFRESH_TOKEN as string 12 | 13 | console.table({ 14 | SPOTIFY_CLIENT_ID, 15 | SPOTIFY_CLIENT_SECRET, 16 | SPOTIFY_REFRESH_TOKEN 17 | }) 18 | 19 | const spotify = new SpotifyClient({ 20 | clientId: SPOTIFY_CLIENT_ID, 21 | clientSecret: SPOTIFY_CLIENT_SECRET, 22 | refreshToken: SPOTIFY_REFRESH_TOKEN 23 | }) 24 | 25 | const currentSong = await spotify.getCurrentTrack() 26 | 27 | console.log(currentSong) 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Rocktim Saikia 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 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spotify-mini", 3 | "version": "2.1.0", 4 | "main": "dist/index.js", 5 | "types": "dist/index.d.ts", 6 | "type": "module", 7 | "files": [ 8 | "dist" 9 | ], 10 | "license": "MIT", 11 | "author": { 12 | "email": "rocktimthedev@gmail.com", 13 | "name": "Rocktim Saikia", 14 | "url": "https://rocktimcodes.site" 15 | }, 16 | "funding": "https://buymeacoffee.com/rocktimcodes", 17 | "repository": "rocktimsaikia/spotify-mini", 18 | "scripts": { 19 | "build": "rm -rf dist && tsup src/index.ts --dts --format esm,cjs", 20 | "test": "pnpm build && ava", 21 | "prepare": "husky install", 22 | "release": "pnpm test && np --no-tests" 23 | }, 24 | "devDependencies": { 25 | "@types/node": "^17.0.23", 26 | "@types/sinon": "^17.0.2", 27 | "ava": "^4.2.0", 28 | "dotenv": "^16.3.1", 29 | "husky": "^7.0.4", 30 | "lint-staged": ">=10", 31 | "prettier": "^2.6.2", 32 | "sinon": "^17.0.1", 33 | "spotify-types": "^1.0.7", 34 | "ts-node": "^10.7.0", 35 | "tsup": "^5.12.4", 36 | "tsx": "^4.7.0", 37 | "typescript": "^4.6.3" 38 | }, 39 | "dependencies": { 40 | "node-fetch": "^3.2.3" 41 | }, 42 | "np": { 43 | "contents": "dist" 44 | }, 45 | "keywords": [ 46 | "spotify", 47 | "spotify-api", 48 | "spotify-typescript", 49 | "spotify-current-song", 50 | "spotify-last-played-song" 51 | ], 52 | "lint-staged": { 53 | "*.{js,ts,md}": "prettier --write" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # spotify-mini 2 | 3 | ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/rocktimsaikia/spotify-mini/main.yml) 4 | ![npm](https://img.shields.io/npm/v/spotify-mini?style=flat-square&color=success&logo=npm) 5 | 6 | Simple Spotify client for nodejs exposing useful methods 7 | 8 | > I was using a basic version of this library on my [website](https://www.rocktimsaikia.dev/) for a long time, which led me to transform it into a fully-fledged module. 9 | 10 | ## Prerequisite 11 | 12 | Make sure to create a `refresh_token` with atleast the following permissions enabled: 13 | 14 | 1. `user-read-currently-playing` 15 | 2. `user-read-recently-played` 16 | 3. `user-top-read` 17 | 18 | > :bulb: You can use [spotify-rtoken-cli](https://github.com/rocktimsaikia/spotify-rtoken-cli) to easily create a `refresh_token` right from your terminal. 19 | 20 | ## Installation 21 | 22 | ```sh 23 | # Install with npm 24 | npm install spotify-mini 25 | 26 | # Install with yarn 27 | yarn add spotify-mini 28 | 29 | # Install with pnpm 30 | pnpm add spotify-mini 31 | ``` 32 | 33 | ## Usage 34 | 35 | ```javascript 36 | import { SpotifyClient } from 'spotify-mini' 37 | 38 | const spotify = new SpotifyClient({ 39 | clientId: '', 40 | clientSecret: '', 41 | refreshToken: '' 42 | }) 43 | 44 | // Get the currently playing track. 45 | const currentlyPlayingTrack = await spotify.getCurrentTrack() 46 | 47 | console.log(currentlyPlayingTrack) 48 | ``` 49 | 50 | Example output: 51 | 52 | ```javascript 53 | { 54 | isPlaying: true, 55 | title: '', 56 | artist: '', 57 | album: '', 58 | } 59 | ``` 60 | 61 | ## API 62 | 63 | #### getCurrentTrack 64 | 65 | Get the currently playing track. 66 | 67 | | Options | Type | Description | 68 | | ---------------------- | ------- | --------------------------------------------------------------------------------- | 69 | | `fallbackToLastPlayed` | boolean | Returns the last played track, if there is no ongoing track atm. (default:`true`) | 70 | 71 | #### getRecentTracks 72 | 73 | Get the recently played tracks. 74 | 75 | | Options | Type | Description | 76 | | ------- | --------------------- | -------------------------------------------------------------------- | 77 | | `limit` | number (1 <= n <= 50) | Limit the number of recently played tracks to return. (default: `1`) | 78 | 79 | #### getTopTracks 80 | 81 | Get the top tracks of the user. 82 | 83 | | Options | Type | Description | 84 | | ----------- | ------------------- | ---------------------------------------------------------------------------- | 85 | | `limit` | number | Limit the number of recently played tracks to return. (Default: `10`) | 86 | | `timeRange` | short, medium, long | Over what time range the top tracks should be calculated. (Default: `short`) | 87 | 88 | ## Related 89 | 90 | - [spotify-rtoken-cli](https://github.com/rocktimsaikia/spotify-rtoken-cli) - Generate Spotify `refresh_token` right from terminal 91 | 92 | ## License 93 | 94 | [MIT](./LICENSE) License © [ Rocktim Saikia ](https://github.com/rocktimsaikia) 2025 95 | -------------------------------------------------------------------------------- /tests/spotify-test.js: -------------------------------------------------------------------------------- 1 | import 'dotenv/config' 2 | import test from 'ava' 3 | import sinon from 'sinon' 4 | import { SpotifyClient } from '../dist/index.js' 5 | 6 | const clientId = 'xxx-xxx-xxx-xxx' 7 | const clientSecret = 'xxx-xxx-xxx-xxx' 8 | const refreshToken = 'xxx-xxx-xxx-xxx' 9 | 10 | const spotify = new SpotifyClient({ clientId, clientSecret, refreshToken }) 11 | 12 | sinon.stub(spotify, 'getCurrentTrack').resolves({ 13 | title: 'fake-title', 14 | artist: 'fake-artist', 15 | link: 'https://open.spotify.com/track/123456789', 16 | isPlaying: true 17 | }) 18 | 19 | test('get currently playing track', async (t) => { 20 | const currentTrack = await spotify.getCurrentTrack() 21 | t.not(typeof currentTrack, 'undefined') 22 | 23 | // not null means there is a track playing 24 | t.is(currentTrack?.title, 'fake-title') 25 | t.is(currentTrack?.artist, 'fake-artist') 26 | t.is(currentTrack?.link, 'https://open.spotify.com/track/123456789') 27 | t.is(currentTrack?.isPlaying, true) 28 | }) 29 | 30 | const mockTracks = new Array(50).fill(null).map((_, i) => ({ 31 | title: `fake-title-${i}`, 32 | artist: `fake-artist-${i}`, 33 | link: `https://open.spotify.com/track/${i}` 34 | })) 35 | 36 | sinon.stub(spotify, 'getRecentTracks').callsFake(async (limit = 1) => { 37 | if (limit > 50 || limit < 1) { 38 | throw new Error('Limit must be between 1 and 50') 39 | } 40 | return mockTracks.slice(0, limit) 41 | }) 42 | 43 | test('get last played song', async (t) => { 44 | const lastPlayed = await spotify.getRecentTracks() 45 | t.not(typeof lastPlayed, 'undefined') 46 | t.is(lastPlayed.length, 1) 47 | t.is(lastPlayed[0]?.title, 'fake-title-0') 48 | t.is(lastPlayed[0]?.artist, 'fake-artist-0') 49 | t.is(lastPlayed[0]?.link, 'https://open.spotify.com/track/0') 50 | }) 51 | 52 | test('get 10 recently played songs', async (t) => { 53 | const lastPlayed = await spotify.getRecentTracks(10) 54 | t.not(typeof lastPlayed, 'undefined') 55 | t.is(lastPlayed.length, 10) 56 | const randomTrackIdx = Math.floor(Math.random() * 10) 57 | t.is(lastPlayed[randomTrackIdx]?.title, `fake-title-${randomTrackIdx}`) 58 | t.is(lastPlayed[randomTrackIdx]?.artist, `fake-artist-${randomTrackIdx}`) 59 | t.is( 60 | lastPlayed[randomTrackIdx]?.link, 61 | `https://open.spotify.com/track/${randomTrackIdx}` 62 | ) 63 | }) 64 | 65 | sinon.stub(spotify, 'getTopTracks').callsFake(async (options = {}) => { 66 | const limit = options.limit || 10 67 | if (limit > 50 || limit < 1) { 68 | throw new Error('Limit must be between 1 and 50') 69 | } 70 | return mockTracks.slice(0, limit) 71 | }) 72 | 73 | test('Get top tracks with default options', async (t) => { 74 | const topTracks = await spotify.getTopTracks() 75 | t.not(typeof topTracks, 'undefined') 76 | t.is(topTracks.length, 10) 77 | const randomTrackIdx = Math.floor(Math.random() * 10) 78 | t.is(topTracks[randomTrackIdx]?.title, `fake-title-${randomTrackIdx}`) 79 | t.is(topTracks[randomTrackIdx]?.artist, `fake-artist-${randomTrackIdx}`) 80 | t.is( 81 | topTracks[randomTrackIdx]?.link, 82 | `https://open.spotify.com/track/${randomTrackIdx}` 83 | ) 84 | }) 85 | 86 | test('Get top tracks with limit `10` and timeRange `long`', async (t) => { 87 | const topTracks = await spotify.getTopTracks({ limit: 20, timeRange: 'long' }) 88 | t.not(typeof topTracks, 'undefined') 89 | t.is(topTracks.length, 20) 90 | const randomTrackIdx = Math.floor(Math.random() * 20) 91 | t.is(topTracks[randomTrackIdx]?.title, `fake-title-${randomTrackIdx}`) 92 | t.is(topTracks[randomTrackIdx]?.artist, `fake-artist-${randomTrackIdx}`) 93 | t.is( 94 | topTracks[randomTrackIdx]?.link, 95 | `https://open.spotify.com/track/${randomTrackIdx}` 96 | ) 97 | }) 98 | 99 | test('Get top tracks with default limit and timeRange `medium`', async (t) => { 100 | const topTracks = await spotify.getTopTracks({ timeRange: 'medium' }) 101 | t.not(typeof topTracks, 'undefined') 102 | t.is(topTracks.length, 10) 103 | const randomTrackIdx = Math.floor(Math.random() * 10) 104 | t.is(topTracks[randomTrackIdx]?.title, `fake-title-${randomTrackIdx}`) 105 | t.is(topTracks[randomTrackIdx]?.artist, `fake-artist-${randomTrackIdx}`) 106 | t.is( 107 | topTracks[randomTrackIdx]?.link, 108 | `https://open.spotify.com/track/${randomTrackIdx}` 109 | ) 110 | }) 111 | 112 | test('getRecentTracks: passing limit over 50 should throw error', async (t) => { 113 | const error = await t.throwsAsync(() => spotify.getRecentTracks(60)) 114 | t.is(error?.message, 'Limit must be between 1 and 50') 115 | }) 116 | 117 | test('getTopTracks: passing limit over 50 should throw error', async (t) => { 118 | const error = await t.throwsAsync(() => spotify.getTopTracks({ limit: 60 })) 119 | t.is(error?.message, 'Limit must be between 1 and 50') 120 | }) 121 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import { stringify } from 'node:querystring' 3 | import { AccessToken, CurrentlyPlaying, RecentlyPlayed, Track } from 'spotify-types' 4 | import { 5 | CurrentlyPlayingOptions, 6 | CurrentlyPlayingResponse, 7 | ResponseTrack, 8 | SpotifyClientOptions, 9 | TopItemsOptions 10 | } from './types/base' 11 | import { BaseError, TopTracks } from './types/spotify' 12 | import { encodeToBase64, filterTrack } from './utils' 13 | 14 | const ENDPOINTS = { 15 | accessToken: 'https://accounts.spotify.com/api/token', 16 | currentlyPlaying: 'https://api.spotify.com/v1/me/player/currently-playing', 17 | lastPlayed: 'https://api.spotify.com/v1/me/player/recently-played', 18 | topItems: 'https://api.spotify.com/v1/me/top' 19 | } 20 | 21 | export class SpotifyClient { 22 | private readonly clientId: string 23 | private readonly clientSecret: string 24 | private readonly refreshToken: string 25 | private accessToken: string | null = null 26 | 27 | constructor({ clientId, clientSecret, refreshToken }: SpotifyClientOptions) { 28 | this.clientId = clientId 29 | this.clientSecret = clientSecret 30 | this.refreshToken = refreshToken 31 | } 32 | 33 | private _genAccesToken = async () => { 34 | const basicToken = encodeToBase64(`${this.clientId}:${this.clientSecret}`) 35 | 36 | const response = await fetch(ENDPOINTS.accessToken, { 37 | method: 'POST', 38 | headers: { 39 | Authorization: `Basic ${basicToken}`, 40 | 'Content-Type': 'application/x-www-form-urlencoded' 41 | }, 42 | body: stringify({ 43 | grant_type: 'refresh_token', 44 | refresh_token: this.refreshToken 45 | }) 46 | }) 47 | 48 | if (!response.ok) { 49 | const errorData = (await response.json()) as BaseError 50 | let errorMsg = `API Error: "${errorData?.error} - ${errorData?.error_description}"` 51 | 52 | if (errorData?.error_description == 'Refresh token revoked') { 53 | errorMsg += 54 | '\n💡Tip: Generate a new refresh token with https://github.com/rocktimsaikia/spotify-rtoken-cli\n\n' 55 | } 56 | throw errorMsg 57 | } 58 | 59 | const responseData = (await response.json()) as AccessToken 60 | return responseData?.access_token 61 | } 62 | 63 | getCurrentTrack = async ({ 64 | fallbackToLastPlayed = true 65 | }: CurrentlyPlayingOptions = {}): Promise => { 66 | try { 67 | if (this.accessToken === null) { 68 | this.accessToken = await this._genAccesToken() 69 | } 70 | 71 | const headers = { Authorization: `Bearer ${this.accessToken}` } 72 | const response = await fetch(ENDPOINTS.currentlyPlaying, { headers }) 73 | 74 | if (response.status === 401) { 75 | // This basically checks if the access token is expired and 76 | // if it is, it generates a new one and tries again 77 | this.accessToken = await this._genAccesToken() 78 | return this.getCurrentTrack({ fallbackToLastPlayed }) 79 | } 80 | 81 | let isPlaying = true 82 | if (response.status === 204) { 83 | isPlaying = false 84 | return fallbackToLastPlayed 85 | ? { isPlaying, ...(await this.getRecentTracks())[0] } 86 | : null 87 | } 88 | const responseData = (await response.json()) as CurrentlyPlaying 89 | const currentTrack = filterTrack(responseData.item as Track) 90 | return { isPlaying, ...currentTrack } 91 | } catch (error: any) { 92 | throw new Error(error) 93 | } 94 | } 95 | 96 | getRecentTracks = async (limit: number = 1): Promise => { 97 | try { 98 | if (this.accessToken === null) this.accessToken = await this._genAccesToken() 99 | 100 | if (limit > 50 || limit < 1) throw new Error('Limit must be between 1 and 50') 101 | 102 | const headers = { Authorization: `Bearer ${this.accessToken}` } 103 | const response = await fetch(`${ENDPOINTS.lastPlayed}?limit=${limit}`, { headers }) 104 | 105 | if (response.status === 401) { 106 | this.accessToken = await this._genAccesToken() 107 | return this.getRecentTracks(limit) 108 | } 109 | 110 | const responseData = (await response.json()) as RecentlyPlayed 111 | const lastPlayedTrack = responseData.items.map(({ track }) => filterTrack(track)) 112 | return lastPlayedTrack 113 | } catch (error: any) { 114 | throw new Error(error) 115 | } 116 | } 117 | 118 | getTopTracks = async ({ 119 | limit = 10, 120 | timeRange = 'short' 121 | }: TopItemsOptions = {}): Promise => { 122 | try { 123 | if (this.accessToken === null) this.accessToken = await this._genAccesToken() 124 | 125 | if (limit > 50 || limit < 1) throw new Error('Limit must be between 1 and 50') 126 | 127 | const headers = { Authorization: `Bearer ${this.accessToken}` } 128 | const params = stringify({ time_range: `${timeRange}_term`, limit: limit }) 129 | const response = await fetch(`${ENDPOINTS.topItems}/tracks/?${params}`, { headers }) 130 | 131 | if (response.status === 401) { 132 | this.accessToken = await this._genAccesToken() 133 | return this.getTopTracks({ limit, timeRange }) 134 | } 135 | 136 | const responseData = (await response.json()) as TopTracks 137 | const topTracks = responseData.items.map((item) => ({ 138 | title: item.name, 139 | artist: item.artists[0].name, 140 | link: item.external_urls.spotify 141 | })) 142 | return topTracks 143 | } catch (error: any) { 144 | throw new Error(error) 145 | } 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | node-fetch: 9 | specifier: ^3.2.3 10 | version: 3.3.2 11 | 12 | devDependencies: 13 | '@types/node': 14 | specifier: ^17.0.23 15 | version: 17.0.45 16 | '@types/sinon': 17 | specifier: ^17.0.2 18 | version: 17.0.2 19 | ava: 20 | specifier: ^4.2.0 21 | version: 4.3.3 22 | dotenv: 23 | specifier: ^16.3.1 24 | version: 16.3.1 25 | husky: 26 | specifier: ^7.0.4 27 | version: 7.0.4 28 | lint-staged: 29 | specifier: '>=10' 30 | version: 15.2.0 31 | prettier: 32 | specifier: ^2.6.2 33 | version: 2.8.8 34 | sinon: 35 | specifier: ^17.0.1 36 | version: 17.0.1 37 | spotify-types: 38 | specifier: ^1.0.7 39 | version: 1.0.7 40 | ts-node: 41 | specifier: ^10.7.0 42 | version: 10.9.2(@types/node@17.0.45)(typescript@4.9.5) 43 | tsup: 44 | specifier: ^5.12.4 45 | version: 5.12.9(ts-node@10.9.2)(typescript@4.9.5) 46 | tsx: 47 | specifier: ^4.7.0 48 | version: 4.7.0 49 | typescript: 50 | specifier: ^4.6.3 51 | version: 4.9.5 52 | 53 | packages: 54 | 55 | /@cspotcode/source-map-support@0.8.1: 56 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 57 | engines: {node: '>=12'} 58 | dependencies: 59 | '@jridgewell/trace-mapping': 0.3.9 60 | dev: true 61 | 62 | /@esbuild/aix-ppc64@0.19.11: 63 | resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} 64 | engines: {node: '>=12'} 65 | cpu: [ppc64] 66 | os: [aix] 67 | requiresBuild: true 68 | dev: true 69 | optional: true 70 | 71 | /@esbuild/android-arm64@0.19.11: 72 | resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} 73 | engines: {node: '>=12'} 74 | cpu: [arm64] 75 | os: [android] 76 | requiresBuild: true 77 | dev: true 78 | optional: true 79 | 80 | /@esbuild/android-arm@0.19.11: 81 | resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} 82 | engines: {node: '>=12'} 83 | cpu: [arm] 84 | os: [android] 85 | requiresBuild: true 86 | dev: true 87 | optional: true 88 | 89 | /@esbuild/android-x64@0.19.11: 90 | resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} 91 | engines: {node: '>=12'} 92 | cpu: [x64] 93 | os: [android] 94 | requiresBuild: true 95 | dev: true 96 | optional: true 97 | 98 | /@esbuild/darwin-arm64@0.19.11: 99 | resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} 100 | engines: {node: '>=12'} 101 | cpu: [arm64] 102 | os: [darwin] 103 | requiresBuild: true 104 | dev: true 105 | optional: true 106 | 107 | /@esbuild/darwin-x64@0.19.11: 108 | resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} 109 | engines: {node: '>=12'} 110 | cpu: [x64] 111 | os: [darwin] 112 | requiresBuild: true 113 | dev: true 114 | optional: true 115 | 116 | /@esbuild/freebsd-arm64@0.19.11: 117 | resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} 118 | engines: {node: '>=12'} 119 | cpu: [arm64] 120 | os: [freebsd] 121 | requiresBuild: true 122 | dev: true 123 | optional: true 124 | 125 | /@esbuild/freebsd-x64@0.19.11: 126 | resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} 127 | engines: {node: '>=12'} 128 | cpu: [x64] 129 | os: [freebsd] 130 | requiresBuild: true 131 | dev: true 132 | optional: true 133 | 134 | /@esbuild/linux-arm64@0.19.11: 135 | resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} 136 | engines: {node: '>=12'} 137 | cpu: [arm64] 138 | os: [linux] 139 | requiresBuild: true 140 | dev: true 141 | optional: true 142 | 143 | /@esbuild/linux-arm@0.19.11: 144 | resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} 145 | engines: {node: '>=12'} 146 | cpu: [arm] 147 | os: [linux] 148 | requiresBuild: true 149 | dev: true 150 | optional: true 151 | 152 | /@esbuild/linux-ia32@0.19.11: 153 | resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} 154 | engines: {node: '>=12'} 155 | cpu: [ia32] 156 | os: [linux] 157 | requiresBuild: true 158 | dev: true 159 | optional: true 160 | 161 | /@esbuild/linux-loong64@0.14.54: 162 | resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} 163 | engines: {node: '>=12'} 164 | cpu: [loong64] 165 | os: [linux] 166 | requiresBuild: true 167 | dev: true 168 | optional: true 169 | 170 | /@esbuild/linux-loong64@0.19.11: 171 | resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} 172 | engines: {node: '>=12'} 173 | cpu: [loong64] 174 | os: [linux] 175 | requiresBuild: true 176 | dev: true 177 | optional: true 178 | 179 | /@esbuild/linux-mips64el@0.19.11: 180 | resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} 181 | engines: {node: '>=12'} 182 | cpu: [mips64el] 183 | os: [linux] 184 | requiresBuild: true 185 | dev: true 186 | optional: true 187 | 188 | /@esbuild/linux-ppc64@0.19.11: 189 | resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} 190 | engines: {node: '>=12'} 191 | cpu: [ppc64] 192 | os: [linux] 193 | requiresBuild: true 194 | dev: true 195 | optional: true 196 | 197 | /@esbuild/linux-riscv64@0.19.11: 198 | resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} 199 | engines: {node: '>=12'} 200 | cpu: [riscv64] 201 | os: [linux] 202 | requiresBuild: true 203 | dev: true 204 | optional: true 205 | 206 | /@esbuild/linux-s390x@0.19.11: 207 | resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} 208 | engines: {node: '>=12'} 209 | cpu: [s390x] 210 | os: [linux] 211 | requiresBuild: true 212 | dev: true 213 | optional: true 214 | 215 | /@esbuild/linux-x64@0.19.11: 216 | resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} 217 | engines: {node: '>=12'} 218 | cpu: [x64] 219 | os: [linux] 220 | requiresBuild: true 221 | dev: true 222 | optional: true 223 | 224 | /@esbuild/netbsd-x64@0.19.11: 225 | resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} 226 | engines: {node: '>=12'} 227 | cpu: [x64] 228 | os: [netbsd] 229 | requiresBuild: true 230 | dev: true 231 | optional: true 232 | 233 | /@esbuild/openbsd-x64@0.19.11: 234 | resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} 235 | engines: {node: '>=12'} 236 | cpu: [x64] 237 | os: [openbsd] 238 | requiresBuild: true 239 | dev: true 240 | optional: true 241 | 242 | /@esbuild/sunos-x64@0.19.11: 243 | resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} 244 | engines: {node: '>=12'} 245 | cpu: [x64] 246 | os: [sunos] 247 | requiresBuild: true 248 | dev: true 249 | optional: true 250 | 251 | /@esbuild/win32-arm64@0.19.11: 252 | resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} 253 | engines: {node: '>=12'} 254 | cpu: [arm64] 255 | os: [win32] 256 | requiresBuild: true 257 | dev: true 258 | optional: true 259 | 260 | /@esbuild/win32-ia32@0.19.11: 261 | resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} 262 | engines: {node: '>=12'} 263 | cpu: [ia32] 264 | os: [win32] 265 | requiresBuild: true 266 | dev: true 267 | optional: true 268 | 269 | /@esbuild/win32-x64@0.19.11: 270 | resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} 271 | engines: {node: '>=12'} 272 | cpu: [x64] 273 | os: [win32] 274 | requiresBuild: true 275 | dev: true 276 | optional: true 277 | 278 | /@isaacs/cliui@8.0.2: 279 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 280 | engines: {node: '>=12'} 281 | dependencies: 282 | string-width: 5.1.2 283 | string-width-cjs: /string-width@4.2.3 284 | strip-ansi: 7.1.0 285 | strip-ansi-cjs: /strip-ansi@6.0.1 286 | wrap-ansi: 8.1.0 287 | wrap-ansi-cjs: /wrap-ansi@7.0.0 288 | dev: true 289 | 290 | /@jridgewell/gen-mapping@0.3.3: 291 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 292 | engines: {node: '>=6.0.0'} 293 | dependencies: 294 | '@jridgewell/set-array': 1.1.2 295 | '@jridgewell/sourcemap-codec': 1.4.15 296 | '@jridgewell/trace-mapping': 0.3.20 297 | dev: true 298 | 299 | /@jridgewell/resolve-uri@3.1.1: 300 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 301 | engines: {node: '>=6.0.0'} 302 | dev: true 303 | 304 | /@jridgewell/set-array@1.1.2: 305 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 306 | engines: {node: '>=6.0.0'} 307 | dev: true 308 | 309 | /@jridgewell/sourcemap-codec@1.4.15: 310 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 311 | dev: true 312 | 313 | /@jridgewell/trace-mapping@0.3.20: 314 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 315 | dependencies: 316 | '@jridgewell/resolve-uri': 3.1.1 317 | '@jridgewell/sourcemap-codec': 1.4.15 318 | dev: true 319 | 320 | /@jridgewell/trace-mapping@0.3.9: 321 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 322 | dependencies: 323 | '@jridgewell/resolve-uri': 3.1.1 324 | '@jridgewell/sourcemap-codec': 1.4.15 325 | dev: true 326 | 327 | /@nodelib/fs.scandir@2.1.5: 328 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 329 | engines: {node: '>= 8'} 330 | dependencies: 331 | '@nodelib/fs.stat': 2.0.5 332 | run-parallel: 1.2.0 333 | dev: true 334 | 335 | /@nodelib/fs.stat@2.0.5: 336 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 337 | engines: {node: '>= 8'} 338 | dev: true 339 | 340 | /@nodelib/fs.walk@1.2.8: 341 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 342 | engines: {node: '>= 8'} 343 | dependencies: 344 | '@nodelib/fs.scandir': 2.1.5 345 | fastq: 1.16.0 346 | dev: true 347 | 348 | /@pkgjs/parseargs@0.11.0: 349 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 350 | engines: {node: '>=14'} 351 | requiresBuild: true 352 | dev: true 353 | optional: true 354 | 355 | /@sinonjs/commons@2.0.0: 356 | resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} 357 | dependencies: 358 | type-detect: 4.0.8 359 | dev: true 360 | 361 | /@sinonjs/commons@3.0.0: 362 | resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} 363 | dependencies: 364 | type-detect: 4.0.8 365 | dev: true 366 | 367 | /@sinonjs/fake-timers@11.2.2: 368 | resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} 369 | dependencies: 370 | '@sinonjs/commons': 3.0.0 371 | dev: true 372 | 373 | /@sinonjs/samsam@8.0.0: 374 | resolution: {integrity: sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==} 375 | dependencies: 376 | '@sinonjs/commons': 2.0.0 377 | lodash.get: 4.4.2 378 | type-detect: 4.0.8 379 | dev: true 380 | 381 | /@sinonjs/text-encoding@0.7.2: 382 | resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} 383 | dev: true 384 | 385 | /@tsconfig/node10@1.0.9: 386 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 387 | dev: true 388 | 389 | /@tsconfig/node12@1.0.11: 390 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 391 | dev: true 392 | 393 | /@tsconfig/node14@1.0.3: 394 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 395 | dev: true 396 | 397 | /@tsconfig/node16@1.0.4: 398 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 399 | dev: true 400 | 401 | /@types/node@17.0.45: 402 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 403 | dev: true 404 | 405 | /@types/sinon@17.0.2: 406 | resolution: {integrity: sha512-Zt6heIGsdqERkxctIpvN5Pv3edgBrhoeb3yHyxffd4InN0AX2SVNKSrhdDZKGQICVOxWP/q4DyhpfPNMSrpIiA==} 407 | dependencies: 408 | '@types/sinonjs__fake-timers': 8.1.5 409 | dev: true 410 | 411 | /@types/sinonjs__fake-timers@8.1.5: 412 | resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} 413 | dev: true 414 | 415 | /acorn-walk@8.3.1: 416 | resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} 417 | engines: {node: '>=0.4.0'} 418 | dev: true 419 | 420 | /acorn@8.11.3: 421 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 422 | engines: {node: '>=0.4.0'} 423 | hasBin: true 424 | dev: true 425 | 426 | /aggregate-error@3.1.0: 427 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 428 | engines: {node: '>=8'} 429 | dependencies: 430 | clean-stack: 2.2.0 431 | indent-string: 4.0.0 432 | dev: true 433 | 434 | /aggregate-error@4.0.1: 435 | resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} 436 | engines: {node: '>=12'} 437 | dependencies: 438 | clean-stack: 4.2.0 439 | indent-string: 5.0.0 440 | dev: true 441 | 442 | /ansi-escapes@6.2.0: 443 | resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} 444 | engines: {node: '>=14.16'} 445 | dependencies: 446 | type-fest: 3.13.1 447 | dev: true 448 | 449 | /ansi-regex@5.0.1: 450 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 451 | engines: {node: '>=8'} 452 | dev: true 453 | 454 | /ansi-regex@6.0.1: 455 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 456 | engines: {node: '>=12'} 457 | dev: true 458 | 459 | /ansi-styles@4.3.0: 460 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 461 | engines: {node: '>=8'} 462 | dependencies: 463 | color-convert: 2.0.1 464 | dev: true 465 | 466 | /ansi-styles@6.2.1: 467 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 468 | engines: {node: '>=12'} 469 | dev: true 470 | 471 | /any-promise@1.3.0: 472 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 473 | dev: true 474 | 475 | /anymatch@3.1.3: 476 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 477 | engines: {node: '>= 8'} 478 | dependencies: 479 | normalize-path: 3.0.0 480 | picomatch: 2.3.1 481 | dev: true 482 | 483 | /arg@4.1.3: 484 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 485 | dev: true 486 | 487 | /argparse@1.0.10: 488 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 489 | dependencies: 490 | sprintf-js: 1.0.3 491 | dev: true 492 | 493 | /array-find-index@1.0.2: 494 | resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} 495 | engines: {node: '>=0.10.0'} 496 | dev: true 497 | 498 | /array-union@2.1.0: 499 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 500 | engines: {node: '>=8'} 501 | dev: true 502 | 503 | /arrgv@1.0.2: 504 | resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} 505 | engines: {node: '>=8.0.0'} 506 | dev: true 507 | 508 | /arrify@3.0.0: 509 | resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} 510 | engines: {node: '>=12'} 511 | dev: true 512 | 513 | /ava@4.3.3: 514 | resolution: {integrity: sha512-9Egq/d9R74ExrWohHeqUlexjDbgZJX5jA1Wq4KCTqc3wIfpGEK79zVy4rBtofJ9YKIxs4PzhJ8BgbW5PlAYe6w==} 515 | engines: {node: '>=12.22 <13 || >=14.17 <15 || >=16.4 <17 || >=18'} 516 | hasBin: true 517 | peerDependencies: 518 | '@ava/typescript': '*' 519 | peerDependenciesMeta: 520 | '@ava/typescript': 521 | optional: true 522 | dependencies: 523 | acorn: 8.11.3 524 | acorn-walk: 8.3.1 525 | ansi-styles: 6.2.1 526 | arrgv: 1.0.2 527 | arrify: 3.0.0 528 | callsites: 4.1.0 529 | cbor: 8.1.0 530 | chalk: 5.3.0 531 | chokidar: 3.5.3 532 | chunkd: 2.0.1 533 | ci-info: 3.9.0 534 | ci-parallel-vars: 1.0.1 535 | clean-yaml-object: 0.1.0 536 | cli-truncate: 3.1.0 537 | code-excerpt: 4.0.0 538 | common-path-prefix: 3.0.0 539 | concordance: 5.0.4 540 | currently-unhandled: 0.4.1 541 | debug: 4.3.4 542 | del: 6.1.1 543 | emittery: 0.11.0 544 | figures: 4.0.1 545 | globby: 13.2.2 546 | ignore-by-default: 2.1.0 547 | indent-string: 5.0.0 548 | is-error: 2.2.2 549 | is-plain-object: 5.0.0 550 | is-promise: 4.0.0 551 | matcher: 5.0.0 552 | mem: 9.0.2 553 | ms: 2.1.3 554 | p-event: 5.0.1 555 | p-map: 5.5.0 556 | picomatch: 2.3.1 557 | pkg-conf: 4.0.0 558 | plur: 5.1.0 559 | pretty-ms: 7.0.1 560 | resolve-cwd: 3.0.0 561 | slash: 3.0.0 562 | stack-utils: 2.0.6 563 | strip-ansi: 7.1.0 564 | supertap: 3.0.1 565 | temp-dir: 2.0.0 566 | write-file-atomic: 4.0.2 567 | yargs: 17.7.2 568 | transitivePeerDependencies: 569 | - supports-color 570 | dev: true 571 | 572 | /balanced-match@1.0.2: 573 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 574 | dev: true 575 | 576 | /binary-extensions@2.2.0: 577 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 578 | engines: {node: '>=8'} 579 | dev: true 580 | 581 | /blueimp-md5@2.19.0: 582 | resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} 583 | dev: true 584 | 585 | /brace-expansion@1.1.11: 586 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 587 | dependencies: 588 | balanced-match: 1.0.2 589 | concat-map: 0.0.1 590 | dev: true 591 | 592 | /brace-expansion@2.0.1: 593 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 594 | dependencies: 595 | balanced-match: 1.0.2 596 | dev: true 597 | 598 | /braces@3.0.2: 599 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 600 | engines: {node: '>=8'} 601 | dependencies: 602 | fill-range: 7.0.1 603 | dev: true 604 | 605 | /bundle-require@3.1.2(esbuild@0.14.54): 606 | resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} 607 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 608 | peerDependencies: 609 | esbuild: '>=0.13' 610 | dependencies: 611 | esbuild: 0.14.54 612 | load-tsconfig: 0.2.5 613 | dev: true 614 | 615 | /cac@6.7.14: 616 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 617 | engines: {node: '>=8'} 618 | dev: true 619 | 620 | /callsites@4.1.0: 621 | resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} 622 | engines: {node: '>=12.20'} 623 | dev: true 624 | 625 | /cbor@8.1.0: 626 | resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} 627 | engines: {node: '>=12.19'} 628 | dependencies: 629 | nofilter: 3.1.0 630 | dev: true 631 | 632 | /chalk@5.3.0: 633 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 634 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 635 | dev: true 636 | 637 | /chokidar@3.5.3: 638 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 639 | engines: {node: '>= 8.10.0'} 640 | dependencies: 641 | anymatch: 3.1.3 642 | braces: 3.0.2 643 | glob-parent: 5.1.2 644 | is-binary-path: 2.1.0 645 | is-glob: 4.0.3 646 | normalize-path: 3.0.0 647 | readdirp: 3.6.0 648 | optionalDependencies: 649 | fsevents: 2.3.3 650 | dev: true 651 | 652 | /chunkd@2.0.1: 653 | resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} 654 | dev: true 655 | 656 | /ci-info@3.9.0: 657 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 658 | engines: {node: '>=8'} 659 | dev: true 660 | 661 | /ci-parallel-vars@1.0.1: 662 | resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} 663 | dev: true 664 | 665 | /clean-stack@2.2.0: 666 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 667 | engines: {node: '>=6'} 668 | dev: true 669 | 670 | /clean-stack@4.2.0: 671 | resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} 672 | engines: {node: '>=12'} 673 | dependencies: 674 | escape-string-regexp: 5.0.0 675 | dev: true 676 | 677 | /clean-yaml-object@0.1.0: 678 | resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} 679 | engines: {node: '>=0.10.0'} 680 | dev: true 681 | 682 | /cli-cursor@4.0.0: 683 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} 684 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 685 | dependencies: 686 | restore-cursor: 4.0.0 687 | dev: true 688 | 689 | /cli-truncate@3.1.0: 690 | resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} 691 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 692 | dependencies: 693 | slice-ansi: 5.0.0 694 | string-width: 5.1.2 695 | dev: true 696 | 697 | /cli-truncate@4.0.0: 698 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 699 | engines: {node: '>=18'} 700 | dependencies: 701 | slice-ansi: 5.0.0 702 | string-width: 7.0.0 703 | dev: true 704 | 705 | /cliui@8.0.1: 706 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 707 | engines: {node: '>=12'} 708 | dependencies: 709 | string-width: 4.2.3 710 | strip-ansi: 6.0.1 711 | wrap-ansi: 7.0.0 712 | dev: true 713 | 714 | /code-excerpt@4.0.0: 715 | resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} 716 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 717 | dependencies: 718 | convert-to-spaces: 2.0.1 719 | dev: true 720 | 721 | /color-convert@2.0.1: 722 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 723 | engines: {node: '>=7.0.0'} 724 | dependencies: 725 | color-name: 1.1.4 726 | dev: true 727 | 728 | /color-name@1.1.4: 729 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 730 | dev: true 731 | 732 | /colorette@2.0.20: 733 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 734 | dev: true 735 | 736 | /commander@11.1.0: 737 | resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} 738 | engines: {node: '>=16'} 739 | dev: true 740 | 741 | /commander@4.1.1: 742 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 743 | engines: {node: '>= 6'} 744 | dev: true 745 | 746 | /common-path-prefix@3.0.0: 747 | resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} 748 | dev: true 749 | 750 | /concat-map@0.0.1: 751 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 752 | dev: true 753 | 754 | /concordance@5.0.4: 755 | resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} 756 | engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} 757 | dependencies: 758 | date-time: 3.1.0 759 | esutils: 2.0.3 760 | fast-diff: 1.3.0 761 | js-string-escape: 1.0.1 762 | lodash: 4.17.21 763 | md5-hex: 3.0.1 764 | semver: 7.5.4 765 | well-known-symbols: 2.0.0 766 | dev: true 767 | 768 | /convert-to-spaces@2.0.1: 769 | resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} 770 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 771 | dev: true 772 | 773 | /create-require@1.1.1: 774 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 775 | dev: true 776 | 777 | /cross-spawn@7.0.3: 778 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 779 | engines: {node: '>= 8'} 780 | dependencies: 781 | path-key: 3.1.1 782 | shebang-command: 2.0.0 783 | which: 2.0.2 784 | dev: true 785 | 786 | /currently-unhandled@0.4.1: 787 | resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} 788 | engines: {node: '>=0.10.0'} 789 | dependencies: 790 | array-find-index: 1.0.2 791 | dev: true 792 | 793 | /data-uri-to-buffer@4.0.1: 794 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 795 | engines: {node: '>= 12'} 796 | dev: false 797 | 798 | /date-time@3.1.0: 799 | resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} 800 | engines: {node: '>=6'} 801 | dependencies: 802 | time-zone: 1.0.0 803 | dev: true 804 | 805 | /debug@4.3.4: 806 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 807 | engines: {node: '>=6.0'} 808 | peerDependencies: 809 | supports-color: '*' 810 | peerDependenciesMeta: 811 | supports-color: 812 | optional: true 813 | dependencies: 814 | ms: 2.1.2 815 | dev: true 816 | 817 | /del@6.1.1: 818 | resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} 819 | engines: {node: '>=10'} 820 | dependencies: 821 | globby: 11.1.0 822 | graceful-fs: 4.2.11 823 | is-glob: 4.0.3 824 | is-path-cwd: 2.2.0 825 | is-path-inside: 3.0.3 826 | p-map: 4.0.0 827 | rimraf: 3.0.2 828 | slash: 3.0.0 829 | dev: true 830 | 831 | /diff@4.0.2: 832 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 833 | engines: {node: '>=0.3.1'} 834 | dev: true 835 | 836 | /diff@5.1.0: 837 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 838 | engines: {node: '>=0.3.1'} 839 | dev: true 840 | 841 | /dir-glob@3.0.1: 842 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 843 | engines: {node: '>=8'} 844 | dependencies: 845 | path-type: 4.0.0 846 | dev: true 847 | 848 | /dotenv@16.3.1: 849 | resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} 850 | engines: {node: '>=12'} 851 | dev: true 852 | 853 | /eastasianwidth@0.2.0: 854 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 855 | dev: true 856 | 857 | /emittery@0.11.0: 858 | resolution: {integrity: sha512-S/7tzL6v5i+4iJd627Nhv9cLFIo5weAIlGccqJFpnBoDB8U1TF2k5tez4J/QNuxyyhWuFqHg1L84Kd3m7iXg6g==} 859 | engines: {node: '>=12'} 860 | dev: true 861 | 862 | /emoji-regex@10.3.0: 863 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} 864 | dev: true 865 | 866 | /emoji-regex@8.0.0: 867 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 868 | dev: true 869 | 870 | /emoji-regex@9.2.2: 871 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 872 | dev: true 873 | 874 | /esbuild-android-64@0.14.54: 875 | resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} 876 | engines: {node: '>=12'} 877 | cpu: [x64] 878 | os: [android] 879 | requiresBuild: true 880 | dev: true 881 | optional: true 882 | 883 | /esbuild-android-arm64@0.14.54: 884 | resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} 885 | engines: {node: '>=12'} 886 | cpu: [arm64] 887 | os: [android] 888 | requiresBuild: true 889 | dev: true 890 | optional: true 891 | 892 | /esbuild-darwin-64@0.14.54: 893 | resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} 894 | engines: {node: '>=12'} 895 | cpu: [x64] 896 | os: [darwin] 897 | requiresBuild: true 898 | dev: true 899 | optional: true 900 | 901 | /esbuild-darwin-arm64@0.14.54: 902 | resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} 903 | engines: {node: '>=12'} 904 | cpu: [arm64] 905 | os: [darwin] 906 | requiresBuild: true 907 | dev: true 908 | optional: true 909 | 910 | /esbuild-freebsd-64@0.14.54: 911 | resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} 912 | engines: {node: '>=12'} 913 | cpu: [x64] 914 | os: [freebsd] 915 | requiresBuild: true 916 | dev: true 917 | optional: true 918 | 919 | /esbuild-freebsd-arm64@0.14.54: 920 | resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} 921 | engines: {node: '>=12'} 922 | cpu: [arm64] 923 | os: [freebsd] 924 | requiresBuild: true 925 | dev: true 926 | optional: true 927 | 928 | /esbuild-linux-32@0.14.54: 929 | resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} 930 | engines: {node: '>=12'} 931 | cpu: [ia32] 932 | os: [linux] 933 | requiresBuild: true 934 | dev: true 935 | optional: true 936 | 937 | /esbuild-linux-64@0.14.54: 938 | resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} 939 | engines: {node: '>=12'} 940 | cpu: [x64] 941 | os: [linux] 942 | requiresBuild: true 943 | dev: true 944 | optional: true 945 | 946 | /esbuild-linux-arm64@0.14.54: 947 | resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} 948 | engines: {node: '>=12'} 949 | cpu: [arm64] 950 | os: [linux] 951 | requiresBuild: true 952 | dev: true 953 | optional: true 954 | 955 | /esbuild-linux-arm@0.14.54: 956 | resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} 957 | engines: {node: '>=12'} 958 | cpu: [arm] 959 | os: [linux] 960 | requiresBuild: true 961 | dev: true 962 | optional: true 963 | 964 | /esbuild-linux-mips64le@0.14.54: 965 | resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} 966 | engines: {node: '>=12'} 967 | cpu: [mips64el] 968 | os: [linux] 969 | requiresBuild: true 970 | dev: true 971 | optional: true 972 | 973 | /esbuild-linux-ppc64le@0.14.54: 974 | resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} 975 | engines: {node: '>=12'} 976 | cpu: [ppc64] 977 | os: [linux] 978 | requiresBuild: true 979 | dev: true 980 | optional: true 981 | 982 | /esbuild-linux-riscv64@0.14.54: 983 | resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} 984 | engines: {node: '>=12'} 985 | cpu: [riscv64] 986 | os: [linux] 987 | requiresBuild: true 988 | dev: true 989 | optional: true 990 | 991 | /esbuild-linux-s390x@0.14.54: 992 | resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} 993 | engines: {node: '>=12'} 994 | cpu: [s390x] 995 | os: [linux] 996 | requiresBuild: true 997 | dev: true 998 | optional: true 999 | 1000 | /esbuild-netbsd-64@0.14.54: 1001 | resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} 1002 | engines: {node: '>=12'} 1003 | cpu: [x64] 1004 | os: [netbsd] 1005 | requiresBuild: true 1006 | dev: true 1007 | optional: true 1008 | 1009 | /esbuild-openbsd-64@0.14.54: 1010 | resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} 1011 | engines: {node: '>=12'} 1012 | cpu: [x64] 1013 | os: [openbsd] 1014 | requiresBuild: true 1015 | dev: true 1016 | optional: true 1017 | 1018 | /esbuild-sunos-64@0.14.54: 1019 | resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} 1020 | engines: {node: '>=12'} 1021 | cpu: [x64] 1022 | os: [sunos] 1023 | requiresBuild: true 1024 | dev: true 1025 | optional: true 1026 | 1027 | /esbuild-windows-32@0.14.54: 1028 | resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} 1029 | engines: {node: '>=12'} 1030 | cpu: [ia32] 1031 | os: [win32] 1032 | requiresBuild: true 1033 | dev: true 1034 | optional: true 1035 | 1036 | /esbuild-windows-64@0.14.54: 1037 | resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} 1038 | engines: {node: '>=12'} 1039 | cpu: [x64] 1040 | os: [win32] 1041 | requiresBuild: true 1042 | dev: true 1043 | optional: true 1044 | 1045 | /esbuild-windows-arm64@0.14.54: 1046 | resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} 1047 | engines: {node: '>=12'} 1048 | cpu: [arm64] 1049 | os: [win32] 1050 | requiresBuild: true 1051 | dev: true 1052 | optional: true 1053 | 1054 | /esbuild@0.14.54: 1055 | resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} 1056 | engines: {node: '>=12'} 1057 | hasBin: true 1058 | requiresBuild: true 1059 | optionalDependencies: 1060 | '@esbuild/linux-loong64': 0.14.54 1061 | esbuild-android-64: 0.14.54 1062 | esbuild-android-arm64: 0.14.54 1063 | esbuild-darwin-64: 0.14.54 1064 | esbuild-darwin-arm64: 0.14.54 1065 | esbuild-freebsd-64: 0.14.54 1066 | esbuild-freebsd-arm64: 0.14.54 1067 | esbuild-linux-32: 0.14.54 1068 | esbuild-linux-64: 0.14.54 1069 | esbuild-linux-arm: 0.14.54 1070 | esbuild-linux-arm64: 0.14.54 1071 | esbuild-linux-mips64le: 0.14.54 1072 | esbuild-linux-ppc64le: 0.14.54 1073 | esbuild-linux-riscv64: 0.14.54 1074 | esbuild-linux-s390x: 0.14.54 1075 | esbuild-netbsd-64: 0.14.54 1076 | esbuild-openbsd-64: 0.14.54 1077 | esbuild-sunos-64: 0.14.54 1078 | esbuild-windows-32: 0.14.54 1079 | esbuild-windows-64: 0.14.54 1080 | esbuild-windows-arm64: 0.14.54 1081 | dev: true 1082 | 1083 | /esbuild@0.19.11: 1084 | resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} 1085 | engines: {node: '>=12'} 1086 | hasBin: true 1087 | requiresBuild: true 1088 | optionalDependencies: 1089 | '@esbuild/aix-ppc64': 0.19.11 1090 | '@esbuild/android-arm': 0.19.11 1091 | '@esbuild/android-arm64': 0.19.11 1092 | '@esbuild/android-x64': 0.19.11 1093 | '@esbuild/darwin-arm64': 0.19.11 1094 | '@esbuild/darwin-x64': 0.19.11 1095 | '@esbuild/freebsd-arm64': 0.19.11 1096 | '@esbuild/freebsd-x64': 0.19.11 1097 | '@esbuild/linux-arm': 0.19.11 1098 | '@esbuild/linux-arm64': 0.19.11 1099 | '@esbuild/linux-ia32': 0.19.11 1100 | '@esbuild/linux-loong64': 0.19.11 1101 | '@esbuild/linux-mips64el': 0.19.11 1102 | '@esbuild/linux-ppc64': 0.19.11 1103 | '@esbuild/linux-riscv64': 0.19.11 1104 | '@esbuild/linux-s390x': 0.19.11 1105 | '@esbuild/linux-x64': 0.19.11 1106 | '@esbuild/netbsd-x64': 0.19.11 1107 | '@esbuild/openbsd-x64': 0.19.11 1108 | '@esbuild/sunos-x64': 0.19.11 1109 | '@esbuild/win32-arm64': 0.19.11 1110 | '@esbuild/win32-ia32': 0.19.11 1111 | '@esbuild/win32-x64': 0.19.11 1112 | dev: true 1113 | 1114 | /escalade@3.1.1: 1115 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1116 | engines: {node: '>=6'} 1117 | dev: true 1118 | 1119 | /escape-string-regexp@2.0.0: 1120 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1121 | engines: {node: '>=8'} 1122 | dev: true 1123 | 1124 | /escape-string-regexp@5.0.0: 1125 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1126 | engines: {node: '>=12'} 1127 | dev: true 1128 | 1129 | /esprima@4.0.1: 1130 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1131 | engines: {node: '>=4'} 1132 | hasBin: true 1133 | dev: true 1134 | 1135 | /esutils@2.0.3: 1136 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1137 | engines: {node: '>=0.10.0'} 1138 | dev: true 1139 | 1140 | /eventemitter3@5.0.1: 1141 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 1142 | dev: true 1143 | 1144 | /execa@5.1.1: 1145 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1146 | engines: {node: '>=10'} 1147 | dependencies: 1148 | cross-spawn: 7.0.3 1149 | get-stream: 6.0.1 1150 | human-signals: 2.1.0 1151 | is-stream: 2.0.1 1152 | merge-stream: 2.0.0 1153 | npm-run-path: 4.0.1 1154 | onetime: 5.1.2 1155 | signal-exit: 3.0.7 1156 | strip-final-newline: 2.0.0 1157 | dev: true 1158 | 1159 | /execa@8.0.1: 1160 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 1161 | engines: {node: '>=16.17'} 1162 | dependencies: 1163 | cross-spawn: 7.0.3 1164 | get-stream: 8.0.1 1165 | human-signals: 5.0.0 1166 | is-stream: 3.0.0 1167 | merge-stream: 2.0.0 1168 | npm-run-path: 5.2.0 1169 | onetime: 6.0.0 1170 | signal-exit: 4.1.0 1171 | strip-final-newline: 3.0.0 1172 | dev: true 1173 | 1174 | /fast-diff@1.3.0: 1175 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1176 | dev: true 1177 | 1178 | /fast-glob@3.3.2: 1179 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1180 | engines: {node: '>=8.6.0'} 1181 | dependencies: 1182 | '@nodelib/fs.stat': 2.0.5 1183 | '@nodelib/fs.walk': 1.2.8 1184 | glob-parent: 5.1.2 1185 | merge2: 1.4.1 1186 | micromatch: 4.0.5 1187 | dev: true 1188 | 1189 | /fastq@1.16.0: 1190 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} 1191 | dependencies: 1192 | reusify: 1.0.4 1193 | dev: true 1194 | 1195 | /fetch-blob@3.2.0: 1196 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 1197 | engines: {node: ^12.20 || >= 14.13} 1198 | dependencies: 1199 | node-domexception: 1.0.0 1200 | web-streams-polyfill: 3.3.2 1201 | dev: false 1202 | 1203 | /figures@4.0.1: 1204 | resolution: {integrity: sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==} 1205 | engines: {node: '>=12'} 1206 | dependencies: 1207 | escape-string-regexp: 5.0.0 1208 | is-unicode-supported: 1.3.0 1209 | dev: true 1210 | 1211 | /fill-range@7.0.1: 1212 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1213 | engines: {node: '>=8'} 1214 | dependencies: 1215 | to-regex-range: 5.0.1 1216 | dev: true 1217 | 1218 | /find-up@6.3.0: 1219 | resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} 1220 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1221 | dependencies: 1222 | locate-path: 7.2.0 1223 | path-exists: 5.0.0 1224 | dev: true 1225 | 1226 | /foreground-child@3.1.1: 1227 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1228 | engines: {node: '>=14'} 1229 | dependencies: 1230 | cross-spawn: 7.0.3 1231 | signal-exit: 4.1.0 1232 | dev: true 1233 | 1234 | /formdata-polyfill@4.0.10: 1235 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 1236 | engines: {node: '>=12.20.0'} 1237 | dependencies: 1238 | fetch-blob: 3.2.0 1239 | dev: false 1240 | 1241 | /fs.realpath@1.0.0: 1242 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1243 | dev: true 1244 | 1245 | /fsevents@2.3.3: 1246 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1247 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1248 | os: [darwin] 1249 | requiresBuild: true 1250 | dev: true 1251 | optional: true 1252 | 1253 | /get-caller-file@2.0.5: 1254 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1255 | engines: {node: 6.* || 8.* || >= 10.*} 1256 | dev: true 1257 | 1258 | /get-east-asian-width@1.2.0: 1259 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} 1260 | engines: {node: '>=18'} 1261 | dev: true 1262 | 1263 | /get-stream@6.0.1: 1264 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1265 | engines: {node: '>=10'} 1266 | dev: true 1267 | 1268 | /get-stream@8.0.1: 1269 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 1270 | engines: {node: '>=16'} 1271 | dev: true 1272 | 1273 | /get-tsconfig@4.7.2: 1274 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1275 | dependencies: 1276 | resolve-pkg-maps: 1.0.0 1277 | dev: true 1278 | 1279 | /glob-parent@5.1.2: 1280 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1281 | engines: {node: '>= 6'} 1282 | dependencies: 1283 | is-glob: 4.0.3 1284 | dev: true 1285 | 1286 | /glob@10.3.10: 1287 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1288 | engines: {node: '>=16 || 14 >=14.17'} 1289 | hasBin: true 1290 | dependencies: 1291 | foreground-child: 3.1.1 1292 | jackspeak: 2.3.6 1293 | minimatch: 9.0.3 1294 | minipass: 7.0.4 1295 | path-scurry: 1.10.1 1296 | dev: true 1297 | 1298 | /glob@7.2.3: 1299 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1300 | dependencies: 1301 | fs.realpath: 1.0.0 1302 | inflight: 1.0.6 1303 | inherits: 2.0.4 1304 | minimatch: 3.1.2 1305 | once: 1.4.0 1306 | path-is-absolute: 1.0.1 1307 | dev: true 1308 | 1309 | /globby@11.1.0: 1310 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1311 | engines: {node: '>=10'} 1312 | dependencies: 1313 | array-union: 2.1.0 1314 | dir-glob: 3.0.1 1315 | fast-glob: 3.3.2 1316 | ignore: 5.3.0 1317 | merge2: 1.4.1 1318 | slash: 3.0.0 1319 | dev: true 1320 | 1321 | /globby@13.2.2: 1322 | resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} 1323 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1324 | dependencies: 1325 | dir-glob: 3.0.1 1326 | fast-glob: 3.3.2 1327 | ignore: 5.3.0 1328 | merge2: 1.4.1 1329 | slash: 4.0.0 1330 | dev: true 1331 | 1332 | /graceful-fs@4.2.11: 1333 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1334 | dev: true 1335 | 1336 | /has-flag@4.0.0: 1337 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1338 | engines: {node: '>=8'} 1339 | dev: true 1340 | 1341 | /human-signals@2.1.0: 1342 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1343 | engines: {node: '>=10.17.0'} 1344 | dev: true 1345 | 1346 | /human-signals@5.0.0: 1347 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 1348 | engines: {node: '>=16.17.0'} 1349 | dev: true 1350 | 1351 | /husky@7.0.4: 1352 | resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} 1353 | engines: {node: '>=12'} 1354 | hasBin: true 1355 | dev: true 1356 | 1357 | /ignore-by-default@2.1.0: 1358 | resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} 1359 | engines: {node: '>=10 <11 || >=12 <13 || >=14'} 1360 | dev: true 1361 | 1362 | /ignore@5.3.0: 1363 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 1364 | engines: {node: '>= 4'} 1365 | dev: true 1366 | 1367 | /imurmurhash@0.1.4: 1368 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1369 | engines: {node: '>=0.8.19'} 1370 | dev: true 1371 | 1372 | /indent-string@4.0.0: 1373 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1374 | engines: {node: '>=8'} 1375 | dev: true 1376 | 1377 | /indent-string@5.0.0: 1378 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1379 | engines: {node: '>=12'} 1380 | dev: true 1381 | 1382 | /inflight@1.0.6: 1383 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1384 | dependencies: 1385 | once: 1.4.0 1386 | wrappy: 1.0.2 1387 | dev: true 1388 | 1389 | /inherits@2.0.4: 1390 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1391 | dev: true 1392 | 1393 | /irregular-plurals@3.5.0: 1394 | resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} 1395 | engines: {node: '>=8'} 1396 | dev: true 1397 | 1398 | /is-binary-path@2.1.0: 1399 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1400 | engines: {node: '>=8'} 1401 | dependencies: 1402 | binary-extensions: 2.2.0 1403 | dev: true 1404 | 1405 | /is-error@2.2.2: 1406 | resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} 1407 | dev: true 1408 | 1409 | /is-extglob@2.1.1: 1410 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1411 | engines: {node: '>=0.10.0'} 1412 | dev: true 1413 | 1414 | /is-fullwidth-code-point@3.0.0: 1415 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1416 | engines: {node: '>=8'} 1417 | dev: true 1418 | 1419 | /is-fullwidth-code-point@4.0.0: 1420 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1421 | engines: {node: '>=12'} 1422 | dev: true 1423 | 1424 | /is-fullwidth-code-point@5.0.0: 1425 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} 1426 | engines: {node: '>=18'} 1427 | dependencies: 1428 | get-east-asian-width: 1.2.0 1429 | dev: true 1430 | 1431 | /is-glob@4.0.3: 1432 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1433 | engines: {node: '>=0.10.0'} 1434 | dependencies: 1435 | is-extglob: 2.1.1 1436 | dev: true 1437 | 1438 | /is-number@7.0.0: 1439 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1440 | engines: {node: '>=0.12.0'} 1441 | dev: true 1442 | 1443 | /is-path-cwd@2.2.0: 1444 | resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} 1445 | engines: {node: '>=6'} 1446 | dev: true 1447 | 1448 | /is-path-inside@3.0.3: 1449 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1450 | engines: {node: '>=8'} 1451 | dev: true 1452 | 1453 | /is-plain-object@5.0.0: 1454 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 1455 | engines: {node: '>=0.10.0'} 1456 | dev: true 1457 | 1458 | /is-promise@4.0.0: 1459 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 1460 | dev: true 1461 | 1462 | /is-stream@2.0.1: 1463 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1464 | engines: {node: '>=8'} 1465 | dev: true 1466 | 1467 | /is-stream@3.0.0: 1468 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1469 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1470 | dev: true 1471 | 1472 | /is-unicode-supported@1.3.0: 1473 | resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} 1474 | engines: {node: '>=12'} 1475 | dev: true 1476 | 1477 | /isexe@2.0.0: 1478 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1479 | dev: true 1480 | 1481 | /jackspeak@2.3.6: 1482 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1483 | engines: {node: '>=14'} 1484 | dependencies: 1485 | '@isaacs/cliui': 8.0.2 1486 | optionalDependencies: 1487 | '@pkgjs/parseargs': 0.11.0 1488 | dev: true 1489 | 1490 | /joycon@3.1.1: 1491 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1492 | engines: {node: '>=10'} 1493 | dev: true 1494 | 1495 | /js-string-escape@1.0.1: 1496 | resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} 1497 | engines: {node: '>= 0.8'} 1498 | dev: true 1499 | 1500 | /js-yaml@3.14.1: 1501 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1502 | hasBin: true 1503 | dependencies: 1504 | argparse: 1.0.10 1505 | esprima: 4.0.1 1506 | dev: true 1507 | 1508 | /just-extend@6.2.0: 1509 | resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} 1510 | dev: true 1511 | 1512 | /lilconfig@2.1.0: 1513 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1514 | engines: {node: '>=10'} 1515 | dev: true 1516 | 1517 | /lilconfig@3.0.0: 1518 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 1519 | engines: {node: '>=14'} 1520 | dev: true 1521 | 1522 | /lines-and-columns@1.2.4: 1523 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1524 | dev: true 1525 | 1526 | /lint-staged@15.2.0: 1527 | resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} 1528 | engines: {node: '>=18.12.0'} 1529 | hasBin: true 1530 | dependencies: 1531 | chalk: 5.3.0 1532 | commander: 11.1.0 1533 | debug: 4.3.4 1534 | execa: 8.0.1 1535 | lilconfig: 3.0.0 1536 | listr2: 8.0.0 1537 | micromatch: 4.0.5 1538 | pidtree: 0.6.0 1539 | string-argv: 0.3.2 1540 | yaml: 2.3.4 1541 | transitivePeerDependencies: 1542 | - supports-color 1543 | dev: true 1544 | 1545 | /listr2@8.0.0: 1546 | resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} 1547 | engines: {node: '>=18.0.0'} 1548 | dependencies: 1549 | cli-truncate: 4.0.0 1550 | colorette: 2.0.20 1551 | eventemitter3: 5.0.1 1552 | log-update: 6.0.0 1553 | rfdc: 1.3.0 1554 | wrap-ansi: 9.0.0 1555 | dev: true 1556 | 1557 | /load-json-file@7.0.1: 1558 | resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} 1559 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1560 | dev: true 1561 | 1562 | /load-tsconfig@0.2.5: 1563 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1564 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1565 | dev: true 1566 | 1567 | /locate-path@7.2.0: 1568 | resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} 1569 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1570 | dependencies: 1571 | p-locate: 6.0.0 1572 | dev: true 1573 | 1574 | /lodash.get@4.4.2: 1575 | resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} 1576 | dev: true 1577 | 1578 | /lodash.sortby@4.7.0: 1579 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1580 | dev: true 1581 | 1582 | /lodash@4.17.21: 1583 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1584 | dev: true 1585 | 1586 | /log-update@6.0.0: 1587 | resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} 1588 | engines: {node: '>=18'} 1589 | dependencies: 1590 | ansi-escapes: 6.2.0 1591 | cli-cursor: 4.0.0 1592 | slice-ansi: 7.1.0 1593 | strip-ansi: 7.1.0 1594 | wrap-ansi: 9.0.0 1595 | dev: true 1596 | 1597 | /lru-cache@10.1.0: 1598 | resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} 1599 | engines: {node: 14 || >=16.14} 1600 | dev: true 1601 | 1602 | /lru-cache@6.0.0: 1603 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1604 | engines: {node: '>=10'} 1605 | dependencies: 1606 | yallist: 4.0.0 1607 | dev: true 1608 | 1609 | /make-error@1.3.6: 1610 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1611 | dev: true 1612 | 1613 | /map-age-cleaner@0.1.3: 1614 | resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} 1615 | engines: {node: '>=6'} 1616 | dependencies: 1617 | p-defer: 1.0.0 1618 | dev: true 1619 | 1620 | /matcher@5.0.0: 1621 | resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} 1622 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1623 | dependencies: 1624 | escape-string-regexp: 5.0.0 1625 | dev: true 1626 | 1627 | /md5-hex@3.0.1: 1628 | resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} 1629 | engines: {node: '>=8'} 1630 | dependencies: 1631 | blueimp-md5: 2.19.0 1632 | dev: true 1633 | 1634 | /mem@9.0.2: 1635 | resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} 1636 | engines: {node: '>=12.20'} 1637 | dependencies: 1638 | map-age-cleaner: 0.1.3 1639 | mimic-fn: 4.0.0 1640 | dev: true 1641 | 1642 | /merge-stream@2.0.0: 1643 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1644 | dev: true 1645 | 1646 | /merge2@1.4.1: 1647 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1648 | engines: {node: '>= 8'} 1649 | dev: true 1650 | 1651 | /micromatch@4.0.5: 1652 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1653 | engines: {node: '>=8.6'} 1654 | dependencies: 1655 | braces: 3.0.2 1656 | picomatch: 2.3.1 1657 | dev: true 1658 | 1659 | /mimic-fn@2.1.0: 1660 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1661 | engines: {node: '>=6'} 1662 | dev: true 1663 | 1664 | /mimic-fn@4.0.0: 1665 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1666 | engines: {node: '>=12'} 1667 | dev: true 1668 | 1669 | /minimatch@3.1.2: 1670 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1671 | dependencies: 1672 | brace-expansion: 1.1.11 1673 | dev: true 1674 | 1675 | /minimatch@9.0.3: 1676 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 1677 | engines: {node: '>=16 || 14 >=14.17'} 1678 | dependencies: 1679 | brace-expansion: 2.0.1 1680 | dev: true 1681 | 1682 | /minipass@7.0.4: 1683 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 1684 | engines: {node: '>=16 || 14 >=14.17'} 1685 | dev: true 1686 | 1687 | /ms@2.1.2: 1688 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1689 | dev: true 1690 | 1691 | /ms@2.1.3: 1692 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1693 | dev: true 1694 | 1695 | /mz@2.7.0: 1696 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1697 | dependencies: 1698 | any-promise: 1.3.0 1699 | object-assign: 4.1.1 1700 | thenify-all: 1.6.0 1701 | dev: true 1702 | 1703 | /nise@5.1.7: 1704 | resolution: {integrity: sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ==} 1705 | dependencies: 1706 | '@sinonjs/commons': 3.0.0 1707 | '@sinonjs/fake-timers': 11.2.2 1708 | '@sinonjs/text-encoding': 0.7.2 1709 | just-extend: 6.2.0 1710 | path-to-regexp: 6.2.1 1711 | dev: true 1712 | 1713 | /node-domexception@1.0.0: 1714 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 1715 | engines: {node: '>=10.5.0'} 1716 | dev: false 1717 | 1718 | /node-fetch@3.3.2: 1719 | resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 1720 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1721 | dependencies: 1722 | data-uri-to-buffer: 4.0.1 1723 | fetch-blob: 3.2.0 1724 | formdata-polyfill: 4.0.10 1725 | dev: false 1726 | 1727 | /nofilter@3.1.0: 1728 | resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} 1729 | engines: {node: '>=12.19'} 1730 | dev: true 1731 | 1732 | /normalize-path@3.0.0: 1733 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1734 | engines: {node: '>=0.10.0'} 1735 | dev: true 1736 | 1737 | /npm-run-path@4.0.1: 1738 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1739 | engines: {node: '>=8'} 1740 | dependencies: 1741 | path-key: 3.1.1 1742 | dev: true 1743 | 1744 | /npm-run-path@5.2.0: 1745 | resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} 1746 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1747 | dependencies: 1748 | path-key: 4.0.0 1749 | dev: true 1750 | 1751 | /object-assign@4.1.1: 1752 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1753 | engines: {node: '>=0.10.0'} 1754 | dev: true 1755 | 1756 | /once@1.4.0: 1757 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1758 | dependencies: 1759 | wrappy: 1.0.2 1760 | dev: true 1761 | 1762 | /onetime@5.1.2: 1763 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1764 | engines: {node: '>=6'} 1765 | dependencies: 1766 | mimic-fn: 2.1.0 1767 | dev: true 1768 | 1769 | /onetime@6.0.0: 1770 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1771 | engines: {node: '>=12'} 1772 | dependencies: 1773 | mimic-fn: 4.0.0 1774 | dev: true 1775 | 1776 | /p-defer@1.0.0: 1777 | resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} 1778 | engines: {node: '>=4'} 1779 | dev: true 1780 | 1781 | /p-event@5.0.1: 1782 | resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} 1783 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1784 | dependencies: 1785 | p-timeout: 5.1.0 1786 | dev: true 1787 | 1788 | /p-limit@4.0.0: 1789 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 1790 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1791 | dependencies: 1792 | yocto-queue: 1.0.0 1793 | dev: true 1794 | 1795 | /p-locate@6.0.0: 1796 | resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} 1797 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1798 | dependencies: 1799 | p-limit: 4.0.0 1800 | dev: true 1801 | 1802 | /p-map@4.0.0: 1803 | resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} 1804 | engines: {node: '>=10'} 1805 | dependencies: 1806 | aggregate-error: 3.1.0 1807 | dev: true 1808 | 1809 | /p-map@5.5.0: 1810 | resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} 1811 | engines: {node: '>=12'} 1812 | dependencies: 1813 | aggregate-error: 4.0.1 1814 | dev: true 1815 | 1816 | /p-timeout@5.1.0: 1817 | resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} 1818 | engines: {node: '>=12'} 1819 | dev: true 1820 | 1821 | /parse-ms@2.1.0: 1822 | resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} 1823 | engines: {node: '>=6'} 1824 | dev: true 1825 | 1826 | /path-exists@5.0.0: 1827 | resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 1828 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1829 | dev: true 1830 | 1831 | /path-is-absolute@1.0.1: 1832 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1833 | engines: {node: '>=0.10.0'} 1834 | dev: true 1835 | 1836 | /path-key@3.1.1: 1837 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1838 | engines: {node: '>=8'} 1839 | dev: true 1840 | 1841 | /path-key@4.0.0: 1842 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1843 | engines: {node: '>=12'} 1844 | dev: true 1845 | 1846 | /path-scurry@1.10.1: 1847 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 1848 | engines: {node: '>=16 || 14 >=14.17'} 1849 | dependencies: 1850 | lru-cache: 10.1.0 1851 | minipass: 7.0.4 1852 | dev: true 1853 | 1854 | /path-to-regexp@6.2.1: 1855 | resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} 1856 | dev: true 1857 | 1858 | /path-type@4.0.0: 1859 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1860 | engines: {node: '>=8'} 1861 | dev: true 1862 | 1863 | /picomatch@2.3.1: 1864 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1865 | engines: {node: '>=8.6'} 1866 | dev: true 1867 | 1868 | /pidtree@0.6.0: 1869 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 1870 | engines: {node: '>=0.10'} 1871 | hasBin: true 1872 | dev: true 1873 | 1874 | /pirates@4.0.6: 1875 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1876 | engines: {node: '>= 6'} 1877 | dev: true 1878 | 1879 | /pkg-conf@4.0.0: 1880 | resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} 1881 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1882 | dependencies: 1883 | find-up: 6.3.0 1884 | load-json-file: 7.0.1 1885 | dev: true 1886 | 1887 | /plur@5.1.0: 1888 | resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} 1889 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1890 | dependencies: 1891 | irregular-plurals: 3.5.0 1892 | dev: true 1893 | 1894 | /postcss-load-config@3.1.4(ts-node@10.9.2): 1895 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1896 | engines: {node: '>= 10'} 1897 | peerDependencies: 1898 | postcss: '>=8.0.9' 1899 | ts-node: '>=9.0.0' 1900 | peerDependenciesMeta: 1901 | postcss: 1902 | optional: true 1903 | ts-node: 1904 | optional: true 1905 | dependencies: 1906 | lilconfig: 2.1.0 1907 | ts-node: 10.9.2(@types/node@17.0.45)(typescript@4.9.5) 1908 | yaml: 1.10.2 1909 | dev: true 1910 | 1911 | /prettier@2.8.8: 1912 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1913 | engines: {node: '>=10.13.0'} 1914 | hasBin: true 1915 | dev: true 1916 | 1917 | /pretty-ms@7.0.1: 1918 | resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} 1919 | engines: {node: '>=10'} 1920 | dependencies: 1921 | parse-ms: 2.1.0 1922 | dev: true 1923 | 1924 | /punycode@2.3.1: 1925 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1926 | engines: {node: '>=6'} 1927 | dev: true 1928 | 1929 | /queue-microtask@1.2.3: 1930 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1931 | dev: true 1932 | 1933 | /readdirp@3.6.0: 1934 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1935 | engines: {node: '>=8.10.0'} 1936 | dependencies: 1937 | picomatch: 2.3.1 1938 | dev: true 1939 | 1940 | /require-directory@2.1.1: 1941 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1942 | engines: {node: '>=0.10.0'} 1943 | dev: true 1944 | 1945 | /resolve-cwd@3.0.0: 1946 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1947 | engines: {node: '>=8'} 1948 | dependencies: 1949 | resolve-from: 5.0.0 1950 | dev: true 1951 | 1952 | /resolve-from@5.0.0: 1953 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1954 | engines: {node: '>=8'} 1955 | dev: true 1956 | 1957 | /resolve-pkg-maps@1.0.0: 1958 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1959 | dev: true 1960 | 1961 | /restore-cursor@4.0.0: 1962 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} 1963 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1964 | dependencies: 1965 | onetime: 5.1.2 1966 | signal-exit: 3.0.7 1967 | dev: true 1968 | 1969 | /reusify@1.0.4: 1970 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1971 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1972 | dev: true 1973 | 1974 | /rfdc@1.3.0: 1975 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 1976 | dev: true 1977 | 1978 | /rimraf@3.0.2: 1979 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1980 | hasBin: true 1981 | dependencies: 1982 | glob: 7.2.3 1983 | dev: true 1984 | 1985 | /rollup@2.79.1: 1986 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 1987 | engines: {node: '>=10.0.0'} 1988 | hasBin: true 1989 | optionalDependencies: 1990 | fsevents: 2.3.3 1991 | dev: true 1992 | 1993 | /run-parallel@1.2.0: 1994 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1995 | dependencies: 1996 | queue-microtask: 1.2.3 1997 | dev: true 1998 | 1999 | /semver@7.5.4: 2000 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2001 | engines: {node: '>=10'} 2002 | hasBin: true 2003 | dependencies: 2004 | lru-cache: 6.0.0 2005 | dev: true 2006 | 2007 | /serialize-error@7.0.1: 2008 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} 2009 | engines: {node: '>=10'} 2010 | dependencies: 2011 | type-fest: 0.13.1 2012 | dev: true 2013 | 2014 | /shebang-command@2.0.0: 2015 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2016 | engines: {node: '>=8'} 2017 | dependencies: 2018 | shebang-regex: 3.0.0 2019 | dev: true 2020 | 2021 | /shebang-regex@3.0.0: 2022 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2023 | engines: {node: '>=8'} 2024 | dev: true 2025 | 2026 | /signal-exit@3.0.7: 2027 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2028 | dev: true 2029 | 2030 | /signal-exit@4.1.0: 2031 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2032 | engines: {node: '>=14'} 2033 | dev: true 2034 | 2035 | /sinon@17.0.1: 2036 | resolution: {integrity: sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==} 2037 | dependencies: 2038 | '@sinonjs/commons': 3.0.0 2039 | '@sinonjs/fake-timers': 11.2.2 2040 | '@sinonjs/samsam': 8.0.0 2041 | diff: 5.1.0 2042 | nise: 5.1.7 2043 | supports-color: 7.2.0 2044 | dev: true 2045 | 2046 | /slash@3.0.0: 2047 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2048 | engines: {node: '>=8'} 2049 | dev: true 2050 | 2051 | /slash@4.0.0: 2052 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 2053 | engines: {node: '>=12'} 2054 | dev: true 2055 | 2056 | /slice-ansi@5.0.0: 2057 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 2058 | engines: {node: '>=12'} 2059 | dependencies: 2060 | ansi-styles: 6.2.1 2061 | is-fullwidth-code-point: 4.0.0 2062 | dev: true 2063 | 2064 | /slice-ansi@7.1.0: 2065 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} 2066 | engines: {node: '>=18'} 2067 | dependencies: 2068 | ansi-styles: 6.2.1 2069 | is-fullwidth-code-point: 5.0.0 2070 | dev: true 2071 | 2072 | /source-map@0.8.0-beta.0: 2073 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 2074 | engines: {node: '>= 8'} 2075 | dependencies: 2076 | whatwg-url: 7.1.0 2077 | dev: true 2078 | 2079 | /spotify-types@1.0.7: 2080 | resolution: {integrity: sha512-X2n0MYNUpgakGDU7h/vzTvqVJh2f8kAWE9SG5TkJtf3lJcorndK24/8/6+D7Uww8tqUD1VPHg5Lqv4usdVJUvg==} 2081 | dev: true 2082 | 2083 | /sprintf-js@1.0.3: 2084 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2085 | dev: true 2086 | 2087 | /stack-utils@2.0.6: 2088 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 2089 | engines: {node: '>=10'} 2090 | dependencies: 2091 | escape-string-regexp: 2.0.0 2092 | dev: true 2093 | 2094 | /string-argv@0.3.2: 2095 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 2096 | engines: {node: '>=0.6.19'} 2097 | dev: true 2098 | 2099 | /string-width@4.2.3: 2100 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2101 | engines: {node: '>=8'} 2102 | dependencies: 2103 | emoji-regex: 8.0.0 2104 | is-fullwidth-code-point: 3.0.0 2105 | strip-ansi: 6.0.1 2106 | dev: true 2107 | 2108 | /string-width@5.1.2: 2109 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2110 | engines: {node: '>=12'} 2111 | dependencies: 2112 | eastasianwidth: 0.2.0 2113 | emoji-regex: 9.2.2 2114 | strip-ansi: 7.1.0 2115 | dev: true 2116 | 2117 | /string-width@7.0.0: 2118 | resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} 2119 | engines: {node: '>=18'} 2120 | dependencies: 2121 | emoji-regex: 10.3.0 2122 | get-east-asian-width: 1.2.0 2123 | strip-ansi: 7.1.0 2124 | dev: true 2125 | 2126 | /strip-ansi@6.0.1: 2127 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2128 | engines: {node: '>=8'} 2129 | dependencies: 2130 | ansi-regex: 5.0.1 2131 | dev: true 2132 | 2133 | /strip-ansi@7.1.0: 2134 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2135 | engines: {node: '>=12'} 2136 | dependencies: 2137 | ansi-regex: 6.0.1 2138 | dev: true 2139 | 2140 | /strip-final-newline@2.0.0: 2141 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2142 | engines: {node: '>=6'} 2143 | dev: true 2144 | 2145 | /strip-final-newline@3.0.0: 2146 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 2147 | engines: {node: '>=12'} 2148 | dev: true 2149 | 2150 | /sucrase@3.35.0: 2151 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2152 | engines: {node: '>=16 || 14 >=14.17'} 2153 | hasBin: true 2154 | dependencies: 2155 | '@jridgewell/gen-mapping': 0.3.3 2156 | commander: 4.1.1 2157 | glob: 10.3.10 2158 | lines-and-columns: 1.2.4 2159 | mz: 2.7.0 2160 | pirates: 4.0.6 2161 | ts-interface-checker: 0.1.13 2162 | dev: true 2163 | 2164 | /supertap@3.0.1: 2165 | resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} 2166 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2167 | dependencies: 2168 | indent-string: 5.0.0 2169 | js-yaml: 3.14.1 2170 | serialize-error: 7.0.1 2171 | strip-ansi: 7.1.0 2172 | dev: true 2173 | 2174 | /supports-color@7.2.0: 2175 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2176 | engines: {node: '>=8'} 2177 | dependencies: 2178 | has-flag: 4.0.0 2179 | dev: true 2180 | 2181 | /temp-dir@2.0.0: 2182 | resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} 2183 | engines: {node: '>=8'} 2184 | dev: true 2185 | 2186 | /thenify-all@1.6.0: 2187 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2188 | engines: {node: '>=0.8'} 2189 | dependencies: 2190 | thenify: 3.3.1 2191 | dev: true 2192 | 2193 | /thenify@3.3.1: 2194 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2195 | dependencies: 2196 | any-promise: 1.3.0 2197 | dev: true 2198 | 2199 | /time-zone@1.0.0: 2200 | resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} 2201 | engines: {node: '>=4'} 2202 | dev: true 2203 | 2204 | /to-regex-range@5.0.1: 2205 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2206 | engines: {node: '>=8.0'} 2207 | dependencies: 2208 | is-number: 7.0.0 2209 | dev: true 2210 | 2211 | /tr46@1.0.1: 2212 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 2213 | dependencies: 2214 | punycode: 2.3.1 2215 | dev: true 2216 | 2217 | /tree-kill@1.2.2: 2218 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 2219 | hasBin: true 2220 | dev: true 2221 | 2222 | /ts-interface-checker@0.1.13: 2223 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2224 | dev: true 2225 | 2226 | /ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5): 2227 | resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 2228 | hasBin: true 2229 | peerDependencies: 2230 | '@swc/core': '>=1.2.50' 2231 | '@swc/wasm': '>=1.2.50' 2232 | '@types/node': '*' 2233 | typescript: '>=2.7' 2234 | peerDependenciesMeta: 2235 | '@swc/core': 2236 | optional: true 2237 | '@swc/wasm': 2238 | optional: true 2239 | dependencies: 2240 | '@cspotcode/source-map-support': 0.8.1 2241 | '@tsconfig/node10': 1.0.9 2242 | '@tsconfig/node12': 1.0.11 2243 | '@tsconfig/node14': 1.0.3 2244 | '@tsconfig/node16': 1.0.4 2245 | '@types/node': 17.0.45 2246 | acorn: 8.11.3 2247 | acorn-walk: 8.3.1 2248 | arg: 4.1.3 2249 | create-require: 1.1.1 2250 | diff: 4.0.2 2251 | make-error: 1.3.6 2252 | typescript: 4.9.5 2253 | v8-compile-cache-lib: 3.0.1 2254 | yn: 3.1.1 2255 | dev: true 2256 | 2257 | /tsup@5.12.9(ts-node@10.9.2)(typescript@4.9.5): 2258 | resolution: {integrity: sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg==} 2259 | hasBin: true 2260 | peerDependencies: 2261 | '@swc/core': ^1 2262 | postcss: ^8.4.12 2263 | typescript: ^4.1.0 2264 | peerDependenciesMeta: 2265 | '@swc/core': 2266 | optional: true 2267 | postcss: 2268 | optional: true 2269 | typescript: 2270 | optional: true 2271 | dependencies: 2272 | bundle-require: 3.1.2(esbuild@0.14.54) 2273 | cac: 6.7.14 2274 | chokidar: 3.5.3 2275 | debug: 4.3.4 2276 | esbuild: 0.14.54 2277 | execa: 5.1.1 2278 | globby: 11.1.0 2279 | joycon: 3.1.1 2280 | postcss-load-config: 3.1.4(ts-node@10.9.2) 2281 | resolve-from: 5.0.0 2282 | rollup: 2.79.1 2283 | source-map: 0.8.0-beta.0 2284 | sucrase: 3.35.0 2285 | tree-kill: 1.2.2 2286 | typescript: 4.9.5 2287 | transitivePeerDependencies: 2288 | - supports-color 2289 | - ts-node 2290 | dev: true 2291 | 2292 | /tsx@4.7.0: 2293 | resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} 2294 | engines: {node: '>=18.0.0'} 2295 | hasBin: true 2296 | dependencies: 2297 | esbuild: 0.19.11 2298 | get-tsconfig: 4.7.2 2299 | optionalDependencies: 2300 | fsevents: 2.3.3 2301 | dev: true 2302 | 2303 | /type-detect@4.0.8: 2304 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2305 | engines: {node: '>=4'} 2306 | dev: true 2307 | 2308 | /type-fest@0.13.1: 2309 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2310 | engines: {node: '>=10'} 2311 | dev: true 2312 | 2313 | /type-fest@3.13.1: 2314 | resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} 2315 | engines: {node: '>=14.16'} 2316 | dev: true 2317 | 2318 | /typescript@4.9.5: 2319 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 2320 | engines: {node: '>=4.2.0'} 2321 | hasBin: true 2322 | dev: true 2323 | 2324 | /v8-compile-cache-lib@3.0.1: 2325 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 2326 | dev: true 2327 | 2328 | /web-streams-polyfill@3.3.2: 2329 | resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} 2330 | engines: {node: '>= 8'} 2331 | dev: false 2332 | 2333 | /webidl-conversions@4.0.2: 2334 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 2335 | dev: true 2336 | 2337 | /well-known-symbols@2.0.0: 2338 | resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} 2339 | engines: {node: '>=6'} 2340 | dev: true 2341 | 2342 | /whatwg-url@7.1.0: 2343 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 2344 | dependencies: 2345 | lodash.sortby: 4.7.0 2346 | tr46: 1.0.1 2347 | webidl-conversions: 4.0.2 2348 | dev: true 2349 | 2350 | /which@2.0.2: 2351 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2352 | engines: {node: '>= 8'} 2353 | hasBin: true 2354 | dependencies: 2355 | isexe: 2.0.0 2356 | dev: true 2357 | 2358 | /wrap-ansi@7.0.0: 2359 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2360 | engines: {node: '>=10'} 2361 | dependencies: 2362 | ansi-styles: 4.3.0 2363 | string-width: 4.2.3 2364 | strip-ansi: 6.0.1 2365 | dev: true 2366 | 2367 | /wrap-ansi@8.1.0: 2368 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 2369 | engines: {node: '>=12'} 2370 | dependencies: 2371 | ansi-styles: 6.2.1 2372 | string-width: 5.1.2 2373 | strip-ansi: 7.1.0 2374 | dev: true 2375 | 2376 | /wrap-ansi@9.0.0: 2377 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 2378 | engines: {node: '>=18'} 2379 | dependencies: 2380 | ansi-styles: 6.2.1 2381 | string-width: 7.0.0 2382 | strip-ansi: 7.1.0 2383 | dev: true 2384 | 2385 | /wrappy@1.0.2: 2386 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2387 | dev: true 2388 | 2389 | /write-file-atomic@4.0.2: 2390 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} 2391 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 2392 | dependencies: 2393 | imurmurhash: 0.1.4 2394 | signal-exit: 3.0.7 2395 | dev: true 2396 | 2397 | /y18n@5.0.8: 2398 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2399 | engines: {node: '>=10'} 2400 | dev: true 2401 | 2402 | /yallist@4.0.0: 2403 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2404 | dev: true 2405 | 2406 | /yaml@1.10.2: 2407 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2408 | engines: {node: '>= 6'} 2409 | dev: true 2410 | 2411 | /yaml@2.3.4: 2412 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 2413 | engines: {node: '>= 14'} 2414 | dev: true 2415 | 2416 | /yargs-parser@21.1.1: 2417 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2418 | engines: {node: '>=12'} 2419 | dev: true 2420 | 2421 | /yargs@17.7.2: 2422 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 2423 | engines: {node: '>=12'} 2424 | dependencies: 2425 | cliui: 8.0.1 2426 | escalade: 3.1.1 2427 | get-caller-file: 2.0.5 2428 | require-directory: 2.1.1 2429 | string-width: 4.2.3 2430 | y18n: 5.0.8 2431 | yargs-parser: 21.1.1 2432 | dev: true 2433 | 2434 | /yn@3.1.1: 2435 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 2436 | engines: {node: '>=6'} 2437 | dev: true 2438 | 2439 | /yocto-queue@1.0.0: 2440 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 2441 | engines: {node: '>=12.20'} 2442 | dev: true 2443 | --------------------------------------------------------------------------------