├── .eslintignore ├── .husky └── pre-commit ├── .gitignore ├── cypress.json ├── .vscode └── settings.json ├── cypress ├── cypress.d.ts ├── fixtures │ └── example.json ├── plugins │ └── index.js └── support │ ├── index.js │ └── commands.js ├── tsconfig.typings.json ├── index.html ├── src ├── server.ts ├── create-update-throttler.ts ├── bounds.ts ├── create-update-throttler.test.tsx ├── types.ts ├── create-global-observer.ts ├── create-global-observer.test.tsx ├── index.test.tsx └── index.ts ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── main.yml ├── tsconfig.json ├── vite.config.ts ├── LICENSE ├── CONTRIBUTING.MD ├── browser-tests ├── helper.ts └── main.test.tsx ├── example ├── index.css └── index.tsx ├── package.json ├── README.md └── pnpm-lock.yaml /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | cache 3 | build 4 | dist 5 | cypress -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn precommit -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | .DS_Store 3 | node_modules 4 | .cache 5 | dist 6 | cypress/videos 7 | coverage -------------------------------------------------------------------------------- /cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": { 3 | "componentFolder": "browser-tests", 4 | "testFiles": "**/*.test.{ts,tsx}" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2, 3 | "editor.formatOnSave": true, 4 | "typescript.reportStyleChecksAsWarnings": false 5 | } 6 | -------------------------------------------------------------------------------- /cypress/cypress.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module "@cypress/mount-utils" { 4 | export const ROOT_ID: string; 5 | } 6 | -------------------------------------------------------------------------------- /cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src"], 4 | "exclude": ["**/*.test.tsx", "**/*.test.ts"], 5 | "compilerOptions": { 6 | "declaration": true, 7 | "emitDeclarationOnly": true, 8 | "declarationDir": "./dist" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /cypress/plugins/index.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const { startDevServer } = require("@cypress/vite-dev-server"); 3 | 4 | module.exports = (on, config) => { 5 | on("dev-server:start", options => { 6 | return startDevServer({ 7 | options, 8 | viteConfig: { 9 | configFile: path.resolve(__dirname, "..", "..", "vite.config.ts") 10 | } 11 | }); 12 | }); 13 | }; 14 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | solid-boundaries example 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/server.ts: -------------------------------------------------------------------------------- 1 | import { createSignal } from "solid-js"; 2 | import type { TrackBoundsConfig, TrackBoundsProps } from "./types"; 3 | import type { Bounds, BoundsKeys } from "./bounds"; 4 | export type { Bounds, TrackBoundsConfig, TrackBoundsProps, BoundsKeys }; 5 | 6 | export function createBoundaryTracker( 7 | _config: TrackBoundsConfig = {} 8 | ): TrackBoundsProps { 9 | const [element, setElement] = createSignal(null); 10 | const [bounds] = createSignal(null); 11 | 12 | return { 13 | bounds, 14 | ref: setElement, 15 | element 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: "@typescript-eslint/parser", 3 | parserOptions: { 4 | ecmaVersion: 2020, 5 | sourceType: "module" 6 | }, 7 | extends: [ 8 | "prettier", 9 | "plugin:@typescript-eslint/recommended", 10 | "plugin:prettier/recommended" 11 | ], 12 | rules: { 13 | "@typescript-eslint/no-redeclare": "off", 14 | "@typescript-eslint/no-non-null-assertion": "off", 15 | "@typescript-eslint/no-unused-vars": "off", 16 | "@typescript-eslint/consistent-type-imports": "error", 17 | "@typescript-eslint/no-explicit-any": "error" 18 | }, 19 | plugins: ["import"], 20 | overrides: [ 21 | 22 | ] 23 | }; 24 | -------------------------------------------------------------------------------- /cypress/support/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands' 18 | 19 | // Alternatively you can use CommonJS syntax: 20 | // require('./commands') 21 | -------------------------------------------------------------------------------- /src/create-update-throttler.ts: -------------------------------------------------------------------------------- 1 | import { onCleanup } from "solid-js"; 2 | 3 | type Callback = () => void; 4 | 5 | /** 6 | * Utility that ensures that a task is not called more often 7 | * than once per frame. 8 | */ 9 | export function createUpdateThrottler() { 10 | let cancelled = false, 11 | isUpdating = false, 12 | latestCallBack: Callback | null = null; 13 | 14 | const updater = async (callback: Callback) => { 15 | latestCallBack = callback; 16 | if (isUpdating || cancelled) { 17 | return; 18 | } 19 | 20 | isUpdating = true; 21 | await Promise.resolve(); 22 | 23 | if (!cancelled) { 24 | isUpdating = false; 25 | latestCallBack(); 26 | latestCallBack = null; 27 | } 28 | }; 29 | 30 | onCleanup(() => (cancelled = true)); 31 | 32 | return updater; 33 | } 34 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Browser / OS (please complete the following information):** 27 | - OS: [e.g. windows] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Additional context** 32 | Add any other context about the problem here. 33 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE]" 5 | labels: feature 6 | assignees: "" 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **(Optional) Do you want to work on this feature?** 19 | Do you already have ideas / strategies how to solve the problem? Does it impact the API? In which way? 20 | 21 | **Additional context** 22 | Add any other context or screenshots about the feature request here. 23 | -------------------------------------------------------------------------------- /src/bounds.ts: -------------------------------------------------------------------------------- 1 | export interface Bounds { 2 | top: number; 3 | left: number; 4 | bottom: number; 5 | right: number; 6 | width: number; 7 | height: number; 8 | } 9 | 10 | export type BoundsKeys = Array; 11 | 12 | export const allKeys = [ 13 | "bottom", 14 | "height", 15 | "left", 16 | "right", 17 | "top", 18 | "width" 19 | ] as BoundsKeys; 20 | 21 | /** 22 | * Check if two bounds are equal. 23 | */ 24 | export function equals( 25 | a: Bounds, 26 | b: Bounds | null, 27 | keys: BoundsKeys = allKeys 28 | ) { 29 | return b && keys.every(key => a[key] === b[key]); 30 | } 31 | 32 | /** 33 | * Creates bounds from an element. 34 | */ 35 | export const boundsFromElement = (element: HTMLElement): Bounds => { 36 | const domRect = element.getBoundingClientRect(); 37 | const bounds = Object.fromEntries( 38 | allKeys.map(key => [key, domRect[key]]) 39 | ) as unknown as Bounds; 40 | return bounds; 41 | }; 42 | -------------------------------------------------------------------------------- /cypress/support/commands.js: -------------------------------------------------------------------------------- 1 | // *********************************************** 2 | // This example commands.js shows you how to 3 | // create various custom commands and overwrite 4 | // existing commands. 5 | // 6 | // For more comprehensive examples of custom 7 | // commands please read more here: 8 | // https://on.cypress.io/custom-commands 9 | // *********************************************** 10 | // 11 | // 12 | // -- This is a parent command -- 13 | // Cypress.Commands.add('login', (email, password) => { ... }) 14 | // 15 | // 16 | // -- This is a child command -- 17 | // Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) 18 | // 19 | // 20 | // -- This is a dual command -- 21 | // Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) 22 | // 23 | // 24 | // -- This will overwrite an existing command -- 25 | // Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src", "types", "browser-tests", "cypress"], 3 | "compilerOptions": { 4 | "allowJs": false, 5 | "allowSyntheticDefaultImports": true, 6 | "alwaysStrict": true, 7 | "checkJs": false, 8 | "declaration": true, 9 | "stripInternal": true, 10 | "downlevelIteration": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "importHelpers": true, 13 | "isolatedModules": true, 14 | "moduleResolution": "Node", 15 | "noUnusedParameters": true, 16 | "noUnusedLocals": true, 17 | "skipLibCheck": true, 18 | "strict": true, 19 | "esModuleInterop": true, 20 | "module": "esnext", 21 | "lib": ["dom", "esnext"], 22 | "types": ["cypress", "./cypress/cypress"], 23 | "sourceMap": true, 24 | // "rootDir": "./src", 25 | "noImplicitReturns": true, 26 | "noFallthroughCasesInSwitch": true, 27 | "jsx": "preserve", 28 | "jsxImportSource": "solid-js" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: [push, pull_request] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | name: Lint, test, and build 7 | 8 | steps: 9 | - name: Checkout repo 10 | uses: actions/checkout@v2 11 | 12 | - name: Cache pnpm modules 13 | uses: actions/cache@v2 14 | with: 15 | path: ~/.pnpm-store 16 | key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} 17 | restore-keys: | 18 | ${{ runner.os }}- 19 | 20 | - name: Install deps and build (with cache) 21 | uses: pnpm/action-setup@v2.1.0 22 | with: 23 | version: 6 24 | run_install: | 25 | args: [--frozen-lockfile] 26 | 27 | - name: Lint 28 | run: pnpm lint 29 | 30 | - name: Typecheck 31 | run: pnpm typecheck 32 | 33 | - name: Integration test 34 | run: pnpm test 35 | 36 | - name: Browser test 37 | run: pnpm test:browser:ci 38 | 39 | - name: Build 40 | run: pnpm build 41 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { defineConfig } from "vite"; 4 | import solidPlugin from "vite-plugin-solid"; 5 | import path from "path"; 6 | 7 | export default defineConfig({ 8 | plugins: [solidPlugin()], 9 | build: { 10 | lib: { 11 | formats: ["cjs", "es"], 12 | entry: path.resolve(__dirname, "src/index.ts") 13 | }, 14 | rollupOptions: { 15 | treeshake: true, 16 | external: ["solid-js"], 17 | input: { 18 | index: path.resolve(__dirname, "src/index.ts"), 19 | server: path.resolve(__dirname, "src/server.ts") 20 | }, 21 | output: { 22 | entryFileNames: () => "[name].[format].js" 23 | } 24 | } 25 | }, 26 | test: { 27 | dir: "./src", 28 | environment: "jsdom", 29 | globals: false, 30 | transformMode: { 31 | web: [/\.tsx?$/] 32 | }, 33 | deps: { 34 | inline: [/solid-js/] 35 | }, 36 | threads: true, 37 | isolate: true 38 | }, 39 | 40 | resolve: { 41 | conditions: ["development", "browser"] 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Erik Verweij 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. -------------------------------------------------------------------------------- /src/create-update-throttler.test.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot } from "solid-js"; 2 | import { describe, it, fn, expect } from "vitest"; 3 | import { createUpdateThrottler } from "./create-update-throttler"; 4 | 5 | const nextTick = () => new Promise(resolve => setTimeout(resolve, 1000 / 60)); 6 | 7 | describe("createUpdateThrottler", () => { 8 | it("ensures that a task is not performed more than once per frame and only the last task remains", () => 9 | createRoot(async dispose => { 10 | const updater = createUpdateThrottler(); 11 | 12 | let returnValue = "foo"; 13 | const mock = fn().mockImplementation(() => returnValue); 14 | updater(mock); 15 | updater(mock); 16 | returnValue = "bar"; 17 | updater(mock); 18 | 19 | await nextTick(); 20 | 21 | expect(mock).toHaveBeenCalledTimes(1); 22 | expect(mock).toHaveLastReturnedWith("bar"); 23 | 24 | dispose(); 25 | })); 26 | 27 | it("ensures that a task is not performed after cleanup", () => 28 | createRoot(async dispose => { 29 | const updater = createUpdateThrottler(); 30 | 31 | const mock = fn(); 32 | updater(mock); 33 | 34 | dispose(); 35 | 36 | await nextTick(); 37 | 38 | expect(mock).not.toHaveBeenCalled(); 39 | })); 40 | }); 41 | -------------------------------------------------------------------------------- /CONTRIBUTING.MD: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## General 4 | 5 | ### Bugs 6 | 7 | Open issues can be found on the GitHub [issues](https://github.com/everweij/solid-boundaries/labels/bug) page with a "Bug" label. 8 | 9 | These are a great place to start contributing to the repo! 10 | 11 | Once you start work on a bug, post your intent on the issue itself. This will prevent more than one person working on it at once. 12 | 13 | If the bug you want to work on doesn't have a related issue, open one, and attach the "Bug" label. 14 | 15 | ### New features 16 | 17 | Before adding any features, open a [Feature Proposal](https://github.com/everweij/solid-boundaries/issues/new/choose). 18 | 19 | This will let us talk through your proposal before you spend time on it. 20 | 21 | `solid-boundaries` is a low-level building block which also makes it flexible. Keep this in mind when proposing a new feature -> does this benefit all of us, or is the feature a more specific use-case? 22 | 23 | ### Documentation 24 | 25 | If a PR introduces or changes API, please make sure to update the relevant docs (readme) or examples (storybook) as well. 26 | 27 | ## Development 28 | 29 | ### Getting started 30 | 31 | In order to get started with your PR: 32 | 33 | 1. Fork the solid-boundaries repo 34 | 2. Clone york fork locally 35 | 3. run `pnpm install` (make sure you have `pnpm` installed on your machine) 36 | 4. See the scripts-section of the `package.json` of the project for a list of available commands 37 | 5. Add your code and supporting tests 38 | 6. If this is a feature that requires doc changes, make as necessary. 39 | 7. You're ready! 40 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import type { Accessor, Setter } from "solid-js"; 2 | import type { BoundsKeys, Bounds } from "./bounds"; 3 | 4 | export type TrackBoundsProps = { 5 | /** 6 | * Setter which should be passed to the `ref` prop of the 7 | * element you want to track. 8 | */ 9 | ref: Setter; 10 | /** 11 | * The bounds of the element you are tracking. 12 | * Note: returns `null` if the element is not connected 13 | * to the DOM. 14 | */ 15 | bounds: Accessor; 16 | /** 17 | * Provides a reference to the element. 18 | */ 19 | element: Accessor; 20 | }; 21 | 22 | export interface TrackBoundsConfig { 23 | /** 24 | * Whether to actively track the element's position. 25 | * @default () => true 26 | */ 27 | enabled?: Accessor; 28 | /** 29 | * Whether to actively track mutations in the DOM. 30 | * @default () => true 31 | */ 32 | trackMutations?: boolean; 33 | /** 34 | * Whether to actively track resizes of the element you're 35 | * tracking or of the entire window. 36 | * @default () => true 37 | */ 38 | trackResize?: boolean; 39 | /** 40 | * Whether to actively track scrolling. 41 | * @default () => true 42 | */ 43 | trackScroll?: boolean; 44 | /** 45 | * Defines specific keys of the boundary to track. 46 | * By default all keys are tracked. 47 | * @default ["top", "right", "bottom", "left", "width", "height"] 48 | */ 49 | keys?: BoundsKeys; 50 | /** 51 | * Whether not to show warning messages in the console 52 | */ 53 | suppressWarnings?: boolean; 54 | } 55 | -------------------------------------------------------------------------------- /src/create-global-observer.ts: -------------------------------------------------------------------------------- 1 | import { batch } from "solid-js"; 2 | 3 | type Callback = (payload: Payload) => void; 4 | export type UnregisterFn = () => void; 5 | export type RegisterFn = (callback: Callback) => UnregisterFn; 6 | 7 | /** 8 | * Creates a global observer which forwards events to one or 9 | * multiple listeners. If there are no listeners, nothing 10 | * will be observed. 11 | */ 12 | export function createGlobalObserver(props: { 13 | init: (handler: Callback) => T; 14 | connect: (subject: T) => void; 15 | disconnect: (subject: T) => void; 16 | }): RegisterFn; 17 | export function createGlobalObserver(props: { 18 | connect: (callback: Callback) => void; 19 | disconnect: (callback: Callback) => void; 20 | }): RegisterFn; 21 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 22 | export function createGlobalObserver(props: any): any { 23 | const callbacks: Set> = new Set(); 24 | 25 | const handler: Callback = payload => { 26 | batch(() => { 27 | for (const callback of callbacks) { 28 | callback(payload); 29 | } 30 | }); 31 | }; 32 | 33 | const subject = props.init?.(handler); 34 | 35 | return function register(callback: Callback) { 36 | if (callbacks.size === 0) { 37 | props.connect(subject ?? handler); 38 | } 39 | 40 | callbacks.add(callback); 41 | 42 | function unregister() { 43 | callbacks.delete(callback); 44 | 45 | if (callbacks.size === 0) { 46 | props.disconnect(subject ?? handler); 47 | } 48 | } 49 | 50 | return unregister; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /browser-tests/helper.ts: -------------------------------------------------------------------------------- 1 | import { ROOT_ID } from "@cypress/mount-utils"; 2 | import { createEffect, onCleanup } from "solid-js"; 3 | import { render as _render } from "solid-js/web"; 4 | import type { Accessor, JSXElement } from "solid-js"; 5 | import type { Bounds } from "../src/bounds"; 6 | import { allKeys, boundsFromElement } from "../src/bounds"; 7 | 8 | export let unmount: null | (() => void) = null; 9 | 10 | export function render(code: () => JSXElement) { 11 | const _unmount = _render(code, document.getElementById(ROOT_ID)!); 12 | 13 | unmount = () => { 14 | _unmount(); 15 | unmount = null; 16 | }; 17 | 18 | return unmount; 19 | } 20 | 21 | const boundsMap: Map = new Map(); 22 | 23 | export function storeBounds(id: string, bounds: Accessor) { 24 | createEffect(() => { 25 | boundsMap.set(id, bounds()); 26 | }); 27 | onCleanup(() => boundsMap.delete(id)); 28 | } 29 | 30 | function isSet(value: T | null | undefined): value is T { 31 | return value === null || value === undefined ? false : true; 32 | } 33 | 34 | const MAX_RETRIES = 4; 35 | 36 | export function checkBounds(description?: string) { 37 | cy.log(`Checking bounds ${description}`); 38 | for (const id of boundsMap.keys()) { 39 | cy.get(`#${id}`).then(subject => { 40 | return new Cypress.Promise((resolve, reject) => { 41 | let attempt = 0; 42 | const actualBounds = boundsFromElement(subject[0]); 43 | 44 | function check() { 45 | attempt++; 46 | const trackedBounds = boundsMap.get(id); 47 | 48 | const boundsAreEqual = 49 | isSet(trackedBounds) && 50 | isSet(actualBounds) && 51 | allKeys.every(key => actualBounds[key] === trackedBounds[key]); 52 | 53 | if (boundsAreEqual) { 54 | resolve(); 55 | return; 56 | } 57 | 58 | if (attempt <= MAX_RETRIES) { 59 | const frame = 1000 / 60; 60 | setTimeout(check, frame); 61 | return; 62 | } 63 | 64 | reject( 65 | new Error( 66 | `Bounds mismatch on id ${id}.${ 67 | description ? `\nDescription: "${description}"` : "" 68 | }\nExpected:\n${JSON.stringify( 69 | trackedBounds 70 | )}\nActual:\n${JSON.stringify(actualBounds)}` 71 | ) 72 | ); 73 | } 74 | 75 | check(); 76 | }); 77 | }); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/create-global-observer.test.tsx: -------------------------------------------------------------------------------- 1 | import { createEffect, createRoot, onCleanup } from "solid-js"; 2 | import { describe, it, fn, expect, beforeEach } from "vitest"; 3 | import type { RegisterFn } from "./create-global-observer"; 4 | import { createGlobalObserver } from "./create-global-observer"; 5 | 6 | const nextTick = () => new Promise(resolve => setTimeout(resolve, 1000 / 60)); 7 | 8 | class MockObserver { 9 | observedItems: T[] = []; 10 | constructor(private handler: (items: T[]) => void) {} 11 | 12 | observe(item: T) { 13 | this.observedItems.push(item); 14 | } 15 | 16 | disconnect() { 17 | this.observedItems = []; 18 | } 19 | 20 | trigger() { 21 | if (this.observedItems.length) { 22 | this.handler(this.observedItems); 23 | } 24 | } 25 | } 26 | 27 | const item = {}; 28 | type Item = typeof item; 29 | 30 | describe("createGlobalObserver", () => { 31 | let register: RegisterFn; 32 | let subject: MockObserver; 33 | 34 | beforeEach(() => { 35 | register = createGlobalObserver>({ 36 | init: handler => { 37 | subject = new MockObserver(handler); 38 | return subject; 39 | }, 40 | connect: subject => subject.observe(item), 41 | disconnect: subject => subject.disconnect() 42 | }); 43 | }); 44 | 45 | it("lets you register a callback and immediately starts listening to the subject", () => { 46 | const callback = fn(); 47 | 48 | return createRoot(async dispose => { 49 | createEffect(() => register(callback)); 50 | 51 | await nextTick(); 52 | 53 | subject.trigger(); 54 | 55 | expect(callback).toHaveBeenCalled(); 56 | dispose(); 57 | }); 58 | }); 59 | 60 | it("does not observe anything when no handlers have been registered yet", () => { 61 | expect(subject.observedItems).toEqual([]); 62 | }); 63 | 64 | it("unregisters the callback on cleanup", () => { 65 | const callback = fn(); 66 | 67 | return createRoot(async dispose => { 68 | createEffect(() => onCleanup(register(callback))); 69 | 70 | await nextTick(); 71 | 72 | dispose(); 73 | subject.trigger(); 74 | 75 | expect(callback).not.toHaveBeenCalled(); 76 | expect(subject.observedItems).toEqual([]); 77 | }); 78 | }); 79 | 80 | it("calls multiple callbacks", () => { 81 | const callback1 = fn(); 82 | const callback2 = fn(); 83 | 84 | return createRoot(async dispose => { 85 | createEffect(() => onCleanup(register(callback1))); 86 | createEffect(() => onCleanup(register(callback2))); 87 | 88 | await nextTick(); 89 | 90 | subject.trigger(); 91 | 92 | expect(callback1).toHaveBeenCalled(); 93 | expect(callback2).toHaveBeenCalled(); 94 | 95 | dispose(); 96 | }); 97 | }); 98 | }); 99 | -------------------------------------------------------------------------------- /example/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --scroll-background: #a7f3d0; 3 | --body-background: #6ee7b7; 4 | --header-color: #16a34a; 5 | --primary: #047857; 6 | } 7 | 8 | body { 9 | margin: 0; 10 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 11 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 12 | sans-serif; 13 | -webkit-font-smoothing: antialiased; 14 | -moz-osx-font-smoothing: grayscale; 15 | background-color: var(--body-background); 16 | } 17 | 18 | code, 19 | .menu-bounds { 20 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 21 | monospace; 22 | } 23 | 24 | .container { 25 | width: 100vw; 26 | height: 100vh; 27 | max-height: 1000px; 28 | display: grid; 29 | grid-template-rows: 1fr auto 10vh; 30 | justify-content: center; 31 | } 32 | 33 | header { 34 | margin-top: 48px; 35 | margin-bottom: 48px; 36 | display: flex; 37 | flex-direction: column; 38 | align-items: center; 39 | } 40 | 41 | a { 42 | color: var(--primary); 43 | text-decoration-color: var(--primary); 44 | } 45 | 46 | h1 { 47 | font-weight: 900; 48 | font-size: 42px; 49 | text-shadow: 1px 1px 10px rgba(0, 0, 0, 0.1); 50 | } 51 | 52 | p { 53 | color: var(--primary); 54 | } 55 | 56 | button { 57 | background-color: var(--primary); 58 | border: 0; 59 | display: flex; 60 | width: 100px; 61 | height: 48px; 62 | justify-content: center; 63 | align-items: center; 64 | color: white; 65 | font-size: 16px; 66 | font-weight: 700; 67 | border-radius: 5px; 68 | cursor: pointer; 69 | transition: width 0.5s, height 0.5s; 70 | } 71 | 72 | button:hover { 73 | background-color: #064e3b; 74 | } 75 | 76 | button.large { 77 | width: 240px; 78 | height: 100px; 79 | } 80 | 81 | .filler { 82 | height: 100vh; 83 | } 84 | 85 | .scroll-box { 86 | background-color: var(--scroll-background); 87 | width: min(80vw, 800px); 88 | overflow: auto; 89 | border-radius: 4px; 90 | } 91 | 92 | .scroll-box .inner { 93 | width: 300vw; 94 | height: 300vh; 95 | display: flex; 96 | justify-content: center; 97 | align-items: center; 98 | } 99 | 100 | .menu { 101 | position: fixed; 102 | top: 0; 103 | left: 0; 104 | background-color: white; 105 | display: flex; 106 | justify-content: center; 107 | align-items: center; 108 | border-radius: 4px; 109 | box-shadow: 3px 4px 15px rgba(0, 0, 0, 0.15); 110 | width: 200px; 111 | height: 200px; 112 | cursor: pointer; 113 | will-change: transform, top, left; 114 | } 115 | 116 | .menu-title { 117 | font-weight: bold; 118 | margin-bottom: 4px; 119 | } 120 | 121 | .menu-bounds { 122 | font-size: 14px; 123 | color: #333; 124 | } 125 | 126 | .menu-bounds > .data { 127 | display: flex; 128 | width: 150px; 129 | justify-content: space-between; 130 | } 131 | -------------------------------------------------------------------------------- /src/index.test.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot, createSignal } from "solid-js"; 2 | import { describe, it, fn, expect, beforeEach, vi } from "vitest"; 3 | 4 | const nextTick = () => new Promise(resolve => setTimeout(resolve, 1000 / 60)); 5 | 6 | const getBoundingClientRect = fn().mockImplementation(() => { 7 | return { 8 | width: 0, 9 | top: 0, 10 | left: 0, 11 | bottom: 0, 12 | right: 0, 13 | height: 0 14 | }; 15 | }); 16 | 17 | const fakeElement = { 18 | getBoundingClientRect 19 | } as unknown as HTMLElement; 20 | 21 | beforeEach(() => { 22 | getBoundingClientRect.mockClear(); 23 | }); 24 | 25 | class MockResizeObserver { 26 | static handler: ResizeObserverCallback; 27 | static trigger() { 28 | this.handler(null!, null!); 29 | } 30 | 31 | constructor(handler: ResizeObserverCallback) { 32 | MockResizeObserver.handler = handler; 33 | } 34 | 35 | observe() { 36 | return; 37 | } 38 | 39 | disconnect() { 40 | return; 41 | } 42 | 43 | unobserve() { 44 | return; 45 | } 46 | } 47 | 48 | class MockMutationObserver { 49 | static handler: MutationCallback; 50 | static trigger(payload: MutationRecord[]) { 51 | this.handler?.(payload, null!); 52 | } 53 | 54 | constructor(handler: MutationCallback) { 55 | MockMutationObserver.handler = handler; 56 | } 57 | 58 | observe() { 59 | return; 60 | } 61 | 62 | disconnect() { 63 | return; 64 | } 65 | 66 | unobserve() { 67 | return; 68 | } 69 | 70 | takeRecords() { 71 | return null!; 72 | } 73 | } 74 | 75 | vi.stubGlobal("ResizeObserver", MockResizeObserver); 76 | vi.stubGlobal("MutationObserver", MockMutationObserver); 77 | 78 | import { trackBounds } from "."; 79 | 80 | function fakeElementConnectedMutation() { 81 | const addedMutation = { 82 | addedNodes: [fakeElement] 83 | } as unknown as MutationRecord; 84 | MockMutationObserver.trigger([addedMutation]); 85 | } 86 | 87 | describe("trackBounds", () => { 88 | it("it does not do anything untill the element is connected to the DOM", () => { 89 | return createRoot(async dispose => { 90 | const tracker = trackBounds(); 91 | tracker.ref(fakeElement); 92 | await nextTick(); 93 | 94 | expect(tracker.bounds()).toEqual(null); 95 | expect(fakeElement.getBoundingClientRect).not.toHaveBeenCalled(); 96 | 97 | dispose(); 98 | }); 99 | }); 100 | 101 | it("provides the bounds once the element is connected to the DOM", () => { 102 | return createRoot(async dispose => { 103 | const tracker = trackBounds(); 104 | tracker.ref(fakeElement); 105 | await nextTick(); 106 | 107 | fakeElementConnectedMutation(); 108 | 109 | await nextTick(); 110 | expect(tracker.bounds()).not.toBeNull(); 111 | 112 | dispose(); 113 | }); 114 | }); 115 | 116 | it("does nothing when the enabled prop is false", () => { 117 | return createRoot(async dispose => { 118 | const [enabled, setEnabled] = createSignal(false); 119 | 120 | const tracker = trackBounds({ enabled }); 121 | tracker.ref(fakeElement); 122 | await nextTick(); 123 | 124 | fakeElementConnectedMutation(); 125 | 126 | await nextTick(); 127 | expect(tracker.bounds()).toBeNull(); 128 | 129 | setEnabled(true); 130 | 131 | await nextTick(); 132 | expect(tracker.bounds()).not.toBeNull(); 133 | 134 | dispose(); 135 | }); 136 | }); 137 | }); 138 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solid-boundaries", 3 | "description": "A utility to track the bounds of html-elements in solid-js", 4 | "info": "This small library exposes a small reactive primitive which tracks the size and position (bounds) of a specific html-element (subject). This is useful for all kinds of things, like building tooltips, popovers, or other behavior and interactions related to changes regarding size and positions. Bounds update in response to: scrolling (the entire window as well as nested scroll-containers), resizing (the entire window as well as the subject) and mutations in the document.", 5 | "keywords": [ 6 | "solidhack", 7 | "best_ecosystem", 8 | "measure", 9 | "solid", 10 | "js", 11 | "solid-js", 12 | "size", 13 | "position", 14 | "resize", 15 | "bounds" 16 | ], 17 | "version": "2.0.0", 18 | "author": "Erik Verweij", 19 | "contributors": [ 20 | { 21 | "name": "Erik Verweij", 22 | "email": "info@erikverweij.com", 23 | "url": "http://www.erikverweij.dev" 24 | } 25 | ], 26 | "repository": { 27 | "type": "git", 28 | "url": "https://github.com/everweij/solid-boundaries" 29 | }, 30 | "homepage": "https://7j26ix.sse.codesandbox.io/", 31 | "files": [ 32 | "dist" 33 | ], 34 | "license": "MIT", 35 | "main": "dist/index.cjs.js", 36 | "typings": "dist/index.d.ts", 37 | "module": "dist/index.es.js", 38 | "sideEffects": false, 39 | "exports": { 40 | "node": { 41 | "import": "./dist/server.es.js", 42 | "require": "./dist/server.cjs.js" 43 | }, 44 | "import": "./dist/index.es.js", 45 | "require": "./dist/index.cjs.js" 46 | }, 47 | "size-limit": [ 48 | { 49 | "path": "dist/solid-boundaries.cjs.js", 50 | "limit": "10 KB" 51 | }, 52 | { 53 | "path": "dist/solid-boundaries.es.js", 54 | "limit": "10 KB" 55 | } 56 | ], 57 | "prettier": { 58 | "printWidth": 80, 59 | "semi": true, 60 | "singleQuote": false, 61 | "tabWidth": 2, 62 | "trailingComma": "none", 63 | "arrowParens": "avoid" 64 | }, 65 | "scripts": { 66 | "start": "vite", 67 | "prepare": "husky install", 68 | "prepublish": "npm run build", 69 | "lint": "eslint '**/*.{ts,tsx}' -c .eslintrc.js --quiet --fix", 70 | "build": "vite build && tsc -p tsconfig.typings.json", 71 | "typecheck": "tsc --noEmit", 72 | "precommit": "npm run typecheck && npm run lint", 73 | "size": "size-limit", 74 | "test": "vitest", 75 | "test:browser": "cypress open-ct", 76 | "test:browser:ci": "cypress run-ct" 77 | }, 78 | "peerDependencies": { 79 | "solid-js": ">=1.0.0" 80 | }, 81 | "devDependencies": { 82 | "@cypress/mount-utils": "^1.0.2", 83 | "@cypress/vite-dev-server": "^2.2.2", 84 | "@size-limit/preset-small-lib": "^7.0.8", 85 | "@typescript-eslint/eslint-plugin": "^5.17.0", 86 | "@typescript-eslint/parser": "^5.17.0", 87 | "c8": "^7.11.0", 88 | "cypress": "^9.5.3", 89 | "eslint": "^8.12.0", 90 | "eslint-config-prettier": "^8.5.0", 91 | "eslint-plugin-import": "^2.25.4", 92 | "eslint-plugin-prettier": "^4.0.0", 93 | "husky": "^7.0.4", 94 | "jsdom": "^19.0.0", 95 | "motion": "^10.7.0", 96 | "prettier": "^2.6.1", 97 | "size-limit": "^7.0.8", 98 | "solid-js": "^1.3.13", 99 | "solid-testing-library": "^0.3.0", 100 | "tslib": "^2.3.1", 101 | "typescript": "^4.6.3", 102 | "vite": "^2.9.1", 103 | "vite-plugin-solid": "^2.2.6", 104 | "vitest": "^0.8.4" 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /example/index.tsx: -------------------------------------------------------------------------------- 1 | import "./index.css"; 2 | import { render } from "solid-js/web"; 3 | import { trackBounds } from "../src"; 4 | import type { Bounds } from "../src"; 5 | import { createSignal, onMount, createEffect } from "solid-js"; 6 | import { animate } from "motion"; 7 | 8 | function BoundInfo(props: { name: string; value: number }) { 9 | let ref!: HTMLSpanElement; 10 | 11 | createEffect(prev => { 12 | if (prev && prev !== props.value) { 13 | animate( 14 | ref, 15 | { 16 | backgroundColor: [null, "var(--primary)", "white"], 17 | color: [null, "white", "black"] 18 | }, 19 | { duration: 0.3 } 20 | ); 21 | } 22 | return props.value; 23 | }); 24 | 25 | return ( 26 |
27 | {props.name}:{" "} 28 | {Math.round(props.value)}px 29 |
30 | ); 31 | } 32 | 33 | function BoundsInfo(props: { bounds: Bounds }) { 34 | return ( 35 | 43 | ); 44 | } 45 | 46 | function ButtonWithMenu() { 47 | const [enabled, setEnabled] = createSignal(false); 48 | const [isLarge, setLarge] = createSignal(false); 49 | 50 | const trigger = trackBounds({ 51 | enabled 52 | }); 53 | 54 | const layer = trackBounds({ 55 | enabled, 56 | keys: ["width", "height"] 57 | }); 58 | 59 | const layerPosition = () => { 60 | if (!trigger.bounds() || !layer.bounds()) { 61 | return { top: "0px", left: "0px" }; 62 | } 63 | 64 | const { left, width, bottom } = trigger.bounds()!; 65 | const { width: layerWidth } = layer.bounds()!; 66 | const pos = { 67 | left: left + width / 2 - layerWidth / 2 + "px", 68 | top: bottom + "px" 69 | }; 70 | return { transform: `translate(${pos.left}, ${pos.top})` }; 71 | }; 72 | 73 | return ( 74 | <> 75 | 82 | {enabled() && ( 83 | 94 | )} 95 | 96 | ); 97 | } 98 | 99 | function Example() { 100 | let scrollBox: HTMLDivElement; 101 | 102 | onMount(() => { 103 | const { width: scrollBoxWidth, height: scrollBoxHeight } = 104 | scrollBox.getBoundingClientRect(); 105 | const { width: innerWidh, height: innerHeight } = 106 | scrollBox.children[0].getBoundingClientRect(); 107 | 108 | scrollBox.scrollLeft = innerWidh / 2 - scrollBoxWidth / 2; 109 | scrollBox.scrollTop = innerHeight / 2 - scrollBoxHeight / 2; 110 | }); 111 | 112 | return ( 113 | <> 114 |
115 |
116 | 117 |

solid-boundaries

118 |
119 |

A utility to track the bounds of html-elements in solid-js

120 |

121 | Scroll arround, resize the window or click on the menu to see the 122 | bounds changing... 123 |

124 |
125 |
126 |
127 | 128 |
129 |
130 |
131 |
132 | 133 | ); 134 | } 135 | 136 | render(() => , document.getElementById("root")!); 137 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 |

solid-boundaries

6 | 7 |

8 | Helps you to track the size and position of html-elements in solid-js. 9 |

10 | 11 |
12 | 13 | ## What does it do? 14 | 15 | See it in action [here](https://7j26ix.sse.codesandbox.io/), or see it on [CodeSandbox](https://codesandbox.io/s/solid-boundaries-example-7j26ix?file=/src/main.tsx)! 16 | 17 | This small library exposes a small reactive primitive which tracks the **size** and **position** (_bounds_) of a specific html-element (subject). _Bounds_, just like when you call `.getBoundingClientRect()`, have the following structure: 18 | 19 | ```ts 20 | interface Bounds { 21 | top: number; 22 | left: number; 23 | right: number; 24 | bottom: number; 25 | width: number; 26 | height: number; 27 | } 28 | ``` 29 | 30 | This is useful for all kinds of things, like building tooltips, popovers, or other behavior and interactions related to changes regarding size and positions. 31 | 32 | Bounds update in response to: 33 | 34 | - scrolling - the entire window as well as (nested-)scroll-containers 35 | - resizing - the entire window as well as the subject 36 | - mutations in the document - to be more specific: 37 | - any changes that may affect styling (style/class attributes) 38 | - adding or removal of other html-elements 39 | 40 | ## Install 41 | 42 | ```bash 43 | npm install solid-boundaries 44 | ``` 45 | 46 | ## Usage 47 | 48 | ```tsx 49 | import { trackBounds } from "solid-boundaries"; 50 | 51 | function App() { 52 | const { ref, bounds } = trackBounds(); 53 | 54 | // Make sure to pass the ref properly to the element you 55 | // want to track, and do something with fun with the bounds! 56 | // Note: the bounds are `null` when the element has not been 57 | // connected to the DOM yet. 58 | return ( 59 |
60 | {bounds() && JSON.stringify(bounds())} 61 |
62 | ) 63 | } 64 | ``` 65 | 66 | ## API 67 | 68 | ```tsx 69 | interface Bounds { 70 | top: number; 71 | left: number; 72 | right: number; 73 | bottom: number; 74 | width: number; 75 | height: number; 76 | } 77 | 78 | interface Config { 79 | /** 80 | * Whether to actively track the element's position. 81 | * @default () => true 82 | */ 83 | enabled?: Accessor; 84 | /** 85 | * Whether to actively track mutations in the DOM. 86 | * @default () => true 87 | */ 88 | trackMutations?: boolean; 89 | /** 90 | * Whether to actively track resizes of the element you're 91 | * tracking or of the entire window. 92 | * @default () => true 93 | */ 94 | trackResize?: boolean; 95 | /** 96 | * Whether to actively track scrolling. 97 | * @default () => true 98 | */ 99 | trackScroll?: boolean; 100 | /** 101 | * Defines specific keys of the boundary to track. 102 | * By default all keys are tracked. 103 | * @default ["top", "right", "bottom", "left", "width", "height"] 104 | */ 105 | keys?: BoundsKeys; 106 | /** 107 | * Whether not to show warning messages in the console 108 | */ 109 | suppressWarnings?: boolean; 110 | } 111 | 112 | type TrackBoundsProps = { 113 | /** 114 | * Setter which should be passed to the `ref` prop of the 115 | * element you want to track. 116 | */ 117 | ref: Setter; 118 | /** 119 | * The bounds of the element you are tracking. 120 | * Note: returns `null` if the element is not connected 121 | * to the DOM. 122 | */ 123 | bounds: Accessor; 124 | /** 125 | * Provides a reference to the element. 126 | */ 127 | element: Accessor; 128 | }; 129 | 130 | function trackBounds(config?: Config): TrackBoundsProps; 131 | ``` 132 | 133 | ## Browser compatibility 134 | 135 | This library makes use of `ResizeObserver` and `MutationObserver`. If you need to support older browsers I recommend to use a polyfill, otherwise certain behavior will be skipped. 136 | 137 | ## Contributing 138 | 139 | Want to contribute to solid-boundaries? Your help is very much appreciated! 140 | Please consult the [contribution guide](./CONTRIBUTING.MD) on how to get started. 141 | 142 | ## License 143 | 144 | MIT © [everweij](https://github.com/everweij) 145 | -------------------------------------------------------------------------------- /browser-tests/main.test.tsx: -------------------------------------------------------------------------------- 1 | import type { PropsWithChildren } from "solid-js"; 2 | import { Show, createSignal } from "solid-js"; 3 | import { trackBounds } from "../src"; 4 | import { storeBounds, checkBounds, render, unmount } from "./helper"; 5 | 6 | const Container = (props: PropsWithChildren) => ( 7 |
16 | {props.children} 17 |
18 | ); 19 | 20 | const Scrollable = ( 21 | props: PropsWithChildren<{ 22 | id: string; 23 | color: string; 24 | height: number; 25 | width: number; 26 | }> 27 | ) => ( 28 |
39 |
42 | {props.children} 43 |
44 |
45 | ); 46 | 47 | function Box(props: { 48 | id: string; 49 | color: string; 50 | large?: boolean; 51 | right?: boolean; 52 | }) { 53 | const tracker = trackBounds(); 54 | 55 | storeBounds(props.id, tracker.bounds); 56 | 57 | return ( 58 |
69 | {props.id} 70 |
 71 |         {JSON.stringify(tracker.bounds(), null, 2)}
 72 |       
73 |
74 | ); 75 | } 76 | 77 | function Test() { 78 | const [testMutation, setTestMutation] = createSignal(false); 79 | const [testResize, setTestResize] = createSignal(false); 80 | 81 | return ( 82 | 83 | 89 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | ); 105 | } 106 | 107 | beforeEach(() => { 108 | unmount?.(); 109 | 110 | cy.scrollTo("topLeft"); 111 | cy.get("#scroll-1").scrollTo("topLeft"); 112 | cy.get("#scroll-2").scrollTo("topLeft"); 113 | 114 | render(() => ); 115 | }); 116 | 117 | describe("trackBounds", () => { 118 | it("measures the bounds of the boxes correctly after first mount", () => { 119 | checkBounds(); 120 | }); 121 | 122 | it("measures the bounds of the boxes correctly when a box gets added and removed", () => { 123 | checkBounds("after mount"); 124 | 125 | cy.get("#toggle-mutation").click(); 126 | checkBounds("after adding box 1"); 127 | 128 | cy.get("#toggle-mutation").click(); 129 | checkBounds("after removing box 1"); 130 | }); 131 | 132 | it("measures the bounds of the boxes correctly when a box gets resized", () => { 133 | checkBounds("after mount"); 134 | 135 | cy.get("#toggle-resize").click(); 136 | checkBounds("after making box 2 larger"); 137 | 138 | cy.get("#toggle-resize").click(); 139 | checkBounds("after making box 2 small again"); 140 | }); 141 | 142 | it("measures the bounds of the boxes correctly when a user scrolls", () => { 143 | checkBounds("after mount"); 144 | 145 | cy.scrollTo("center"); 146 | checkBounds("after scrolling body to center"); 147 | 148 | cy.get("#scroll-1").scrollTo("bottom"); 149 | checkBounds("after scrolling first scroll-container to center"); 150 | 151 | cy.get("#scroll-2").scrollTo("bottom"); 152 | checkBounds("after scrolling second scroll-container to center"); 153 | }); 154 | 155 | it("measures the bounds of the boxes correctly the window gets resized", () => { 156 | checkBounds("after mount"); 157 | 158 | cy.viewport(800, 600); 159 | checkBounds("after resizing window to 800x600"); 160 | }); 161 | }); 162 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | createSignal, 3 | createEffect, 4 | onCleanup, 5 | createRenderEffect, 6 | on 7 | } from "solid-js"; 8 | import type { Accessor, Setter } from "solid-js"; 9 | import type { TrackBoundsConfig, TrackBoundsProps } from "./types"; 10 | import type { Bounds, BoundsKeys } from "./bounds"; 11 | import { equals, boundsFromElement } from "./bounds"; 12 | import { createUpdateThrottler } from "./create-update-throttler"; 13 | import { createGlobalObserver } from "./create-global-observer"; 14 | import type { UnregisterFn } from "./create-global-observer"; 15 | export type { Bounds, TrackBoundsProps, TrackBoundsConfig, BoundsKeys }; 16 | 17 | const hasResizeObserver = typeof ResizeObserver !== "undefined"; 18 | const hasMutationObserver = typeof MutationObserver !== "undefined"; 19 | 20 | const registerToMutationEvents = createGlobalObserver< 21 | MutationRecord[], 22 | MutationObserver 23 | >({ 24 | init: callback => new MutationObserver(callback), 25 | connect: subject => 26 | subject.observe(document.body, { 27 | attributeFilter: ["style", "class"], 28 | subtree: true, 29 | childList: true 30 | }), 31 | disconnect: subject => subject.disconnect() 32 | }); 33 | 34 | const registerToScrollEvents = createGlobalObserver({ 35 | connect: callback => 36 | window.addEventListener("scroll", callback, { capture: true }), 37 | disconnect: callback => 38 | window.removeEventListener("scroll", callback, { capture: true }) 39 | }); 40 | 41 | const registerToBodyResizeEvents = createGlobalObserver< 42 | ResizeObserverEntry[], 43 | ResizeObserver 44 | >({ 45 | init: callback => { 46 | let hasTriggeredResize = false; 47 | return new ResizeObserver(entries => { 48 | if (!hasTriggeredResize) hasTriggeredResize = true; 49 | else callback(entries); 50 | }); 51 | }, 52 | connect: subject => subject.observe(document.body), 53 | disconnect: subject => subject.disconnect() 54 | }); 55 | 56 | const listContainsNode = (list: NodeList, element: HTMLElement | null) => { 57 | for (let i = 0; i < list.length; i++) { 58 | if (list[i] === element || list[i].contains(element)) { 59 | return true; 60 | } 61 | } 62 | return false; 63 | }; 64 | 65 | type TrackElementOptions = { 66 | onConnect?: () => void; 67 | onDisconnect?: () => void; 68 | }; 69 | 70 | // Utility function which tracks and allows you to respond to when 71 | // an element is connected / disconnected to the DOM. 72 | function trackElementConnected( 73 | element: Accessor, 74 | opts: TrackElementOptions = {} 75 | ) { 76 | const [isConnected, setConnected] = createSignal(false); 77 | 78 | createRenderEffect(() => { 79 | onCleanup( 80 | registerToMutationEvents(mutations => { 81 | for (const mutation of mutations) { 82 | if (listContainsNode(mutation.addedNodes, element())) { 83 | setConnected(true); 84 | opts.onConnect?.(); 85 | return; 86 | } 87 | if (listContainsNode(mutation.removedNodes, element())) { 88 | setConnected(false); 89 | opts.onDisconnect?.(); 90 | return; 91 | } 92 | } 93 | }) 94 | ); 95 | }); 96 | 97 | return isConnected; 98 | } 99 | 100 | /** 101 | * Reactive primitive which tracks the bounds of a specific html-element 102 | * 103 | * @example 104 | * ```tsx 105 | * function App() { 106 | * const { ref, bounds } = trackBounds(); 107 | * 108 | * return ( 109 | *
110 | * {bounds() && JSON.stringify(bounds())} 111 | *
112 | * ); 113 | * } 114 | * ``` 115 | */ 116 | export function trackBounds({ 117 | enabled = () => true, 118 | keys, 119 | trackMutations = true, 120 | trackResize = true, 121 | trackScroll = true, 122 | suppressWarnings = false 123 | }: TrackBoundsConfig = {}): TrackBoundsProps { 124 | const updater = createUpdateThrottler(); 125 | const [element, setElement] = createSignal(null); 126 | const [_bounds, setBounds] = createSignal(null); 127 | const isConnected = trackElementConnected(element, { 128 | onDisconnect: () => setBounds(null) 129 | }); 130 | 131 | // Checks whether the bounds have actually changed. 132 | // If so, schedule an update. 133 | function calculateBounds() { 134 | const newBounds = boundsFromElement(element()!); 135 | const currentBounds = _bounds(); 136 | if (!equals(newBounds, currentBounds, keys)) { 137 | updater(() => setBounds(newBounds)); 138 | } 139 | } 140 | 141 | createEffect( 142 | on([enabled, isConnected], () => { 143 | // If the element is not connected, or the user has 144 | // not enabled tracking, we don't need to do anything. 145 | if (enabled() && isConnected()) { 146 | calculateBounds(); 147 | 148 | // resize-observer for the local element 149 | let resizeObserver: ResizeObserver | null = null; 150 | if (trackResize && hasResizeObserver) { 151 | let hasTriggeredResize = false; 152 | resizeObserver = new ResizeObserver(() => { 153 | if (!hasTriggeredResize) hasTriggeredResize = true; 154 | else calculateBounds(); 155 | }); 156 | resizeObserver.observe(element()!); 157 | } 158 | 159 | // register for events that can occur somewhere in the DOM 160 | const unregisterers = [ 161 | hasResizeObserver && 162 | trackResize && 163 | registerToBodyResizeEvents(calculateBounds), 164 | hasMutationObserver && 165 | trackMutations && 166 | registerToMutationEvents(calculateBounds), 167 | trackScroll && 168 | registerToScrollEvents(evt => { 169 | if ((evt.target as HTMLElement).contains(element())) { 170 | calculateBounds(); 171 | } 172 | }) 173 | ].filter(Boolean) as UnregisterFn[]; 174 | 175 | onCleanup(() => { 176 | unregisterers.forEach(unregister => unregister()); 177 | resizeObserver?.disconnect(); 178 | }); 179 | } 180 | }) 181 | ); 182 | 183 | // Warning stuff... 184 | let hasCalledRef = false; 185 | let hasWarned = false; 186 | const bounds = suppressWarnings 187 | ? _bounds 188 | : () => { 189 | if (!hasCalledRef && !hasWarned) { 190 | console.warn( 191 | `trackBounds(): you are trying to read the bounds of an element but it seems that you haven't attached the 'ref' properly yet.` 192 | ); 193 | hasWarned = true; 194 | } 195 | 196 | return _bounds(); 197 | }; 198 | 199 | return { 200 | bounds, 201 | ref: (element => { 202 | hasCalledRef = true; 203 | setElement(element); 204 | }) as Setter, 205 | element 206 | }; 207 | } 208 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@cypress/mount-utils': ^1.0.2 5 | '@cypress/vite-dev-server': ^2.2.2 6 | '@size-limit/preset-small-lib': ^7.0.8 7 | '@typescript-eslint/eslint-plugin': ^5.17.0 8 | '@typescript-eslint/parser': ^5.17.0 9 | c8: ^7.11.0 10 | cypress: ^9.5.3 11 | eslint: ^8.12.0 12 | eslint-config-prettier: ^8.5.0 13 | eslint-plugin-import: ^2.25.4 14 | eslint-plugin-prettier: ^4.0.0 15 | husky: ^7.0.4 16 | jsdom: ^19.0.0 17 | motion: ^10.7.0 18 | prettier: ^2.6.1 19 | size-limit: ^7.0.8 20 | solid-js: ^1.3.13 21 | solid-testing-library: ^0.3.0 22 | tslib: ^2.3.1 23 | typescript: ^4.6.3 24 | vite: ^2.9.1 25 | vite-plugin-solid: ^2.2.6 26 | vitest: ^0.8.4 27 | 28 | devDependencies: 29 | '@cypress/mount-utils': 1.0.2 30 | '@cypress/vite-dev-server': 2.2.2_vite@2.9.1 31 | '@size-limit/preset-small-lib': 7.0.8_size-limit@7.0.8 32 | '@typescript-eslint/eslint-plugin': 5.17.0_689ff565753ecf7c3328c07fad067df5 33 | '@typescript-eslint/parser': 5.17.0_eslint@8.12.0+typescript@4.6.3 34 | c8: 7.11.0 35 | cypress: 9.5.3 36 | eslint: 8.12.0 37 | eslint-config-prettier: 8.5.0_eslint@8.12.0 38 | eslint-plugin-import: 2.25.4_eslint@8.12.0 39 | eslint-plugin-prettier: 4.0.0_b253a92c95b42c3296c682f11cccb3bd 40 | husky: 7.0.4 41 | jsdom: 19.0.0 42 | motion: 10.7.0 43 | prettier: 2.6.1 44 | size-limit: 7.0.8 45 | solid-js: 1.3.13 46 | solid-testing-library: 0.3.0_solid-js@1.3.13 47 | tslib: 2.3.1 48 | typescript: 4.6.3 49 | vite: 2.9.1 50 | vite-plugin-solid: 2.2.6 51 | vitest: 0.8.4_c8@7.11.0+jsdom@19.0.0 52 | 53 | packages: 54 | 55 | /@ampproject/remapping/2.1.2: 56 | resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} 57 | engines: {node: '>=6.0.0'} 58 | dependencies: 59 | '@jridgewell/trace-mapping': 0.3.4 60 | dev: true 61 | 62 | /@babel/code-frame/7.16.7: 63 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 64 | engines: {node: '>=6.9.0'} 65 | dependencies: 66 | '@babel/highlight': 7.16.10 67 | dev: true 68 | 69 | /@babel/compat-data/7.17.7: 70 | resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} 71 | engines: {node: '>=6.9.0'} 72 | dev: true 73 | 74 | /@babel/core/7.17.8: 75 | resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} 76 | engines: {node: '>=6.9.0'} 77 | dependencies: 78 | '@ampproject/remapping': 2.1.2 79 | '@babel/code-frame': 7.16.7 80 | '@babel/generator': 7.17.7 81 | '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8 82 | '@babel/helper-module-transforms': 7.17.7 83 | '@babel/helpers': 7.17.8 84 | '@babel/parser': 7.17.8 85 | '@babel/template': 7.16.7 86 | '@babel/traverse': 7.17.3 87 | '@babel/types': 7.17.0 88 | convert-source-map: 1.8.0 89 | debug: 4.3.4 90 | gensync: 1.0.0-beta.2 91 | json5: 2.2.1 92 | semver: 6.3.0 93 | transitivePeerDependencies: 94 | - supports-color 95 | dev: true 96 | 97 | /@babel/generator/7.17.7: 98 | resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} 99 | engines: {node: '>=6.9.0'} 100 | dependencies: 101 | '@babel/types': 7.17.0 102 | jsesc: 2.5.2 103 | source-map: 0.5.7 104 | dev: true 105 | 106 | /@babel/helper-annotate-as-pure/7.16.7: 107 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} 108 | engines: {node: '>=6.9.0'} 109 | dependencies: 110 | '@babel/types': 7.17.0 111 | dev: true 112 | 113 | /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: 114 | resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} 115 | engines: {node: '>=6.9.0'} 116 | peerDependencies: 117 | '@babel/core': ^7.0.0 118 | dependencies: 119 | '@babel/compat-data': 7.17.7 120 | '@babel/core': 7.17.8 121 | '@babel/helper-validator-option': 7.16.7 122 | browserslist: 4.20.2 123 | semver: 6.3.0 124 | dev: true 125 | 126 | /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: 127 | resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} 128 | engines: {node: '>=6.9.0'} 129 | peerDependencies: 130 | '@babel/core': ^7.0.0 131 | dependencies: 132 | '@babel/core': 7.17.8 133 | '@babel/helper-annotate-as-pure': 7.16.7 134 | '@babel/helper-environment-visitor': 7.16.7 135 | '@babel/helper-function-name': 7.16.7 136 | '@babel/helper-member-expression-to-functions': 7.17.7 137 | '@babel/helper-optimise-call-expression': 7.16.7 138 | '@babel/helper-replace-supers': 7.16.7 139 | '@babel/helper-split-export-declaration': 7.16.7 140 | transitivePeerDependencies: 141 | - supports-color 142 | dev: true 143 | 144 | /@babel/helper-environment-visitor/7.16.7: 145 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} 146 | engines: {node: '>=6.9.0'} 147 | dependencies: 148 | '@babel/types': 7.17.0 149 | dev: true 150 | 151 | /@babel/helper-function-name/7.16.7: 152 | resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} 153 | engines: {node: '>=6.9.0'} 154 | dependencies: 155 | '@babel/helper-get-function-arity': 7.16.7 156 | '@babel/template': 7.16.7 157 | '@babel/types': 7.17.0 158 | dev: true 159 | 160 | /@babel/helper-get-function-arity/7.16.7: 161 | resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} 162 | engines: {node: '>=6.9.0'} 163 | dependencies: 164 | '@babel/types': 7.17.0 165 | dev: true 166 | 167 | /@babel/helper-hoist-variables/7.16.7: 168 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} 169 | engines: {node: '>=6.9.0'} 170 | dependencies: 171 | '@babel/types': 7.17.0 172 | dev: true 173 | 174 | /@babel/helper-member-expression-to-functions/7.17.7: 175 | resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} 176 | engines: {node: '>=6.9.0'} 177 | dependencies: 178 | '@babel/types': 7.17.0 179 | dev: true 180 | 181 | /@babel/helper-module-imports/7.16.0: 182 | resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} 183 | engines: {node: '>=6.9.0'} 184 | dependencies: 185 | '@babel/types': 7.17.0 186 | dev: true 187 | 188 | /@babel/helper-module-imports/7.16.7: 189 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} 190 | engines: {node: '>=6.9.0'} 191 | dependencies: 192 | '@babel/types': 7.17.0 193 | dev: true 194 | 195 | /@babel/helper-module-transforms/7.17.7: 196 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} 197 | engines: {node: '>=6.9.0'} 198 | dependencies: 199 | '@babel/helper-environment-visitor': 7.16.7 200 | '@babel/helper-module-imports': 7.16.7 201 | '@babel/helper-simple-access': 7.17.7 202 | '@babel/helper-split-export-declaration': 7.16.7 203 | '@babel/helper-validator-identifier': 7.16.7 204 | '@babel/template': 7.16.7 205 | '@babel/traverse': 7.17.3 206 | '@babel/types': 7.17.0 207 | transitivePeerDependencies: 208 | - supports-color 209 | dev: true 210 | 211 | /@babel/helper-optimise-call-expression/7.16.7: 212 | resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} 213 | engines: {node: '>=6.9.0'} 214 | dependencies: 215 | '@babel/types': 7.17.0 216 | dev: true 217 | 218 | /@babel/helper-plugin-utils/7.16.7: 219 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} 220 | engines: {node: '>=6.9.0'} 221 | dev: true 222 | 223 | /@babel/helper-replace-supers/7.16.7: 224 | resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} 225 | engines: {node: '>=6.9.0'} 226 | dependencies: 227 | '@babel/helper-environment-visitor': 7.16.7 228 | '@babel/helper-member-expression-to-functions': 7.17.7 229 | '@babel/helper-optimise-call-expression': 7.16.7 230 | '@babel/traverse': 7.17.3 231 | '@babel/types': 7.17.0 232 | transitivePeerDependencies: 233 | - supports-color 234 | dev: true 235 | 236 | /@babel/helper-simple-access/7.17.7: 237 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} 238 | engines: {node: '>=6.9.0'} 239 | dependencies: 240 | '@babel/types': 7.17.0 241 | dev: true 242 | 243 | /@babel/helper-split-export-declaration/7.16.7: 244 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} 245 | engines: {node: '>=6.9.0'} 246 | dependencies: 247 | '@babel/types': 7.17.0 248 | dev: true 249 | 250 | /@babel/helper-validator-identifier/7.16.7: 251 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 252 | engines: {node: '>=6.9.0'} 253 | dev: true 254 | 255 | /@babel/helper-validator-option/7.16.7: 256 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} 257 | engines: {node: '>=6.9.0'} 258 | dev: true 259 | 260 | /@babel/helpers/7.17.8: 261 | resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} 262 | engines: {node: '>=6.9.0'} 263 | dependencies: 264 | '@babel/template': 7.16.7 265 | '@babel/traverse': 7.17.3 266 | '@babel/types': 7.17.0 267 | transitivePeerDependencies: 268 | - supports-color 269 | dev: true 270 | 271 | /@babel/highlight/7.16.10: 272 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} 273 | engines: {node: '>=6.9.0'} 274 | dependencies: 275 | '@babel/helper-validator-identifier': 7.16.7 276 | chalk: 2.4.2 277 | js-tokens: 4.0.0 278 | dev: true 279 | 280 | /@babel/parser/7.17.8: 281 | resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} 282 | engines: {node: '>=6.0.0'} 283 | hasBin: true 284 | dev: true 285 | 286 | /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: 287 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} 288 | engines: {node: '>=6.9.0'} 289 | peerDependencies: 290 | '@babel/core': ^7.0.0-0 291 | dependencies: 292 | '@babel/core': 7.17.8 293 | '@babel/helper-plugin-utils': 7.16.7 294 | dev: true 295 | 296 | /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.8: 297 | resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} 298 | engines: {node: '>=6.9.0'} 299 | peerDependencies: 300 | '@babel/core': ^7.0.0-0 301 | dependencies: 302 | '@babel/core': 7.17.8 303 | '@babel/helper-plugin-utils': 7.16.7 304 | dev: true 305 | 306 | /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.8: 307 | resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} 308 | engines: {node: '>=6.9.0'} 309 | peerDependencies: 310 | '@babel/core': ^7.0.0-0 311 | dependencies: 312 | '@babel/core': 7.17.8 313 | '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8 314 | '@babel/helper-plugin-utils': 7.16.7 315 | '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 316 | transitivePeerDependencies: 317 | - supports-color 318 | dev: true 319 | 320 | /@babel/preset-typescript/7.16.7_@babel+core@7.17.8: 321 | resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} 322 | engines: {node: '>=6.9.0'} 323 | peerDependencies: 324 | '@babel/core': ^7.0.0-0 325 | dependencies: 326 | '@babel/core': 7.17.8 327 | '@babel/helper-plugin-utils': 7.16.7 328 | '@babel/helper-validator-option': 7.16.7 329 | '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.8 330 | transitivePeerDependencies: 331 | - supports-color 332 | dev: true 333 | 334 | /@babel/runtime-corejs3/7.17.8: 335 | resolution: {integrity: sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==} 336 | engines: {node: '>=6.9.0'} 337 | dependencies: 338 | core-js-pure: 3.21.1 339 | regenerator-runtime: 0.13.9 340 | dev: true 341 | 342 | /@babel/runtime/7.17.8: 343 | resolution: {integrity: sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==} 344 | engines: {node: '>=6.9.0'} 345 | dependencies: 346 | regenerator-runtime: 0.13.9 347 | dev: true 348 | 349 | /@babel/template/7.16.7: 350 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} 351 | engines: {node: '>=6.9.0'} 352 | dependencies: 353 | '@babel/code-frame': 7.16.7 354 | '@babel/parser': 7.17.8 355 | '@babel/types': 7.17.0 356 | dev: true 357 | 358 | /@babel/traverse/7.17.3: 359 | resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} 360 | engines: {node: '>=6.9.0'} 361 | dependencies: 362 | '@babel/code-frame': 7.16.7 363 | '@babel/generator': 7.17.7 364 | '@babel/helper-environment-visitor': 7.16.7 365 | '@babel/helper-function-name': 7.16.7 366 | '@babel/helper-hoist-variables': 7.16.7 367 | '@babel/helper-split-export-declaration': 7.16.7 368 | '@babel/parser': 7.17.8 369 | '@babel/types': 7.17.0 370 | debug: 4.3.4 371 | globals: 11.12.0 372 | transitivePeerDependencies: 373 | - supports-color 374 | dev: true 375 | 376 | /@babel/types/7.17.0: 377 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} 378 | engines: {node: '>=6.9.0'} 379 | dependencies: 380 | '@babel/helper-validator-identifier': 7.16.7 381 | to-fast-properties: 2.0.0 382 | dev: true 383 | 384 | /@bcoe/v8-coverage/0.2.3: 385 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 386 | dev: true 387 | 388 | /@cypress/mount-utils/1.0.2: 389 | resolution: {integrity: sha512-Fn3fdTiyayHoy8Ol0RSu4MlBH2maQ2ZEXeEVKl/zHHXEQpld5HX3vdNLhK5YLij8cLynA4DxOT/nO9iEnIiOXw==} 390 | dev: true 391 | 392 | /@cypress/request/2.88.10: 393 | resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} 394 | engines: {node: '>= 6'} 395 | dependencies: 396 | aws-sign2: 0.7.0 397 | aws4: 1.11.0 398 | caseless: 0.12.0 399 | combined-stream: 1.0.8 400 | extend: 3.0.2 401 | forever-agent: 0.6.1 402 | form-data: 2.3.3 403 | http-signature: 1.3.6 404 | is-typedarray: 1.0.0 405 | isstream: 0.1.2 406 | json-stringify-safe: 5.0.1 407 | mime-types: 2.1.35 408 | performance-now: 2.1.0 409 | qs: 6.5.3 410 | safe-buffer: 5.1.2 411 | tough-cookie: 2.5.0 412 | tunnel-agent: 0.6.0 413 | uuid: 8.3.2 414 | dev: true 415 | 416 | /@cypress/vite-dev-server/2.2.2_vite@2.9.1: 417 | resolution: {integrity: sha512-02y/Fm0N+CQjKbSjjRtktPgPbp91kOvtc8+WW2l2odIYQkKlG6IOCpmgc898muW0lBAcCszdEIHR/ItdZDiYPw==} 418 | peerDependencies: 419 | vite: '>= 2.1.3' 420 | dependencies: 421 | debug: 4.3.4 422 | get-port: 5.1.1 423 | vite: 2.9.1 424 | transitivePeerDependencies: 425 | - supports-color 426 | dev: true 427 | 428 | /@cypress/xvfb/1.2.4: 429 | resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} 430 | dependencies: 431 | debug: 3.2.7 432 | lodash.once: 4.1.1 433 | dev: true 434 | 435 | /@eslint/eslintrc/1.2.1: 436 | resolution: {integrity: sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==} 437 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 438 | dependencies: 439 | ajv: 6.12.6 440 | debug: 4.3.4 441 | espree: 9.3.1 442 | globals: 13.13.0 443 | ignore: 5.2.0 444 | import-fresh: 3.3.0 445 | js-yaml: 4.1.0 446 | minimatch: 3.1.2 447 | strip-json-comments: 3.1.1 448 | transitivePeerDependencies: 449 | - supports-color 450 | dev: true 451 | 452 | /@humanwhocodes/config-array/0.9.5: 453 | resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} 454 | engines: {node: '>=10.10.0'} 455 | dependencies: 456 | '@humanwhocodes/object-schema': 1.2.1 457 | debug: 4.3.4 458 | minimatch: 3.1.2 459 | transitivePeerDependencies: 460 | - supports-color 461 | dev: true 462 | 463 | /@humanwhocodes/object-schema/1.2.1: 464 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 465 | dev: true 466 | 467 | /@istanbuljs/schema/0.1.3: 468 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 469 | engines: {node: '>=8'} 470 | dev: true 471 | 472 | /@jest/types/26.6.2: 473 | resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} 474 | engines: {node: '>= 10.14.2'} 475 | dependencies: 476 | '@types/istanbul-lib-coverage': 2.0.4 477 | '@types/istanbul-reports': 3.0.1 478 | '@types/node': 17.0.23 479 | '@types/yargs': 15.0.14 480 | chalk: 4.1.2 481 | dev: true 482 | 483 | /@jridgewell/resolve-uri/3.0.5: 484 | resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} 485 | engines: {node: '>=6.0.0'} 486 | dev: true 487 | 488 | /@jridgewell/sourcemap-codec/1.4.11: 489 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} 490 | dev: true 491 | 492 | /@jridgewell/trace-mapping/0.3.4: 493 | resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} 494 | dependencies: 495 | '@jridgewell/resolve-uri': 3.0.5 496 | '@jridgewell/sourcemap-codec': 1.4.11 497 | dev: true 498 | 499 | /@motionone/animation/10.7.0: 500 | resolution: {integrity: sha512-TMsa4i5J6Lhl0CzEJM0umzW/ChTY5tIQ0Xcwi/nqw4OAOnpCoKWb4SDqT8Afx7WZ9+rw1/lZyRbB7ND52ibFPg==} 501 | dependencies: 502 | '@motionone/easing': 10.7.0 503 | '@motionone/types': 10.7.0 504 | '@motionone/utils': 10.7.0 505 | tslib: 2.3.1 506 | dev: true 507 | 508 | /@motionone/dom/10.7.0: 509 | resolution: {integrity: sha512-aPXbpFJJtqeJWXolFDG77YZ+FTnQqQzdkaNvzPAi3H3sWeSGttRJWYprKo1EWcYCDKDGmvptftBC2Xt8EvK2bQ==} 510 | dependencies: 511 | '@motionone/animation': 10.7.0 512 | '@motionone/generators': 10.7.0 513 | '@motionone/types': 10.7.0 514 | '@motionone/utils': 10.7.0 515 | hey-listen: 1.0.8 516 | tslib: 2.3.1 517 | dev: true 518 | 519 | /@motionone/easing/10.7.0: 520 | resolution: {integrity: sha512-FqGcVUel8NnYuXygnJ2KfiIfiySmpXhbTH/0icbRwjqPVVBd5k8+PCCrxJtFYD3LFKBUk2tT3fd01Y/j78+OUw==} 521 | dependencies: 522 | '@motionone/utils': 10.7.0 523 | tslib: 2.3.1 524 | dev: true 525 | 526 | /@motionone/generators/10.7.0: 527 | resolution: {integrity: sha512-l+F5bcszVN3YzMYEKyNE2TKilCe7l4B0BgSyjAvHCs37rXeUoJFv0B+UHAE1NL6iHzQ9s8Z5MUAGqyW/D0ymHQ==} 528 | dependencies: 529 | '@motionone/types': 10.7.0 530 | '@motionone/utils': 10.7.0 531 | tslib: 2.3.1 532 | dev: true 533 | 534 | /@motionone/react/10.7.0: 535 | resolution: {integrity: sha512-9R/eqJQxtXZa92PsG/KOGLerJ+LDXCYRH4CigF23G8J5utMXaFthAP1XBnrRClMvA1rupGlnUhTCVFcEvuqntw==} 536 | peerDependencies: 537 | react: ^17.0.2 538 | react-dom: ^17.0.2 539 | peerDependenciesMeta: 540 | react: 541 | optional: true 542 | react-dom: 543 | optional: true 544 | dependencies: 545 | '@motionone/dom': 10.7.0 546 | hey-listen: 1.0.8 547 | tslib: 2.3.1 548 | dev: true 549 | 550 | /@motionone/svelte/10.7.0: 551 | resolution: {integrity: sha512-P8CD03GF0Ce8Xo/MjsmoIoiFHOi7NTUfDYb16s3tIYgzEgT0yxrRdaBh/e5tElMgIZsG5BlSfxCvxo4z3tNJMA==} 552 | dependencies: 553 | '@motionone/dom': 10.7.0 554 | tslib: 2.3.1 555 | dev: true 556 | 557 | /@motionone/types/10.7.0: 558 | resolution: {integrity: sha512-Sb29czMqFj0GckrbfWlrp9/DjaO+mOdORFGqQ7jNCV4pqx/jKHZsRTX7cZrjLPAQJrfEQu02dMcMHZOhsCiBBA==} 559 | dev: true 560 | 561 | /@motionone/utils/10.7.0: 562 | resolution: {integrity: sha512-p8hAaIYE1JmaeduHhunjLUPFFWk+7MskCLcFTuJGTLVKWkWC6lLjswVV/Himkg2IHOqnbSRgqHb8y3jpIoPuMQ==} 563 | dependencies: 564 | '@motionone/types': 10.7.0 565 | hey-listen: 1.0.8 566 | tslib: 2.3.1 567 | dev: true 568 | 569 | /@motionone/vue/10.7.0: 570 | resolution: {integrity: sha512-28Ip/hR8GLBieNiZ4IcmSrBHEPY6UiSp4+iidpOlG5GTLLWXxl7Pzqhbe6i9BTNpEY9yc2AdplQ6LEe/yxaPqQ==} 571 | dependencies: 572 | '@motionone/dom': 10.7.0 573 | tslib: 2.3.1 574 | dev: true 575 | 576 | /@nodelib/fs.scandir/2.1.5: 577 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 578 | engines: {node: '>= 8'} 579 | dependencies: 580 | '@nodelib/fs.stat': 2.0.5 581 | run-parallel: 1.2.0 582 | dev: true 583 | 584 | /@nodelib/fs.stat/2.0.5: 585 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 586 | engines: {node: '>= 8'} 587 | dev: true 588 | 589 | /@nodelib/fs.walk/1.2.8: 590 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 591 | engines: {node: '>= 8'} 592 | dependencies: 593 | '@nodelib/fs.scandir': 2.1.5 594 | fastq: 1.13.0 595 | dev: true 596 | 597 | /@size-limit/esbuild/7.0.8_size-limit@7.0.8: 598 | resolution: {integrity: sha512-AzCrxJJThDvHrBNoolebYVgXu46c6HuS3fOxoXr3V0YWNM0qz81z5F3j7RruzboZnls8ZgME4WrH6GM5rB9gtA==} 599 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 600 | peerDependencies: 601 | size-limit: 7.0.8 602 | dependencies: 603 | esbuild: 0.14.29 604 | nanoid: 3.3.2 605 | size-limit: 7.0.8 606 | dev: true 607 | 608 | /@size-limit/file/7.0.8_size-limit@7.0.8: 609 | resolution: {integrity: sha512-1KeFQuMXIXAH/iELqIX7x+YNYDFvzIvmxcp9PrdwEoSNL0dXdaDIo9WE/yz8xvOmUcKaLfqbWkL75DM0k91WHQ==} 610 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 611 | peerDependencies: 612 | size-limit: 7.0.8 613 | dependencies: 614 | semver: 7.3.5 615 | size-limit: 7.0.8 616 | dev: true 617 | 618 | /@size-limit/preset-small-lib/7.0.8_size-limit@7.0.8: 619 | resolution: {integrity: sha512-CT8nIYA/c2CSD+X4rAUgwqYccQMahJ6rBnaZxvi3YKFdkXIbuGNXHNjHsYaFksgwG9P4UjG/unyO5L73f3zQBw==} 620 | peerDependencies: 621 | size-limit: 7.0.8 622 | dependencies: 623 | '@size-limit/esbuild': 7.0.8_size-limit@7.0.8 624 | '@size-limit/file': 7.0.8_size-limit@7.0.8 625 | size-limit: 7.0.8 626 | dev: true 627 | 628 | /@testing-library/dom/7.31.2: 629 | resolution: {integrity: sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==} 630 | engines: {node: '>=10'} 631 | dependencies: 632 | '@babel/code-frame': 7.16.7 633 | '@babel/runtime': 7.17.8 634 | '@types/aria-query': 4.2.2 635 | aria-query: 4.2.2 636 | chalk: 4.1.2 637 | dom-accessibility-api: 0.5.13 638 | lz-string: 1.4.4 639 | pretty-format: 26.6.2 640 | dev: true 641 | 642 | /@tootallnate/once/2.0.0: 643 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} 644 | engines: {node: '>= 10'} 645 | dev: true 646 | 647 | /@types/aria-query/4.2.2: 648 | resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} 649 | dev: true 650 | 651 | /@types/chai-subset/1.3.3: 652 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 653 | dependencies: 654 | '@types/chai': 4.3.0 655 | dev: true 656 | 657 | /@types/chai/4.3.0: 658 | resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==} 659 | dev: true 660 | 661 | /@types/istanbul-lib-coverage/2.0.4: 662 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 663 | dev: true 664 | 665 | /@types/istanbul-lib-report/3.0.0: 666 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 667 | dependencies: 668 | '@types/istanbul-lib-coverage': 2.0.4 669 | dev: true 670 | 671 | /@types/istanbul-reports/3.0.1: 672 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 673 | dependencies: 674 | '@types/istanbul-lib-report': 3.0.0 675 | dev: true 676 | 677 | /@types/json-schema/7.0.11: 678 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 679 | dev: true 680 | 681 | /@types/json5/0.0.29: 682 | resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} 683 | dev: true 684 | 685 | /@types/node/14.18.12: 686 | resolution: {integrity: sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==} 687 | dev: true 688 | 689 | /@types/node/17.0.23: 690 | resolution: {integrity: sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==} 691 | dev: true 692 | 693 | /@types/sinonjs__fake-timers/8.1.1: 694 | resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} 695 | dev: true 696 | 697 | /@types/sizzle/2.3.3: 698 | resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} 699 | dev: true 700 | 701 | /@types/yargs-parser/21.0.0: 702 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 703 | dev: true 704 | 705 | /@types/yargs/15.0.14: 706 | resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} 707 | dependencies: 708 | '@types/yargs-parser': 21.0.0 709 | dev: true 710 | 711 | /@types/yauzl/2.9.2: 712 | resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} 713 | requiresBuild: true 714 | dependencies: 715 | '@types/node': 17.0.23 716 | dev: true 717 | optional: true 718 | 719 | /@typescript-eslint/eslint-plugin/5.17.0_689ff565753ecf7c3328c07fad067df5: 720 | resolution: {integrity: sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ==} 721 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 722 | peerDependencies: 723 | '@typescript-eslint/parser': ^5.0.0 724 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 725 | typescript: '*' 726 | peerDependenciesMeta: 727 | typescript: 728 | optional: true 729 | dependencies: 730 | '@typescript-eslint/parser': 5.17.0_eslint@8.12.0+typescript@4.6.3 731 | '@typescript-eslint/scope-manager': 5.17.0 732 | '@typescript-eslint/type-utils': 5.17.0_eslint@8.12.0+typescript@4.6.3 733 | '@typescript-eslint/utils': 5.17.0_eslint@8.12.0+typescript@4.6.3 734 | debug: 4.3.4 735 | eslint: 8.12.0 736 | functional-red-black-tree: 1.0.1 737 | ignore: 5.2.0 738 | regexpp: 3.2.0 739 | semver: 7.3.5 740 | tsutils: 3.21.0_typescript@4.6.3 741 | typescript: 4.6.3 742 | transitivePeerDependencies: 743 | - supports-color 744 | dev: true 745 | 746 | /@typescript-eslint/parser/5.17.0_eslint@8.12.0+typescript@4.6.3: 747 | resolution: {integrity: sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig==} 748 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 749 | peerDependencies: 750 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 751 | typescript: '*' 752 | peerDependenciesMeta: 753 | typescript: 754 | optional: true 755 | dependencies: 756 | '@typescript-eslint/scope-manager': 5.17.0 757 | '@typescript-eslint/types': 5.17.0 758 | '@typescript-eslint/typescript-estree': 5.17.0_typescript@4.6.3 759 | debug: 4.3.4 760 | eslint: 8.12.0 761 | typescript: 4.6.3 762 | transitivePeerDependencies: 763 | - supports-color 764 | dev: true 765 | 766 | /@typescript-eslint/scope-manager/5.17.0: 767 | resolution: {integrity: sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==} 768 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 769 | dependencies: 770 | '@typescript-eslint/types': 5.17.0 771 | '@typescript-eslint/visitor-keys': 5.17.0 772 | dev: true 773 | 774 | /@typescript-eslint/type-utils/5.17.0_eslint@8.12.0+typescript@4.6.3: 775 | resolution: {integrity: sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg==} 776 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 777 | peerDependencies: 778 | eslint: '*' 779 | typescript: '*' 780 | peerDependenciesMeta: 781 | typescript: 782 | optional: true 783 | dependencies: 784 | '@typescript-eslint/utils': 5.17.0_eslint@8.12.0+typescript@4.6.3 785 | debug: 4.3.4 786 | eslint: 8.12.0 787 | tsutils: 3.21.0_typescript@4.6.3 788 | typescript: 4.6.3 789 | transitivePeerDependencies: 790 | - supports-color 791 | dev: true 792 | 793 | /@typescript-eslint/types/5.17.0: 794 | resolution: {integrity: sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==} 795 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 796 | dev: true 797 | 798 | /@typescript-eslint/typescript-estree/5.17.0_typescript@4.6.3: 799 | resolution: {integrity: sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==} 800 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 801 | peerDependencies: 802 | typescript: '*' 803 | peerDependenciesMeta: 804 | typescript: 805 | optional: true 806 | dependencies: 807 | '@typescript-eslint/types': 5.17.0 808 | '@typescript-eslint/visitor-keys': 5.17.0 809 | debug: 4.3.4 810 | globby: 11.1.0 811 | is-glob: 4.0.3 812 | semver: 7.3.5 813 | tsutils: 3.21.0_typescript@4.6.3 814 | typescript: 4.6.3 815 | transitivePeerDependencies: 816 | - supports-color 817 | dev: true 818 | 819 | /@typescript-eslint/utils/5.17.0_eslint@8.12.0+typescript@4.6.3: 820 | resolution: {integrity: sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==} 821 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 822 | peerDependencies: 823 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 824 | dependencies: 825 | '@types/json-schema': 7.0.11 826 | '@typescript-eslint/scope-manager': 5.17.0 827 | '@typescript-eslint/types': 5.17.0 828 | '@typescript-eslint/typescript-estree': 5.17.0_typescript@4.6.3 829 | eslint: 8.12.0 830 | eslint-scope: 5.1.1 831 | eslint-utils: 3.0.0_eslint@8.12.0 832 | transitivePeerDependencies: 833 | - supports-color 834 | - typescript 835 | dev: true 836 | 837 | /@typescript-eslint/visitor-keys/5.17.0: 838 | resolution: {integrity: sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==} 839 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 840 | dependencies: 841 | '@typescript-eslint/types': 5.17.0 842 | eslint-visitor-keys: 3.3.0 843 | dev: true 844 | 845 | /abab/2.0.5: 846 | resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} 847 | dev: true 848 | 849 | /acorn-globals/6.0.0: 850 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 851 | dependencies: 852 | acorn: 7.4.1 853 | acorn-walk: 7.2.0 854 | dev: true 855 | 856 | /acorn-jsx/5.3.2_acorn@8.7.0: 857 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 858 | peerDependencies: 859 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 860 | dependencies: 861 | acorn: 8.7.0 862 | dev: true 863 | 864 | /acorn-walk/7.2.0: 865 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 866 | engines: {node: '>=0.4.0'} 867 | dev: true 868 | 869 | /acorn/7.4.1: 870 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 871 | engines: {node: '>=0.4.0'} 872 | hasBin: true 873 | dev: true 874 | 875 | /acorn/8.7.0: 876 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 877 | engines: {node: '>=0.4.0'} 878 | hasBin: true 879 | dev: true 880 | 881 | /agent-base/6.0.2: 882 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 883 | engines: {node: '>= 6.0.0'} 884 | dependencies: 885 | debug: 4.3.4 886 | transitivePeerDependencies: 887 | - supports-color 888 | dev: true 889 | 890 | /aggregate-error/3.1.0: 891 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 892 | engines: {node: '>=8'} 893 | dependencies: 894 | clean-stack: 2.2.0 895 | indent-string: 4.0.0 896 | dev: true 897 | 898 | /ajv/6.12.6: 899 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 900 | dependencies: 901 | fast-deep-equal: 3.1.3 902 | fast-json-stable-stringify: 2.1.0 903 | json-schema-traverse: 0.4.1 904 | uri-js: 4.4.1 905 | dev: true 906 | 907 | /ansi-colors/4.1.1: 908 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 909 | engines: {node: '>=6'} 910 | dev: true 911 | 912 | /ansi-escapes/4.3.2: 913 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 914 | engines: {node: '>=8'} 915 | dependencies: 916 | type-fest: 0.21.3 917 | dev: true 918 | 919 | /ansi-regex/5.0.1: 920 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 921 | engines: {node: '>=8'} 922 | dev: true 923 | 924 | /ansi-styles/3.2.1: 925 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 926 | engines: {node: '>=4'} 927 | dependencies: 928 | color-convert: 1.9.3 929 | dev: true 930 | 931 | /ansi-styles/4.3.0: 932 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 933 | engines: {node: '>=8'} 934 | dependencies: 935 | color-convert: 2.0.1 936 | dev: true 937 | 938 | /anymatch/3.1.2: 939 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 940 | engines: {node: '>= 8'} 941 | dependencies: 942 | normalize-path: 3.0.0 943 | picomatch: 2.3.1 944 | dev: true 945 | 946 | /arch/2.2.0: 947 | resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} 948 | dev: true 949 | 950 | /argparse/2.0.1: 951 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 952 | dev: true 953 | 954 | /aria-query/4.2.2: 955 | resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} 956 | engines: {node: '>=6.0'} 957 | dependencies: 958 | '@babel/runtime': 7.17.8 959 | '@babel/runtime-corejs3': 7.17.8 960 | dev: true 961 | 962 | /array-includes/3.1.4: 963 | resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} 964 | engines: {node: '>= 0.4'} 965 | dependencies: 966 | call-bind: 1.0.2 967 | define-properties: 1.1.3 968 | es-abstract: 1.19.2 969 | get-intrinsic: 1.1.1 970 | is-string: 1.0.7 971 | dev: true 972 | 973 | /array-union/2.1.0: 974 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 975 | engines: {node: '>=8'} 976 | dev: true 977 | 978 | /array.prototype.flat/1.2.5: 979 | resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} 980 | engines: {node: '>= 0.4'} 981 | dependencies: 982 | call-bind: 1.0.2 983 | define-properties: 1.1.3 984 | es-abstract: 1.19.2 985 | dev: true 986 | 987 | /asn1/0.2.6: 988 | resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} 989 | dependencies: 990 | safer-buffer: 2.1.2 991 | dev: true 992 | 993 | /assert-plus/1.0.0: 994 | resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} 995 | engines: {node: '>=0.8'} 996 | dev: true 997 | 998 | /assertion-error/1.1.0: 999 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 1000 | dev: true 1001 | 1002 | /astral-regex/2.0.0: 1003 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 1004 | engines: {node: '>=8'} 1005 | dev: true 1006 | 1007 | /async/3.2.3: 1008 | resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} 1009 | dev: true 1010 | 1011 | /asynckit/0.4.0: 1012 | resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} 1013 | dev: true 1014 | 1015 | /at-least-node/1.0.0: 1016 | resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} 1017 | engines: {node: '>= 4.0.0'} 1018 | dev: true 1019 | 1020 | /aws-sign2/0.7.0: 1021 | resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=} 1022 | dev: true 1023 | 1024 | /aws4/1.11.0: 1025 | resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} 1026 | dev: true 1027 | 1028 | /babel-plugin-jsx-dom-expressions/0.32.11_@babel+core@7.17.8: 1029 | resolution: {integrity: sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==} 1030 | dependencies: 1031 | '@babel/helper-module-imports': 7.16.0 1032 | '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 1033 | '@babel/types': 7.17.0 1034 | html-entities: 2.3.2 1035 | transitivePeerDependencies: 1036 | - '@babel/core' 1037 | dev: true 1038 | 1039 | /babel-preset-solid/1.3.13_@babel+core@7.17.8: 1040 | resolution: {integrity: sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==} 1041 | dependencies: 1042 | babel-plugin-jsx-dom-expressions: 0.32.11_@babel+core@7.17.8 1043 | transitivePeerDependencies: 1044 | - '@babel/core' 1045 | dev: true 1046 | 1047 | /balanced-match/1.0.2: 1048 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1049 | dev: true 1050 | 1051 | /base64-js/1.5.1: 1052 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1053 | dev: true 1054 | 1055 | /bcrypt-pbkdf/1.0.2: 1056 | resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=} 1057 | dependencies: 1058 | tweetnacl: 0.14.5 1059 | dev: true 1060 | 1061 | /binary-extensions/2.2.0: 1062 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1063 | engines: {node: '>=8'} 1064 | dev: true 1065 | 1066 | /blob-util/2.0.2: 1067 | resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} 1068 | dev: true 1069 | 1070 | /bluebird/3.7.2: 1071 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 1072 | dev: true 1073 | 1074 | /brace-expansion/1.1.11: 1075 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1076 | dependencies: 1077 | balanced-match: 1.0.2 1078 | concat-map: 0.0.1 1079 | dev: true 1080 | 1081 | /braces/3.0.2: 1082 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1083 | engines: {node: '>=8'} 1084 | dependencies: 1085 | fill-range: 7.0.1 1086 | dev: true 1087 | 1088 | /browser-process-hrtime/1.0.0: 1089 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 1090 | dev: true 1091 | 1092 | /browserslist/4.20.2: 1093 | resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} 1094 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1095 | hasBin: true 1096 | dependencies: 1097 | caniuse-lite: 1.0.30001323 1098 | electron-to-chromium: 1.4.103 1099 | escalade: 3.1.1 1100 | node-releases: 2.0.2 1101 | picocolors: 1.0.0 1102 | dev: true 1103 | 1104 | /buffer-crc32/0.2.13: 1105 | resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} 1106 | dev: true 1107 | 1108 | /buffer/5.7.1: 1109 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 1110 | dependencies: 1111 | base64-js: 1.5.1 1112 | ieee754: 1.2.1 1113 | dev: true 1114 | 1115 | /bytes-iec/3.1.1: 1116 | resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} 1117 | engines: {node: '>= 0.8'} 1118 | dev: true 1119 | 1120 | /c8/7.11.0: 1121 | resolution: {integrity: sha512-XqPyj1uvlHMr+Y1IeRndC2X5P7iJzJlEJwBpCdBbq2JocXOgJfr+JVfJkyNMGROke5LfKrhSFXGFXnwnRJAUJw==} 1122 | engines: {node: '>=10.12.0'} 1123 | hasBin: true 1124 | dependencies: 1125 | '@bcoe/v8-coverage': 0.2.3 1126 | '@istanbuljs/schema': 0.1.3 1127 | find-up: 5.0.0 1128 | foreground-child: 2.0.0 1129 | istanbul-lib-coverage: 3.2.0 1130 | istanbul-lib-report: 3.0.0 1131 | istanbul-reports: 3.1.4 1132 | rimraf: 3.0.2 1133 | test-exclude: 6.0.0 1134 | v8-to-istanbul: 8.1.1 1135 | yargs: 16.2.0 1136 | yargs-parser: 20.2.9 1137 | dev: true 1138 | 1139 | /cachedir/2.3.0: 1140 | resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} 1141 | engines: {node: '>=6'} 1142 | dev: true 1143 | 1144 | /call-bind/1.0.2: 1145 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1146 | dependencies: 1147 | function-bind: 1.1.1 1148 | get-intrinsic: 1.1.1 1149 | dev: true 1150 | 1151 | /callsites/3.1.0: 1152 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1153 | engines: {node: '>=6'} 1154 | dev: true 1155 | 1156 | /caniuse-lite/1.0.30001323: 1157 | resolution: {integrity: sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==} 1158 | dev: true 1159 | 1160 | /caseless/0.12.0: 1161 | resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} 1162 | dev: true 1163 | 1164 | /chai/4.3.6: 1165 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 1166 | engines: {node: '>=4'} 1167 | dependencies: 1168 | assertion-error: 1.1.0 1169 | check-error: 1.0.2 1170 | deep-eql: 3.0.1 1171 | get-func-name: 2.0.0 1172 | loupe: 2.3.4 1173 | pathval: 1.1.1 1174 | type-detect: 4.0.8 1175 | dev: true 1176 | 1177 | /chalk/2.4.2: 1178 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1179 | engines: {node: '>=4'} 1180 | dependencies: 1181 | ansi-styles: 3.2.1 1182 | escape-string-regexp: 1.0.5 1183 | supports-color: 5.5.0 1184 | dev: true 1185 | 1186 | /chalk/4.1.2: 1187 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1188 | engines: {node: '>=10'} 1189 | dependencies: 1190 | ansi-styles: 4.3.0 1191 | supports-color: 7.2.0 1192 | dev: true 1193 | 1194 | /check-error/1.0.2: 1195 | resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} 1196 | dev: true 1197 | 1198 | /check-more-types/2.24.0: 1199 | resolution: {integrity: sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=} 1200 | engines: {node: '>= 0.8.0'} 1201 | dev: true 1202 | 1203 | /chokidar/3.5.3: 1204 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1205 | engines: {node: '>= 8.10.0'} 1206 | dependencies: 1207 | anymatch: 3.1.2 1208 | braces: 3.0.2 1209 | glob-parent: 5.1.2 1210 | is-binary-path: 2.1.0 1211 | is-glob: 4.0.3 1212 | normalize-path: 3.0.0 1213 | readdirp: 3.6.0 1214 | optionalDependencies: 1215 | fsevents: 2.3.2 1216 | dev: true 1217 | 1218 | /ci-info/3.3.0: 1219 | resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} 1220 | dev: true 1221 | 1222 | /ci-job-number/1.2.2: 1223 | resolution: {integrity: sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA==} 1224 | dev: true 1225 | 1226 | /clean-stack/2.2.0: 1227 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 1228 | engines: {node: '>=6'} 1229 | dev: true 1230 | 1231 | /cli-cursor/3.1.0: 1232 | resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} 1233 | engines: {node: '>=8'} 1234 | dependencies: 1235 | restore-cursor: 3.1.0 1236 | dev: true 1237 | 1238 | /cli-table3/0.6.1: 1239 | resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==} 1240 | engines: {node: 10.* || >= 12.*} 1241 | dependencies: 1242 | string-width: 4.2.3 1243 | optionalDependencies: 1244 | colors: 1.4.0 1245 | dev: true 1246 | 1247 | /cli-truncate/2.1.0: 1248 | resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} 1249 | engines: {node: '>=8'} 1250 | dependencies: 1251 | slice-ansi: 3.0.0 1252 | string-width: 4.2.3 1253 | dev: true 1254 | 1255 | /cliui/7.0.4: 1256 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1257 | dependencies: 1258 | string-width: 4.2.3 1259 | strip-ansi: 6.0.1 1260 | wrap-ansi: 7.0.0 1261 | dev: true 1262 | 1263 | /color-convert/1.9.3: 1264 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1265 | dependencies: 1266 | color-name: 1.1.3 1267 | dev: true 1268 | 1269 | /color-convert/2.0.1: 1270 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1271 | engines: {node: '>=7.0.0'} 1272 | dependencies: 1273 | color-name: 1.1.4 1274 | dev: true 1275 | 1276 | /color-name/1.1.3: 1277 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1278 | dev: true 1279 | 1280 | /color-name/1.1.4: 1281 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1282 | dev: true 1283 | 1284 | /colorette/2.0.16: 1285 | resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==} 1286 | dev: true 1287 | 1288 | /colors/1.4.0: 1289 | resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} 1290 | engines: {node: '>=0.1.90'} 1291 | requiresBuild: true 1292 | dev: true 1293 | optional: true 1294 | 1295 | /combined-stream/1.0.8: 1296 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1297 | engines: {node: '>= 0.8'} 1298 | dependencies: 1299 | delayed-stream: 1.0.0 1300 | dev: true 1301 | 1302 | /commander/5.1.0: 1303 | resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} 1304 | engines: {node: '>= 6'} 1305 | dev: true 1306 | 1307 | /common-tags/1.8.2: 1308 | resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} 1309 | engines: {node: '>=4.0.0'} 1310 | dev: true 1311 | 1312 | /concat-map/0.0.1: 1313 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1314 | dev: true 1315 | 1316 | /convert-source-map/1.8.0: 1317 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1318 | dependencies: 1319 | safe-buffer: 5.1.2 1320 | dev: true 1321 | 1322 | /core-js-pure/3.21.1: 1323 | resolution: {integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==} 1324 | requiresBuild: true 1325 | dev: true 1326 | 1327 | /core-util-is/1.0.2: 1328 | resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} 1329 | dev: true 1330 | 1331 | /cross-spawn/7.0.3: 1332 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1333 | engines: {node: '>= 8'} 1334 | dependencies: 1335 | path-key: 3.1.1 1336 | shebang-command: 2.0.0 1337 | which: 2.0.2 1338 | dev: true 1339 | 1340 | /cssom/0.3.8: 1341 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 1342 | dev: true 1343 | 1344 | /cssom/0.5.0: 1345 | resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} 1346 | dev: true 1347 | 1348 | /cssstyle/2.3.0: 1349 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 1350 | engines: {node: '>=8'} 1351 | dependencies: 1352 | cssom: 0.3.8 1353 | dev: true 1354 | 1355 | /cypress/9.5.3: 1356 | resolution: {integrity: sha512-ItelIVmqMTnKYbo1JrErhsGgQGjWOxCpHT1TfMvwnIXKXN/OSlPjEK7rbCLYDZhejQL99PmUqul7XORI24Ik0A==} 1357 | engines: {node: '>=12.0.0'} 1358 | hasBin: true 1359 | requiresBuild: true 1360 | dependencies: 1361 | '@cypress/request': 2.88.10 1362 | '@cypress/xvfb': 1.2.4 1363 | '@types/node': 14.18.12 1364 | '@types/sinonjs__fake-timers': 8.1.1 1365 | '@types/sizzle': 2.3.3 1366 | arch: 2.2.0 1367 | blob-util: 2.0.2 1368 | bluebird: 3.7.2 1369 | buffer: 5.7.1 1370 | cachedir: 2.3.0 1371 | chalk: 4.1.2 1372 | check-more-types: 2.24.0 1373 | cli-cursor: 3.1.0 1374 | cli-table3: 0.6.1 1375 | commander: 5.1.0 1376 | common-tags: 1.8.2 1377 | dayjs: 1.11.0 1378 | debug: 4.3.4_supports-color@8.1.1 1379 | enquirer: 2.3.6 1380 | eventemitter2: 6.4.5 1381 | execa: 4.1.0 1382 | executable: 4.1.1 1383 | extract-zip: 2.0.1_supports-color@8.1.1 1384 | figures: 3.2.0 1385 | fs-extra: 9.1.0 1386 | getos: 3.2.1 1387 | is-ci: 3.0.1 1388 | is-installed-globally: 0.4.0 1389 | lazy-ass: 1.6.0 1390 | listr2: 3.14.0_enquirer@2.3.6 1391 | lodash: 4.17.21 1392 | log-symbols: 4.1.0 1393 | minimist: 1.2.6 1394 | ospath: 1.2.2 1395 | pretty-bytes: 5.6.0 1396 | proxy-from-env: 1.0.0 1397 | request-progress: 3.0.0 1398 | semver: 7.3.5 1399 | supports-color: 8.1.1 1400 | tmp: 0.2.1 1401 | untildify: 4.0.0 1402 | yauzl: 2.10.0 1403 | dev: true 1404 | 1405 | /dashdash/1.14.1: 1406 | resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=} 1407 | engines: {node: '>=0.10'} 1408 | dependencies: 1409 | assert-plus: 1.0.0 1410 | dev: true 1411 | 1412 | /data-urls/3.0.1: 1413 | resolution: {integrity: sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==} 1414 | engines: {node: '>=12'} 1415 | dependencies: 1416 | abab: 2.0.5 1417 | whatwg-mimetype: 3.0.0 1418 | whatwg-url: 10.0.0 1419 | dev: true 1420 | 1421 | /dayjs/1.11.0: 1422 | resolution: {integrity: sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug==} 1423 | dev: true 1424 | 1425 | /debug/2.6.9: 1426 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1427 | dependencies: 1428 | ms: 2.0.0 1429 | dev: true 1430 | 1431 | /debug/3.2.7: 1432 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1433 | dependencies: 1434 | ms: 2.1.3 1435 | dev: true 1436 | 1437 | /debug/4.3.4: 1438 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1439 | engines: {node: '>=6.0'} 1440 | peerDependencies: 1441 | supports-color: '*' 1442 | peerDependenciesMeta: 1443 | supports-color: 1444 | optional: true 1445 | dependencies: 1446 | ms: 2.1.2 1447 | dev: true 1448 | 1449 | /debug/4.3.4_supports-color@8.1.1: 1450 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1451 | engines: {node: '>=6.0'} 1452 | peerDependencies: 1453 | supports-color: '*' 1454 | peerDependenciesMeta: 1455 | supports-color: 1456 | optional: true 1457 | dependencies: 1458 | ms: 2.1.2 1459 | supports-color: 8.1.1 1460 | dev: true 1461 | 1462 | /decimal.js/10.3.1: 1463 | resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} 1464 | dev: true 1465 | 1466 | /deep-eql/3.0.1: 1467 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 1468 | engines: {node: '>=0.12'} 1469 | dependencies: 1470 | type-detect: 4.0.8 1471 | dev: true 1472 | 1473 | /deep-is/0.1.4: 1474 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1475 | dev: true 1476 | 1477 | /define-properties/1.1.3: 1478 | resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} 1479 | engines: {node: '>= 0.4'} 1480 | dependencies: 1481 | object-keys: 1.1.1 1482 | dev: true 1483 | 1484 | /delayed-stream/1.0.0: 1485 | resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} 1486 | engines: {node: '>=0.4.0'} 1487 | dev: true 1488 | 1489 | /dir-glob/3.0.1: 1490 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1491 | engines: {node: '>=8'} 1492 | dependencies: 1493 | path-type: 4.0.0 1494 | dev: true 1495 | 1496 | /doctrine/2.1.0: 1497 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1498 | engines: {node: '>=0.10.0'} 1499 | dependencies: 1500 | esutils: 2.0.3 1501 | dev: true 1502 | 1503 | /doctrine/3.0.0: 1504 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1505 | engines: {node: '>=6.0.0'} 1506 | dependencies: 1507 | esutils: 2.0.3 1508 | dev: true 1509 | 1510 | /dom-accessibility-api/0.5.13: 1511 | resolution: {integrity: sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==} 1512 | dev: true 1513 | 1514 | /domexception/4.0.0: 1515 | resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} 1516 | engines: {node: '>=12'} 1517 | dependencies: 1518 | webidl-conversions: 7.0.0 1519 | dev: true 1520 | 1521 | /ecc-jsbn/0.1.2: 1522 | resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=} 1523 | dependencies: 1524 | jsbn: 0.1.1 1525 | safer-buffer: 2.1.2 1526 | dev: true 1527 | 1528 | /electron-to-chromium/1.4.103: 1529 | resolution: {integrity: sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==} 1530 | dev: true 1531 | 1532 | /emoji-regex/8.0.0: 1533 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1534 | dev: true 1535 | 1536 | /end-of-stream/1.4.4: 1537 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 1538 | dependencies: 1539 | once: 1.4.0 1540 | dev: true 1541 | 1542 | /enquirer/2.3.6: 1543 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 1544 | engines: {node: '>=8.6'} 1545 | dependencies: 1546 | ansi-colors: 4.1.1 1547 | dev: true 1548 | 1549 | /es-abstract/1.19.2: 1550 | resolution: {integrity: sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==} 1551 | engines: {node: '>= 0.4'} 1552 | dependencies: 1553 | call-bind: 1.0.2 1554 | es-to-primitive: 1.2.1 1555 | function-bind: 1.1.1 1556 | get-intrinsic: 1.1.1 1557 | get-symbol-description: 1.0.0 1558 | has: 1.0.3 1559 | has-symbols: 1.0.3 1560 | internal-slot: 1.0.3 1561 | is-callable: 1.2.4 1562 | is-negative-zero: 2.0.2 1563 | is-regex: 1.1.4 1564 | is-shared-array-buffer: 1.0.1 1565 | is-string: 1.0.7 1566 | is-weakref: 1.0.2 1567 | object-inspect: 1.12.0 1568 | object-keys: 1.1.1 1569 | object.assign: 4.1.2 1570 | string.prototype.trimend: 1.0.4 1571 | string.prototype.trimstart: 1.0.4 1572 | unbox-primitive: 1.0.1 1573 | dev: true 1574 | 1575 | /es-to-primitive/1.2.1: 1576 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1577 | engines: {node: '>= 0.4'} 1578 | dependencies: 1579 | is-callable: 1.2.4 1580 | is-date-object: 1.0.5 1581 | is-symbol: 1.0.4 1582 | dev: true 1583 | 1584 | /esbuild-android-64/0.14.29: 1585 | resolution: {integrity: sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==} 1586 | engines: {node: '>=12'} 1587 | cpu: [x64] 1588 | os: [android] 1589 | requiresBuild: true 1590 | dev: true 1591 | optional: true 1592 | 1593 | /esbuild-android-arm64/0.14.29: 1594 | resolution: {integrity: sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==} 1595 | engines: {node: '>=12'} 1596 | cpu: [arm64] 1597 | os: [android] 1598 | requiresBuild: true 1599 | dev: true 1600 | optional: true 1601 | 1602 | /esbuild-darwin-64/0.14.29: 1603 | resolution: {integrity: sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==} 1604 | engines: {node: '>=12'} 1605 | cpu: [x64] 1606 | os: [darwin] 1607 | requiresBuild: true 1608 | dev: true 1609 | optional: true 1610 | 1611 | /esbuild-darwin-arm64/0.14.29: 1612 | resolution: {integrity: sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==} 1613 | engines: {node: '>=12'} 1614 | cpu: [arm64] 1615 | os: [darwin] 1616 | requiresBuild: true 1617 | dev: true 1618 | optional: true 1619 | 1620 | /esbuild-freebsd-64/0.14.29: 1621 | resolution: {integrity: sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==} 1622 | engines: {node: '>=12'} 1623 | cpu: [x64] 1624 | os: [freebsd] 1625 | requiresBuild: true 1626 | dev: true 1627 | optional: true 1628 | 1629 | /esbuild-freebsd-arm64/0.14.29: 1630 | resolution: {integrity: sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==} 1631 | engines: {node: '>=12'} 1632 | cpu: [arm64] 1633 | os: [freebsd] 1634 | requiresBuild: true 1635 | dev: true 1636 | optional: true 1637 | 1638 | /esbuild-linux-32/0.14.29: 1639 | resolution: {integrity: sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==} 1640 | engines: {node: '>=12'} 1641 | cpu: [ia32] 1642 | os: [linux] 1643 | requiresBuild: true 1644 | dev: true 1645 | optional: true 1646 | 1647 | /esbuild-linux-64/0.14.29: 1648 | resolution: {integrity: sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==} 1649 | engines: {node: '>=12'} 1650 | cpu: [x64] 1651 | os: [linux] 1652 | requiresBuild: true 1653 | dev: true 1654 | optional: true 1655 | 1656 | /esbuild-linux-arm/0.14.29: 1657 | resolution: {integrity: sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==} 1658 | engines: {node: '>=12'} 1659 | cpu: [arm] 1660 | os: [linux] 1661 | requiresBuild: true 1662 | dev: true 1663 | optional: true 1664 | 1665 | /esbuild-linux-arm64/0.14.29: 1666 | resolution: {integrity: sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==} 1667 | engines: {node: '>=12'} 1668 | cpu: [arm64] 1669 | os: [linux] 1670 | requiresBuild: true 1671 | dev: true 1672 | optional: true 1673 | 1674 | /esbuild-linux-mips64le/0.14.29: 1675 | resolution: {integrity: sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==} 1676 | engines: {node: '>=12'} 1677 | cpu: [mips64el] 1678 | os: [linux] 1679 | requiresBuild: true 1680 | dev: true 1681 | optional: true 1682 | 1683 | /esbuild-linux-ppc64le/0.14.29: 1684 | resolution: {integrity: sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==} 1685 | engines: {node: '>=12'} 1686 | cpu: [ppc64] 1687 | os: [linux] 1688 | requiresBuild: true 1689 | dev: true 1690 | optional: true 1691 | 1692 | /esbuild-linux-riscv64/0.14.29: 1693 | resolution: {integrity: sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==} 1694 | engines: {node: '>=12'} 1695 | cpu: [riscv64] 1696 | os: [linux] 1697 | requiresBuild: true 1698 | dev: true 1699 | optional: true 1700 | 1701 | /esbuild-linux-s390x/0.14.29: 1702 | resolution: {integrity: sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==} 1703 | engines: {node: '>=12'} 1704 | cpu: [s390x] 1705 | os: [linux] 1706 | requiresBuild: true 1707 | dev: true 1708 | optional: true 1709 | 1710 | /esbuild-netbsd-64/0.14.29: 1711 | resolution: {integrity: sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==} 1712 | engines: {node: '>=12'} 1713 | cpu: [x64] 1714 | os: [netbsd] 1715 | requiresBuild: true 1716 | dev: true 1717 | optional: true 1718 | 1719 | /esbuild-openbsd-64/0.14.29: 1720 | resolution: {integrity: sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==} 1721 | engines: {node: '>=12'} 1722 | cpu: [x64] 1723 | os: [openbsd] 1724 | requiresBuild: true 1725 | dev: true 1726 | optional: true 1727 | 1728 | /esbuild-sunos-64/0.14.29: 1729 | resolution: {integrity: sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==} 1730 | engines: {node: '>=12'} 1731 | cpu: [x64] 1732 | os: [sunos] 1733 | requiresBuild: true 1734 | dev: true 1735 | optional: true 1736 | 1737 | /esbuild-windows-32/0.14.29: 1738 | resolution: {integrity: sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==} 1739 | engines: {node: '>=12'} 1740 | cpu: [ia32] 1741 | os: [win32] 1742 | requiresBuild: true 1743 | dev: true 1744 | optional: true 1745 | 1746 | /esbuild-windows-64/0.14.29: 1747 | resolution: {integrity: sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==} 1748 | engines: {node: '>=12'} 1749 | cpu: [x64] 1750 | os: [win32] 1751 | requiresBuild: true 1752 | dev: true 1753 | optional: true 1754 | 1755 | /esbuild-windows-arm64/0.14.29: 1756 | resolution: {integrity: sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==} 1757 | engines: {node: '>=12'} 1758 | cpu: [arm64] 1759 | os: [win32] 1760 | requiresBuild: true 1761 | dev: true 1762 | optional: true 1763 | 1764 | /esbuild/0.14.29: 1765 | resolution: {integrity: sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==} 1766 | engines: {node: '>=12'} 1767 | hasBin: true 1768 | requiresBuild: true 1769 | optionalDependencies: 1770 | esbuild-android-64: 0.14.29 1771 | esbuild-android-arm64: 0.14.29 1772 | esbuild-darwin-64: 0.14.29 1773 | esbuild-darwin-arm64: 0.14.29 1774 | esbuild-freebsd-64: 0.14.29 1775 | esbuild-freebsd-arm64: 0.14.29 1776 | esbuild-linux-32: 0.14.29 1777 | esbuild-linux-64: 0.14.29 1778 | esbuild-linux-arm: 0.14.29 1779 | esbuild-linux-arm64: 0.14.29 1780 | esbuild-linux-mips64le: 0.14.29 1781 | esbuild-linux-ppc64le: 0.14.29 1782 | esbuild-linux-riscv64: 0.14.29 1783 | esbuild-linux-s390x: 0.14.29 1784 | esbuild-netbsd-64: 0.14.29 1785 | esbuild-openbsd-64: 0.14.29 1786 | esbuild-sunos-64: 0.14.29 1787 | esbuild-windows-32: 0.14.29 1788 | esbuild-windows-64: 0.14.29 1789 | esbuild-windows-arm64: 0.14.29 1790 | dev: true 1791 | 1792 | /escalade/3.1.1: 1793 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1794 | engines: {node: '>=6'} 1795 | dev: true 1796 | 1797 | /escape-string-regexp/1.0.5: 1798 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1799 | engines: {node: '>=0.8.0'} 1800 | dev: true 1801 | 1802 | /escape-string-regexp/4.0.0: 1803 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1804 | engines: {node: '>=10'} 1805 | dev: true 1806 | 1807 | /escodegen/2.0.0: 1808 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 1809 | engines: {node: '>=6.0'} 1810 | hasBin: true 1811 | dependencies: 1812 | esprima: 4.0.1 1813 | estraverse: 5.3.0 1814 | esutils: 2.0.3 1815 | optionator: 0.8.3 1816 | optionalDependencies: 1817 | source-map: 0.6.1 1818 | dev: true 1819 | 1820 | /eslint-config-prettier/8.5.0_eslint@8.12.0: 1821 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} 1822 | hasBin: true 1823 | peerDependencies: 1824 | eslint: '>=7.0.0' 1825 | dependencies: 1826 | eslint: 8.12.0 1827 | dev: true 1828 | 1829 | /eslint-import-resolver-node/0.3.6: 1830 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 1831 | dependencies: 1832 | debug: 3.2.7 1833 | resolve: 1.22.0 1834 | dev: true 1835 | 1836 | /eslint-module-utils/2.7.3: 1837 | resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} 1838 | engines: {node: '>=4'} 1839 | dependencies: 1840 | debug: 3.2.7 1841 | find-up: 2.1.0 1842 | dev: true 1843 | 1844 | /eslint-plugin-import/2.25.4_eslint@8.12.0: 1845 | resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} 1846 | engines: {node: '>=4'} 1847 | peerDependencies: 1848 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1849 | dependencies: 1850 | array-includes: 3.1.4 1851 | array.prototype.flat: 1.2.5 1852 | debug: 2.6.9 1853 | doctrine: 2.1.0 1854 | eslint: 8.12.0 1855 | eslint-import-resolver-node: 0.3.6 1856 | eslint-module-utils: 2.7.3 1857 | has: 1.0.3 1858 | is-core-module: 2.8.1 1859 | is-glob: 4.0.3 1860 | minimatch: 3.1.2 1861 | object.values: 1.1.5 1862 | resolve: 1.22.0 1863 | tsconfig-paths: 3.14.1 1864 | dev: true 1865 | 1866 | /eslint-plugin-prettier/4.0.0_b253a92c95b42c3296c682f11cccb3bd: 1867 | resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} 1868 | engines: {node: '>=6.0.0'} 1869 | peerDependencies: 1870 | eslint: '>=7.28.0' 1871 | eslint-config-prettier: '*' 1872 | prettier: '>=2.0.0' 1873 | peerDependenciesMeta: 1874 | eslint-config-prettier: 1875 | optional: true 1876 | dependencies: 1877 | eslint: 8.12.0 1878 | eslint-config-prettier: 8.5.0_eslint@8.12.0 1879 | prettier: 2.6.1 1880 | prettier-linter-helpers: 1.0.0 1881 | dev: true 1882 | 1883 | /eslint-scope/5.1.1: 1884 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1885 | engines: {node: '>=8.0.0'} 1886 | dependencies: 1887 | esrecurse: 4.3.0 1888 | estraverse: 4.3.0 1889 | dev: true 1890 | 1891 | /eslint-scope/7.1.1: 1892 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1893 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1894 | dependencies: 1895 | esrecurse: 4.3.0 1896 | estraverse: 5.3.0 1897 | dev: true 1898 | 1899 | /eslint-utils/3.0.0_eslint@8.12.0: 1900 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1901 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1902 | peerDependencies: 1903 | eslint: '>=5' 1904 | dependencies: 1905 | eslint: 8.12.0 1906 | eslint-visitor-keys: 2.1.0 1907 | dev: true 1908 | 1909 | /eslint-visitor-keys/2.1.0: 1910 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1911 | engines: {node: '>=10'} 1912 | dev: true 1913 | 1914 | /eslint-visitor-keys/3.3.0: 1915 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1916 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1917 | dev: true 1918 | 1919 | /eslint/8.12.0: 1920 | resolution: {integrity: sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==} 1921 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1922 | hasBin: true 1923 | dependencies: 1924 | '@eslint/eslintrc': 1.2.1 1925 | '@humanwhocodes/config-array': 0.9.5 1926 | ajv: 6.12.6 1927 | chalk: 4.1.2 1928 | cross-spawn: 7.0.3 1929 | debug: 4.3.4 1930 | doctrine: 3.0.0 1931 | escape-string-regexp: 4.0.0 1932 | eslint-scope: 7.1.1 1933 | eslint-utils: 3.0.0_eslint@8.12.0 1934 | eslint-visitor-keys: 3.3.0 1935 | espree: 9.3.1 1936 | esquery: 1.4.0 1937 | esutils: 2.0.3 1938 | fast-deep-equal: 3.1.3 1939 | file-entry-cache: 6.0.1 1940 | functional-red-black-tree: 1.0.1 1941 | glob-parent: 6.0.2 1942 | globals: 13.13.0 1943 | ignore: 5.2.0 1944 | import-fresh: 3.3.0 1945 | imurmurhash: 0.1.4 1946 | is-glob: 4.0.3 1947 | js-yaml: 4.1.0 1948 | json-stable-stringify-without-jsonify: 1.0.1 1949 | levn: 0.4.1 1950 | lodash.merge: 4.6.2 1951 | minimatch: 3.1.2 1952 | natural-compare: 1.4.0 1953 | optionator: 0.9.1 1954 | regexpp: 3.2.0 1955 | strip-ansi: 6.0.1 1956 | strip-json-comments: 3.1.1 1957 | text-table: 0.2.0 1958 | v8-compile-cache: 2.3.0 1959 | transitivePeerDependencies: 1960 | - supports-color 1961 | dev: true 1962 | 1963 | /espree/9.3.1: 1964 | resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} 1965 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1966 | dependencies: 1967 | acorn: 8.7.0 1968 | acorn-jsx: 5.3.2_acorn@8.7.0 1969 | eslint-visitor-keys: 3.3.0 1970 | dev: true 1971 | 1972 | /esprima/4.0.1: 1973 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1974 | engines: {node: '>=4'} 1975 | hasBin: true 1976 | dev: true 1977 | 1978 | /esquery/1.4.0: 1979 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1980 | engines: {node: '>=0.10'} 1981 | dependencies: 1982 | estraverse: 5.3.0 1983 | dev: true 1984 | 1985 | /esrecurse/4.3.0: 1986 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1987 | engines: {node: '>=4.0'} 1988 | dependencies: 1989 | estraverse: 5.3.0 1990 | dev: true 1991 | 1992 | /estraverse/4.3.0: 1993 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1994 | engines: {node: '>=4.0'} 1995 | dev: true 1996 | 1997 | /estraverse/5.3.0: 1998 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1999 | engines: {node: '>=4.0'} 2000 | dev: true 2001 | 2002 | /esutils/2.0.3: 2003 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 2004 | engines: {node: '>=0.10.0'} 2005 | dev: true 2006 | 2007 | /eventemitter2/6.4.5: 2008 | resolution: {integrity: sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==} 2009 | dev: true 2010 | 2011 | /execa/4.1.0: 2012 | resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} 2013 | engines: {node: '>=10'} 2014 | dependencies: 2015 | cross-spawn: 7.0.3 2016 | get-stream: 5.2.0 2017 | human-signals: 1.1.1 2018 | is-stream: 2.0.1 2019 | merge-stream: 2.0.0 2020 | npm-run-path: 4.0.1 2021 | onetime: 5.1.2 2022 | signal-exit: 3.0.7 2023 | strip-final-newline: 2.0.0 2024 | dev: true 2025 | 2026 | /executable/4.1.1: 2027 | resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} 2028 | engines: {node: '>=4'} 2029 | dependencies: 2030 | pify: 2.3.0 2031 | dev: true 2032 | 2033 | /extend/3.0.2: 2034 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 2035 | dev: true 2036 | 2037 | /extract-zip/2.0.1_supports-color@8.1.1: 2038 | resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} 2039 | engines: {node: '>= 10.17.0'} 2040 | hasBin: true 2041 | dependencies: 2042 | debug: 4.3.4_supports-color@8.1.1 2043 | get-stream: 5.2.0 2044 | yauzl: 2.10.0 2045 | optionalDependencies: 2046 | '@types/yauzl': 2.9.2 2047 | transitivePeerDependencies: 2048 | - supports-color 2049 | dev: true 2050 | 2051 | /extsprintf/1.3.0: 2052 | resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=} 2053 | engines: {'0': node >=0.6.0} 2054 | dev: true 2055 | 2056 | /fast-deep-equal/3.1.3: 2057 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 2058 | dev: true 2059 | 2060 | /fast-diff/1.2.0: 2061 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 2062 | dev: true 2063 | 2064 | /fast-glob/3.2.11: 2065 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 2066 | engines: {node: '>=8.6.0'} 2067 | dependencies: 2068 | '@nodelib/fs.stat': 2.0.5 2069 | '@nodelib/fs.walk': 1.2.8 2070 | glob-parent: 5.1.2 2071 | merge2: 1.4.1 2072 | micromatch: 4.0.5 2073 | dev: true 2074 | 2075 | /fast-json-stable-stringify/2.1.0: 2076 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 2077 | dev: true 2078 | 2079 | /fast-levenshtein/2.0.6: 2080 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 2081 | dev: true 2082 | 2083 | /fastq/1.13.0: 2084 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 2085 | dependencies: 2086 | reusify: 1.0.4 2087 | dev: true 2088 | 2089 | /fd-slicer/1.1.0: 2090 | resolution: {integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=} 2091 | dependencies: 2092 | pend: 1.2.0 2093 | dev: true 2094 | 2095 | /figures/3.2.0: 2096 | resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} 2097 | engines: {node: '>=8'} 2098 | dependencies: 2099 | escape-string-regexp: 1.0.5 2100 | dev: true 2101 | 2102 | /file-entry-cache/6.0.1: 2103 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 2104 | engines: {node: ^10.12.0 || >=12.0.0} 2105 | dependencies: 2106 | flat-cache: 3.0.4 2107 | dev: true 2108 | 2109 | /fill-range/7.0.1: 2110 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 2111 | engines: {node: '>=8'} 2112 | dependencies: 2113 | to-regex-range: 5.0.1 2114 | dev: true 2115 | 2116 | /find-up/2.1.0: 2117 | resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} 2118 | engines: {node: '>=4'} 2119 | dependencies: 2120 | locate-path: 2.0.0 2121 | dev: true 2122 | 2123 | /find-up/5.0.0: 2124 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 2125 | engines: {node: '>=10'} 2126 | dependencies: 2127 | locate-path: 6.0.0 2128 | path-exists: 4.0.0 2129 | dev: true 2130 | 2131 | /flat-cache/3.0.4: 2132 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 2133 | engines: {node: ^10.12.0 || >=12.0.0} 2134 | dependencies: 2135 | flatted: 3.2.5 2136 | rimraf: 3.0.2 2137 | dev: true 2138 | 2139 | /flatted/3.2.5: 2140 | resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} 2141 | dev: true 2142 | 2143 | /foreground-child/2.0.0: 2144 | resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} 2145 | engines: {node: '>=8.0.0'} 2146 | dependencies: 2147 | cross-spawn: 7.0.3 2148 | signal-exit: 3.0.7 2149 | dev: true 2150 | 2151 | /forever-agent/0.6.1: 2152 | resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} 2153 | dev: true 2154 | 2155 | /form-data/2.3.3: 2156 | resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} 2157 | engines: {node: '>= 0.12'} 2158 | dependencies: 2159 | asynckit: 0.4.0 2160 | combined-stream: 1.0.8 2161 | mime-types: 2.1.35 2162 | dev: true 2163 | 2164 | /form-data/4.0.0: 2165 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 2166 | engines: {node: '>= 6'} 2167 | dependencies: 2168 | asynckit: 0.4.0 2169 | combined-stream: 1.0.8 2170 | mime-types: 2.1.35 2171 | dev: true 2172 | 2173 | /fs-extra/9.1.0: 2174 | resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} 2175 | engines: {node: '>=10'} 2176 | dependencies: 2177 | at-least-node: 1.0.0 2178 | graceful-fs: 4.2.9 2179 | jsonfile: 6.1.0 2180 | universalify: 2.0.0 2181 | dev: true 2182 | 2183 | /fs.realpath/1.0.0: 2184 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 2185 | dev: true 2186 | 2187 | /fsevents/2.3.2: 2188 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 2189 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2190 | os: [darwin] 2191 | requiresBuild: true 2192 | dev: true 2193 | optional: true 2194 | 2195 | /function-bind/1.1.1: 2196 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 2197 | dev: true 2198 | 2199 | /functional-red-black-tree/1.0.1: 2200 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 2201 | dev: true 2202 | 2203 | /gensync/1.0.0-beta.2: 2204 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 2205 | engines: {node: '>=6.9.0'} 2206 | dev: true 2207 | 2208 | /get-caller-file/2.0.5: 2209 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 2210 | engines: {node: 6.* || 8.* || >= 10.*} 2211 | dev: true 2212 | 2213 | /get-func-name/2.0.0: 2214 | resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} 2215 | dev: true 2216 | 2217 | /get-intrinsic/1.1.1: 2218 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 2219 | dependencies: 2220 | function-bind: 1.1.1 2221 | has: 1.0.3 2222 | has-symbols: 1.0.3 2223 | dev: true 2224 | 2225 | /get-port/5.1.1: 2226 | resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} 2227 | engines: {node: '>=8'} 2228 | dev: true 2229 | 2230 | /get-stream/5.2.0: 2231 | resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} 2232 | engines: {node: '>=8'} 2233 | dependencies: 2234 | pump: 3.0.0 2235 | dev: true 2236 | 2237 | /get-symbol-description/1.0.0: 2238 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 2239 | engines: {node: '>= 0.4'} 2240 | dependencies: 2241 | call-bind: 1.0.2 2242 | get-intrinsic: 1.1.1 2243 | dev: true 2244 | 2245 | /getos/3.2.1: 2246 | resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} 2247 | dependencies: 2248 | async: 3.2.3 2249 | dev: true 2250 | 2251 | /getpass/0.1.7: 2252 | resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=} 2253 | dependencies: 2254 | assert-plus: 1.0.0 2255 | dev: true 2256 | 2257 | /glob-parent/5.1.2: 2258 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 2259 | engines: {node: '>= 6'} 2260 | dependencies: 2261 | is-glob: 4.0.3 2262 | dev: true 2263 | 2264 | /glob-parent/6.0.2: 2265 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 2266 | engines: {node: '>=10.13.0'} 2267 | dependencies: 2268 | is-glob: 4.0.3 2269 | dev: true 2270 | 2271 | /glob/7.2.0: 2272 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 2273 | dependencies: 2274 | fs.realpath: 1.0.0 2275 | inflight: 1.0.6 2276 | inherits: 2.0.4 2277 | minimatch: 3.1.2 2278 | once: 1.4.0 2279 | path-is-absolute: 1.0.1 2280 | dev: true 2281 | 2282 | /global-dirs/3.0.0: 2283 | resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} 2284 | engines: {node: '>=10'} 2285 | dependencies: 2286 | ini: 2.0.0 2287 | dev: true 2288 | 2289 | /globals/11.12.0: 2290 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 2291 | engines: {node: '>=4'} 2292 | dev: true 2293 | 2294 | /globals/13.13.0: 2295 | resolution: {integrity: sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==} 2296 | engines: {node: '>=8'} 2297 | dependencies: 2298 | type-fest: 0.20.2 2299 | dev: true 2300 | 2301 | /globby/11.1.0: 2302 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 2303 | engines: {node: '>=10'} 2304 | dependencies: 2305 | array-union: 2.1.0 2306 | dir-glob: 3.0.1 2307 | fast-glob: 3.2.11 2308 | ignore: 5.2.0 2309 | merge2: 1.4.1 2310 | slash: 3.0.0 2311 | dev: true 2312 | 2313 | /graceful-fs/4.2.9: 2314 | resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} 2315 | dev: true 2316 | 2317 | /has-bigints/1.0.1: 2318 | resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} 2319 | dev: true 2320 | 2321 | /has-flag/3.0.0: 2322 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 2323 | engines: {node: '>=4'} 2324 | dev: true 2325 | 2326 | /has-flag/4.0.0: 2327 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2328 | engines: {node: '>=8'} 2329 | dev: true 2330 | 2331 | /has-symbols/1.0.3: 2332 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 2333 | engines: {node: '>= 0.4'} 2334 | dev: true 2335 | 2336 | /has-tostringtag/1.0.0: 2337 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 2338 | engines: {node: '>= 0.4'} 2339 | dependencies: 2340 | has-symbols: 1.0.3 2341 | dev: true 2342 | 2343 | /has/1.0.3: 2344 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2345 | engines: {node: '>= 0.4.0'} 2346 | dependencies: 2347 | function-bind: 1.1.1 2348 | dev: true 2349 | 2350 | /hey-listen/1.0.8: 2351 | resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} 2352 | dev: true 2353 | 2354 | /html-encoding-sniffer/3.0.0: 2355 | resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} 2356 | engines: {node: '>=12'} 2357 | dependencies: 2358 | whatwg-encoding: 2.0.0 2359 | dev: true 2360 | 2361 | /html-entities/2.3.2: 2362 | resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} 2363 | dev: true 2364 | 2365 | /html-escaper/2.0.2: 2366 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 2367 | dev: true 2368 | 2369 | /http-proxy-agent/5.0.0: 2370 | resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} 2371 | engines: {node: '>= 6'} 2372 | dependencies: 2373 | '@tootallnate/once': 2.0.0 2374 | agent-base: 6.0.2 2375 | debug: 4.3.4 2376 | transitivePeerDependencies: 2377 | - supports-color 2378 | dev: true 2379 | 2380 | /http-signature/1.3.6: 2381 | resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} 2382 | engines: {node: '>=0.10'} 2383 | dependencies: 2384 | assert-plus: 1.0.0 2385 | jsprim: 2.0.2 2386 | sshpk: 1.17.0 2387 | dev: true 2388 | 2389 | /https-proxy-agent/5.0.0: 2390 | resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} 2391 | engines: {node: '>= 6'} 2392 | dependencies: 2393 | agent-base: 6.0.2 2394 | debug: 4.3.4 2395 | transitivePeerDependencies: 2396 | - supports-color 2397 | dev: true 2398 | 2399 | /human-signals/1.1.1: 2400 | resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} 2401 | engines: {node: '>=8.12.0'} 2402 | dev: true 2403 | 2404 | /husky/7.0.4: 2405 | resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} 2406 | engines: {node: '>=12'} 2407 | hasBin: true 2408 | dev: true 2409 | 2410 | /iconv-lite/0.6.3: 2411 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 2412 | engines: {node: '>=0.10.0'} 2413 | dependencies: 2414 | safer-buffer: 2.1.2 2415 | dev: true 2416 | 2417 | /ieee754/1.2.1: 2418 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2419 | dev: true 2420 | 2421 | /ignore/5.2.0: 2422 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 2423 | engines: {node: '>= 4'} 2424 | dev: true 2425 | 2426 | /import-fresh/3.3.0: 2427 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2428 | engines: {node: '>=6'} 2429 | dependencies: 2430 | parent-module: 1.0.1 2431 | resolve-from: 4.0.0 2432 | dev: true 2433 | 2434 | /imurmurhash/0.1.4: 2435 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 2436 | engines: {node: '>=0.8.19'} 2437 | dev: true 2438 | 2439 | /indent-string/4.0.0: 2440 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 2441 | engines: {node: '>=8'} 2442 | dev: true 2443 | 2444 | /inflight/1.0.6: 2445 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 2446 | dependencies: 2447 | once: 1.4.0 2448 | wrappy: 1.0.2 2449 | dev: true 2450 | 2451 | /inherits/2.0.4: 2452 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2453 | dev: true 2454 | 2455 | /ini/2.0.0: 2456 | resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} 2457 | engines: {node: '>=10'} 2458 | dev: true 2459 | 2460 | /internal-slot/1.0.3: 2461 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 2462 | engines: {node: '>= 0.4'} 2463 | dependencies: 2464 | get-intrinsic: 1.1.1 2465 | has: 1.0.3 2466 | side-channel: 1.0.4 2467 | dev: true 2468 | 2469 | /is-bigint/1.0.4: 2470 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2471 | dependencies: 2472 | has-bigints: 1.0.1 2473 | dev: true 2474 | 2475 | /is-binary-path/2.1.0: 2476 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2477 | engines: {node: '>=8'} 2478 | dependencies: 2479 | binary-extensions: 2.2.0 2480 | dev: true 2481 | 2482 | /is-boolean-object/1.1.2: 2483 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2484 | engines: {node: '>= 0.4'} 2485 | dependencies: 2486 | call-bind: 1.0.2 2487 | has-tostringtag: 1.0.0 2488 | dev: true 2489 | 2490 | /is-callable/1.2.4: 2491 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 2492 | engines: {node: '>= 0.4'} 2493 | dev: true 2494 | 2495 | /is-ci/3.0.1: 2496 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 2497 | hasBin: true 2498 | dependencies: 2499 | ci-info: 3.3.0 2500 | dev: true 2501 | 2502 | /is-core-module/2.8.1: 2503 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 2504 | dependencies: 2505 | has: 1.0.3 2506 | dev: true 2507 | 2508 | /is-date-object/1.0.5: 2509 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2510 | engines: {node: '>= 0.4'} 2511 | dependencies: 2512 | has-tostringtag: 1.0.0 2513 | dev: true 2514 | 2515 | /is-extglob/2.1.1: 2516 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 2517 | engines: {node: '>=0.10.0'} 2518 | dev: true 2519 | 2520 | /is-fullwidth-code-point/3.0.0: 2521 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2522 | engines: {node: '>=8'} 2523 | dev: true 2524 | 2525 | /is-glob/4.0.3: 2526 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2527 | engines: {node: '>=0.10.0'} 2528 | dependencies: 2529 | is-extglob: 2.1.1 2530 | dev: true 2531 | 2532 | /is-installed-globally/0.4.0: 2533 | resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} 2534 | engines: {node: '>=10'} 2535 | dependencies: 2536 | global-dirs: 3.0.0 2537 | is-path-inside: 3.0.3 2538 | dev: true 2539 | 2540 | /is-negative-zero/2.0.2: 2541 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2542 | engines: {node: '>= 0.4'} 2543 | dev: true 2544 | 2545 | /is-number-object/1.0.6: 2546 | resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} 2547 | engines: {node: '>= 0.4'} 2548 | dependencies: 2549 | has-tostringtag: 1.0.0 2550 | dev: true 2551 | 2552 | /is-number/7.0.0: 2553 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2554 | engines: {node: '>=0.12.0'} 2555 | dev: true 2556 | 2557 | /is-path-inside/3.0.3: 2558 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2559 | engines: {node: '>=8'} 2560 | dev: true 2561 | 2562 | /is-potential-custom-element-name/1.0.1: 2563 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 2564 | dev: true 2565 | 2566 | /is-regex/1.1.4: 2567 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2568 | engines: {node: '>= 0.4'} 2569 | dependencies: 2570 | call-bind: 1.0.2 2571 | has-tostringtag: 1.0.0 2572 | dev: true 2573 | 2574 | /is-shared-array-buffer/1.0.1: 2575 | resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} 2576 | dev: true 2577 | 2578 | /is-stream/2.0.1: 2579 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 2580 | engines: {node: '>=8'} 2581 | dev: true 2582 | 2583 | /is-string/1.0.7: 2584 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2585 | engines: {node: '>= 0.4'} 2586 | dependencies: 2587 | has-tostringtag: 1.0.0 2588 | dev: true 2589 | 2590 | /is-symbol/1.0.4: 2591 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2592 | engines: {node: '>= 0.4'} 2593 | dependencies: 2594 | has-symbols: 1.0.3 2595 | dev: true 2596 | 2597 | /is-typedarray/1.0.0: 2598 | resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} 2599 | dev: true 2600 | 2601 | /is-unicode-supported/0.1.0: 2602 | resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} 2603 | engines: {node: '>=10'} 2604 | dev: true 2605 | 2606 | /is-weakref/1.0.2: 2607 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2608 | dependencies: 2609 | call-bind: 1.0.2 2610 | dev: true 2611 | 2612 | /is-what/4.1.7: 2613 | resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} 2614 | engines: {node: '>=12.13'} 2615 | dev: true 2616 | 2617 | /isexe/2.0.0: 2618 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 2619 | dev: true 2620 | 2621 | /isstream/0.1.2: 2622 | resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} 2623 | dev: true 2624 | 2625 | /istanbul-lib-coverage/3.2.0: 2626 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 2627 | engines: {node: '>=8'} 2628 | dev: true 2629 | 2630 | /istanbul-lib-report/3.0.0: 2631 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 2632 | engines: {node: '>=8'} 2633 | dependencies: 2634 | istanbul-lib-coverage: 3.2.0 2635 | make-dir: 3.1.0 2636 | supports-color: 7.2.0 2637 | dev: true 2638 | 2639 | /istanbul-reports/3.1.4: 2640 | resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} 2641 | engines: {node: '>=8'} 2642 | dependencies: 2643 | html-escaper: 2.0.2 2644 | istanbul-lib-report: 3.0.0 2645 | dev: true 2646 | 2647 | /js-tokens/4.0.0: 2648 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2649 | dev: true 2650 | 2651 | /js-yaml/4.1.0: 2652 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2653 | hasBin: true 2654 | dependencies: 2655 | argparse: 2.0.1 2656 | dev: true 2657 | 2658 | /jsbn/0.1.1: 2659 | resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} 2660 | dev: true 2661 | 2662 | /jsdom/19.0.0: 2663 | resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} 2664 | engines: {node: '>=12'} 2665 | peerDependencies: 2666 | canvas: ^2.5.0 2667 | peerDependenciesMeta: 2668 | canvas: 2669 | optional: true 2670 | dependencies: 2671 | abab: 2.0.5 2672 | acorn: 8.7.0 2673 | acorn-globals: 6.0.0 2674 | cssom: 0.5.0 2675 | cssstyle: 2.3.0 2676 | data-urls: 3.0.1 2677 | decimal.js: 10.3.1 2678 | domexception: 4.0.0 2679 | escodegen: 2.0.0 2680 | form-data: 4.0.0 2681 | html-encoding-sniffer: 3.0.0 2682 | http-proxy-agent: 5.0.0 2683 | https-proxy-agent: 5.0.0 2684 | is-potential-custom-element-name: 1.0.1 2685 | nwsapi: 2.2.0 2686 | parse5: 6.0.1 2687 | saxes: 5.0.1 2688 | symbol-tree: 3.2.4 2689 | tough-cookie: 4.0.0 2690 | w3c-hr-time: 1.0.2 2691 | w3c-xmlserializer: 3.0.0 2692 | webidl-conversions: 7.0.0 2693 | whatwg-encoding: 2.0.0 2694 | whatwg-mimetype: 3.0.0 2695 | whatwg-url: 10.0.0 2696 | ws: 8.5.0 2697 | xml-name-validator: 4.0.0 2698 | transitivePeerDependencies: 2699 | - bufferutil 2700 | - supports-color 2701 | - utf-8-validate 2702 | dev: true 2703 | 2704 | /jsesc/2.5.2: 2705 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2706 | engines: {node: '>=4'} 2707 | hasBin: true 2708 | dev: true 2709 | 2710 | /json-schema-traverse/0.4.1: 2711 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2712 | dev: true 2713 | 2714 | /json-schema/0.4.0: 2715 | resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} 2716 | dev: true 2717 | 2718 | /json-stable-stringify-without-jsonify/1.0.1: 2719 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 2720 | dev: true 2721 | 2722 | /json-stringify-safe/5.0.1: 2723 | resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} 2724 | dev: true 2725 | 2726 | /json5/1.0.1: 2727 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 2728 | hasBin: true 2729 | dependencies: 2730 | minimist: 1.2.6 2731 | dev: true 2732 | 2733 | /json5/2.2.1: 2734 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2735 | engines: {node: '>=6'} 2736 | hasBin: true 2737 | dev: true 2738 | 2739 | /jsonfile/6.1.0: 2740 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 2741 | dependencies: 2742 | universalify: 2.0.0 2743 | optionalDependencies: 2744 | graceful-fs: 4.2.9 2745 | dev: true 2746 | 2747 | /jsprim/2.0.2: 2748 | resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} 2749 | engines: {'0': node >=0.6.0} 2750 | dependencies: 2751 | assert-plus: 1.0.0 2752 | extsprintf: 1.3.0 2753 | json-schema: 0.4.0 2754 | verror: 1.10.0 2755 | dev: true 2756 | 2757 | /lazy-ass/1.6.0: 2758 | resolution: {integrity: sha1-eZllXoZGwX8In90YfRUNMyTVRRM=} 2759 | engines: {node: '> 0.8'} 2760 | dev: true 2761 | 2762 | /levn/0.3.0: 2763 | resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} 2764 | engines: {node: '>= 0.8.0'} 2765 | dependencies: 2766 | prelude-ls: 1.1.2 2767 | type-check: 0.3.2 2768 | dev: true 2769 | 2770 | /levn/0.4.1: 2771 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2772 | engines: {node: '>= 0.8.0'} 2773 | dependencies: 2774 | prelude-ls: 1.2.1 2775 | type-check: 0.4.0 2776 | dev: true 2777 | 2778 | /lilconfig/2.0.5: 2779 | resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} 2780 | engines: {node: '>=10'} 2781 | dev: true 2782 | 2783 | /listr2/3.14.0_enquirer@2.3.6: 2784 | resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} 2785 | engines: {node: '>=10.0.0'} 2786 | peerDependencies: 2787 | enquirer: '>= 2.3.0 < 3' 2788 | peerDependenciesMeta: 2789 | enquirer: 2790 | optional: true 2791 | dependencies: 2792 | cli-truncate: 2.1.0 2793 | colorette: 2.0.16 2794 | enquirer: 2.3.6 2795 | log-update: 4.0.0 2796 | p-map: 4.0.0 2797 | rfdc: 1.3.0 2798 | rxjs: 7.5.5 2799 | through: 2.3.8 2800 | wrap-ansi: 7.0.0 2801 | dev: true 2802 | 2803 | /local-pkg/0.4.1: 2804 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} 2805 | engines: {node: '>=14'} 2806 | dev: true 2807 | 2808 | /locate-path/2.0.0: 2809 | resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} 2810 | engines: {node: '>=4'} 2811 | dependencies: 2812 | p-locate: 2.0.0 2813 | path-exists: 3.0.0 2814 | dev: true 2815 | 2816 | /locate-path/6.0.0: 2817 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2818 | engines: {node: '>=10'} 2819 | dependencies: 2820 | p-locate: 5.0.0 2821 | dev: true 2822 | 2823 | /lodash.merge/4.6.2: 2824 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2825 | dev: true 2826 | 2827 | /lodash.once/4.1.1: 2828 | resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} 2829 | dev: true 2830 | 2831 | /lodash/4.17.21: 2832 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2833 | dev: true 2834 | 2835 | /log-symbols/4.1.0: 2836 | resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} 2837 | engines: {node: '>=10'} 2838 | dependencies: 2839 | chalk: 4.1.2 2840 | is-unicode-supported: 0.1.0 2841 | dev: true 2842 | 2843 | /log-update/4.0.0: 2844 | resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} 2845 | engines: {node: '>=10'} 2846 | dependencies: 2847 | ansi-escapes: 4.3.2 2848 | cli-cursor: 3.1.0 2849 | slice-ansi: 4.0.0 2850 | wrap-ansi: 6.2.0 2851 | dev: true 2852 | 2853 | /loupe/2.3.4: 2854 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} 2855 | dependencies: 2856 | get-func-name: 2.0.0 2857 | dev: true 2858 | 2859 | /lru-cache/6.0.0: 2860 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2861 | engines: {node: '>=10'} 2862 | dependencies: 2863 | yallist: 4.0.0 2864 | dev: true 2865 | 2866 | /lz-string/1.4.4: 2867 | resolution: {integrity: sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=} 2868 | hasBin: true 2869 | dev: true 2870 | 2871 | /make-dir/3.1.0: 2872 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2873 | engines: {node: '>=8'} 2874 | dependencies: 2875 | semver: 6.3.0 2876 | dev: true 2877 | 2878 | /merge-anything/5.0.2: 2879 | resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} 2880 | engines: {node: '>=12.13'} 2881 | dependencies: 2882 | is-what: 4.1.7 2883 | ts-toolbelt: 9.6.0 2884 | dev: true 2885 | 2886 | /merge-stream/2.0.0: 2887 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2888 | dev: true 2889 | 2890 | /merge2/1.4.1: 2891 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2892 | engines: {node: '>= 8'} 2893 | dev: true 2894 | 2895 | /micromatch/4.0.5: 2896 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2897 | engines: {node: '>=8.6'} 2898 | dependencies: 2899 | braces: 3.0.2 2900 | picomatch: 2.3.1 2901 | dev: true 2902 | 2903 | /mime-db/1.52.0: 2904 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2905 | engines: {node: '>= 0.6'} 2906 | dev: true 2907 | 2908 | /mime-types/2.1.35: 2909 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2910 | engines: {node: '>= 0.6'} 2911 | dependencies: 2912 | mime-db: 1.52.0 2913 | dev: true 2914 | 2915 | /mimic-fn/2.1.0: 2916 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2917 | engines: {node: '>=6'} 2918 | dev: true 2919 | 2920 | /minimatch/3.1.2: 2921 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2922 | dependencies: 2923 | brace-expansion: 1.1.11 2924 | dev: true 2925 | 2926 | /minimist/1.2.6: 2927 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2928 | dev: true 2929 | 2930 | /mkdirp/1.0.4: 2931 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 2932 | engines: {node: '>=10'} 2933 | hasBin: true 2934 | dev: true 2935 | 2936 | /motion/10.7.0: 2937 | resolution: {integrity: sha512-O6eMDzspPnTcU3IfmwZl8uY5t6DndbJEEnWBw+OqZSCLeSaDs4+gB0JnvqFkyrGl8vpE9H3UrRD5RDy1Z3TZmw==} 2938 | dependencies: 2939 | '@motionone/animation': 10.7.0 2940 | '@motionone/dom': 10.7.0 2941 | '@motionone/react': 10.7.0 2942 | '@motionone/svelte': 10.7.0 2943 | '@motionone/vue': 10.7.0 2944 | transitivePeerDependencies: 2945 | - react 2946 | - react-dom 2947 | dev: true 2948 | 2949 | /ms/2.0.0: 2950 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 2951 | dev: true 2952 | 2953 | /ms/2.1.2: 2954 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2955 | dev: true 2956 | 2957 | /ms/2.1.3: 2958 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2959 | dev: true 2960 | 2961 | /nanoid/3.3.2: 2962 | resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} 2963 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2964 | hasBin: true 2965 | dev: true 2966 | 2967 | /nanospinner/1.0.0: 2968 | resolution: {integrity: sha512-14c2r2QQ9xfTmdbqdF51FKCNvww+0ZON9GeEHur+pBdOufoFvxD4CZQRaYWmFrGH3Nuv7PZ/9Q+wsV+hFSp32g==} 2969 | dependencies: 2970 | picocolors: 1.0.0 2971 | dev: true 2972 | 2973 | /natural-compare/1.4.0: 2974 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2975 | dev: true 2976 | 2977 | /node-releases/2.0.2: 2978 | resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} 2979 | dev: true 2980 | 2981 | /normalize-path/3.0.0: 2982 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2983 | engines: {node: '>=0.10.0'} 2984 | dev: true 2985 | 2986 | /npm-run-path/4.0.1: 2987 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2988 | engines: {node: '>=8'} 2989 | dependencies: 2990 | path-key: 3.1.1 2991 | dev: true 2992 | 2993 | /nwsapi/2.2.0: 2994 | resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} 2995 | dev: true 2996 | 2997 | /object-inspect/1.12.0: 2998 | resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} 2999 | dev: true 3000 | 3001 | /object-keys/1.1.1: 3002 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 3003 | engines: {node: '>= 0.4'} 3004 | dev: true 3005 | 3006 | /object.assign/4.1.2: 3007 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 3008 | engines: {node: '>= 0.4'} 3009 | dependencies: 3010 | call-bind: 1.0.2 3011 | define-properties: 1.1.3 3012 | has-symbols: 1.0.3 3013 | object-keys: 1.1.1 3014 | dev: true 3015 | 3016 | /object.values/1.1.5: 3017 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 3018 | engines: {node: '>= 0.4'} 3019 | dependencies: 3020 | call-bind: 1.0.2 3021 | define-properties: 1.1.3 3022 | es-abstract: 1.19.2 3023 | dev: true 3024 | 3025 | /once/1.4.0: 3026 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 3027 | dependencies: 3028 | wrappy: 1.0.2 3029 | dev: true 3030 | 3031 | /onetime/5.1.2: 3032 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 3033 | engines: {node: '>=6'} 3034 | dependencies: 3035 | mimic-fn: 2.1.0 3036 | dev: true 3037 | 3038 | /optionator/0.8.3: 3039 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 3040 | engines: {node: '>= 0.8.0'} 3041 | dependencies: 3042 | deep-is: 0.1.4 3043 | fast-levenshtein: 2.0.6 3044 | levn: 0.3.0 3045 | prelude-ls: 1.1.2 3046 | type-check: 0.3.2 3047 | word-wrap: 1.2.3 3048 | dev: true 3049 | 3050 | /optionator/0.9.1: 3051 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 3052 | engines: {node: '>= 0.8.0'} 3053 | dependencies: 3054 | deep-is: 0.1.4 3055 | fast-levenshtein: 2.0.6 3056 | levn: 0.4.1 3057 | prelude-ls: 1.2.1 3058 | type-check: 0.4.0 3059 | word-wrap: 1.2.3 3060 | dev: true 3061 | 3062 | /ospath/1.2.2: 3063 | resolution: {integrity: sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=} 3064 | dev: true 3065 | 3066 | /p-limit/1.3.0: 3067 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 3068 | engines: {node: '>=4'} 3069 | dependencies: 3070 | p-try: 1.0.0 3071 | dev: true 3072 | 3073 | /p-limit/3.1.0: 3074 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 3075 | engines: {node: '>=10'} 3076 | dependencies: 3077 | yocto-queue: 0.1.0 3078 | dev: true 3079 | 3080 | /p-locate/2.0.0: 3081 | resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} 3082 | engines: {node: '>=4'} 3083 | dependencies: 3084 | p-limit: 1.3.0 3085 | dev: true 3086 | 3087 | /p-locate/5.0.0: 3088 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 3089 | engines: {node: '>=10'} 3090 | dependencies: 3091 | p-limit: 3.1.0 3092 | dev: true 3093 | 3094 | /p-map/4.0.0: 3095 | resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} 3096 | engines: {node: '>=10'} 3097 | dependencies: 3098 | aggregate-error: 3.1.0 3099 | dev: true 3100 | 3101 | /p-try/1.0.0: 3102 | resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} 3103 | engines: {node: '>=4'} 3104 | dev: true 3105 | 3106 | /parent-module/1.0.1: 3107 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 3108 | engines: {node: '>=6'} 3109 | dependencies: 3110 | callsites: 3.1.0 3111 | dev: true 3112 | 3113 | /parse5/6.0.1: 3114 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 3115 | dev: true 3116 | 3117 | /path-exists/3.0.0: 3118 | resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} 3119 | engines: {node: '>=4'} 3120 | dev: true 3121 | 3122 | /path-exists/4.0.0: 3123 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 3124 | engines: {node: '>=8'} 3125 | dev: true 3126 | 3127 | /path-is-absolute/1.0.1: 3128 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 3129 | engines: {node: '>=0.10.0'} 3130 | dev: true 3131 | 3132 | /path-key/3.1.1: 3133 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3134 | engines: {node: '>=8'} 3135 | dev: true 3136 | 3137 | /path-parse/1.0.7: 3138 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 3139 | dev: true 3140 | 3141 | /path-type/4.0.0: 3142 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 3143 | engines: {node: '>=8'} 3144 | dev: true 3145 | 3146 | /pathval/1.1.1: 3147 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 3148 | dev: true 3149 | 3150 | /pend/1.2.0: 3151 | resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} 3152 | dev: true 3153 | 3154 | /performance-now/2.1.0: 3155 | resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} 3156 | dev: true 3157 | 3158 | /picocolors/1.0.0: 3159 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 3160 | dev: true 3161 | 3162 | /picomatch/2.3.1: 3163 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 3164 | engines: {node: '>=8.6'} 3165 | dev: true 3166 | 3167 | /pify/2.3.0: 3168 | resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} 3169 | engines: {node: '>=0.10.0'} 3170 | dev: true 3171 | 3172 | /postcss/8.4.12: 3173 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} 3174 | engines: {node: ^10 || ^12 || >=14} 3175 | dependencies: 3176 | nanoid: 3.3.2 3177 | picocolors: 1.0.0 3178 | source-map-js: 1.0.2 3179 | dev: true 3180 | 3181 | /prelude-ls/1.1.2: 3182 | resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} 3183 | engines: {node: '>= 0.8.0'} 3184 | dev: true 3185 | 3186 | /prelude-ls/1.2.1: 3187 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3188 | engines: {node: '>= 0.8.0'} 3189 | dev: true 3190 | 3191 | /prettier-linter-helpers/1.0.0: 3192 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 3193 | engines: {node: '>=6.0.0'} 3194 | dependencies: 3195 | fast-diff: 1.2.0 3196 | dev: true 3197 | 3198 | /prettier/2.6.1: 3199 | resolution: {integrity: sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==} 3200 | engines: {node: '>=10.13.0'} 3201 | hasBin: true 3202 | dev: true 3203 | 3204 | /pretty-bytes/5.6.0: 3205 | resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} 3206 | engines: {node: '>=6'} 3207 | dev: true 3208 | 3209 | /pretty-format/26.6.2: 3210 | resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} 3211 | engines: {node: '>= 10'} 3212 | dependencies: 3213 | '@jest/types': 26.6.2 3214 | ansi-regex: 5.0.1 3215 | ansi-styles: 4.3.0 3216 | react-is: 17.0.2 3217 | dev: true 3218 | 3219 | /proxy-from-env/1.0.0: 3220 | resolution: {integrity: sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=} 3221 | dev: true 3222 | 3223 | /psl/1.8.0: 3224 | resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} 3225 | dev: true 3226 | 3227 | /pump/3.0.0: 3228 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 3229 | dependencies: 3230 | end-of-stream: 1.4.4 3231 | once: 1.4.0 3232 | dev: true 3233 | 3234 | /punycode/2.1.1: 3235 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 3236 | engines: {node: '>=6'} 3237 | dev: true 3238 | 3239 | /qs/6.5.3: 3240 | resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} 3241 | engines: {node: '>=0.6'} 3242 | dev: true 3243 | 3244 | /queue-microtask/1.2.3: 3245 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3246 | dev: true 3247 | 3248 | /react-is/17.0.2: 3249 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 3250 | dev: true 3251 | 3252 | /readdirp/3.6.0: 3253 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3254 | engines: {node: '>=8.10.0'} 3255 | dependencies: 3256 | picomatch: 2.3.1 3257 | dev: true 3258 | 3259 | /regenerator-runtime/0.13.9: 3260 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 3261 | dev: true 3262 | 3263 | /regexpp/3.2.0: 3264 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 3265 | engines: {node: '>=8'} 3266 | dev: true 3267 | 3268 | /request-progress/3.0.0: 3269 | resolution: {integrity: sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=} 3270 | dependencies: 3271 | throttleit: 1.0.0 3272 | dev: true 3273 | 3274 | /require-directory/2.1.1: 3275 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 3276 | engines: {node: '>=0.10.0'} 3277 | dev: true 3278 | 3279 | /resolve-from/4.0.0: 3280 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3281 | engines: {node: '>=4'} 3282 | dev: true 3283 | 3284 | /resolve/1.22.0: 3285 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 3286 | hasBin: true 3287 | dependencies: 3288 | is-core-module: 2.8.1 3289 | path-parse: 1.0.7 3290 | supports-preserve-symlinks-flag: 1.0.0 3291 | dev: true 3292 | 3293 | /restore-cursor/3.1.0: 3294 | resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} 3295 | engines: {node: '>=8'} 3296 | dependencies: 3297 | onetime: 5.1.2 3298 | signal-exit: 3.0.7 3299 | dev: true 3300 | 3301 | /reusify/1.0.4: 3302 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3303 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3304 | dev: true 3305 | 3306 | /rfdc/1.3.0: 3307 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 3308 | dev: true 3309 | 3310 | /rimraf/3.0.2: 3311 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3312 | hasBin: true 3313 | dependencies: 3314 | glob: 7.2.0 3315 | dev: true 3316 | 3317 | /rollup/2.70.1: 3318 | resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} 3319 | engines: {node: '>=10.0.0'} 3320 | hasBin: true 3321 | optionalDependencies: 3322 | fsevents: 2.3.2 3323 | dev: true 3324 | 3325 | /run-parallel/1.2.0: 3326 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3327 | dependencies: 3328 | queue-microtask: 1.2.3 3329 | dev: true 3330 | 3331 | /rxjs/7.5.5: 3332 | resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} 3333 | dependencies: 3334 | tslib: 2.3.1 3335 | dev: true 3336 | 3337 | /safe-buffer/5.1.2: 3338 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 3339 | dev: true 3340 | 3341 | /safer-buffer/2.1.2: 3342 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 3343 | dev: true 3344 | 3345 | /saxes/5.0.1: 3346 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 3347 | engines: {node: '>=10'} 3348 | dependencies: 3349 | xmlchars: 2.2.0 3350 | dev: true 3351 | 3352 | /semver/6.3.0: 3353 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 3354 | hasBin: true 3355 | dev: true 3356 | 3357 | /semver/7.3.5: 3358 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 3359 | engines: {node: '>=10'} 3360 | hasBin: true 3361 | dependencies: 3362 | lru-cache: 6.0.0 3363 | dev: true 3364 | 3365 | /shebang-command/2.0.0: 3366 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3367 | engines: {node: '>=8'} 3368 | dependencies: 3369 | shebang-regex: 3.0.0 3370 | dev: true 3371 | 3372 | /shebang-regex/3.0.0: 3373 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3374 | engines: {node: '>=8'} 3375 | dev: true 3376 | 3377 | /side-channel/1.0.4: 3378 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3379 | dependencies: 3380 | call-bind: 1.0.2 3381 | get-intrinsic: 1.1.1 3382 | object-inspect: 1.12.0 3383 | dev: true 3384 | 3385 | /signal-exit/3.0.7: 3386 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 3387 | dev: true 3388 | 3389 | /size-limit/7.0.8: 3390 | resolution: {integrity: sha512-3h76c9E0e/nNhYLSR7IBI/bSoXICeo7EYkYjlyVqNIsu7KvN/PQmMbIXeyd2QKIF8iZKhaiZQoXLkGWbyPDtvQ==} 3391 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 3392 | hasBin: true 3393 | dependencies: 3394 | bytes-iec: 3.1.1 3395 | chokidar: 3.5.3 3396 | ci-job-number: 1.2.2 3397 | globby: 11.1.0 3398 | lilconfig: 2.0.5 3399 | mkdirp: 1.0.4 3400 | nanospinner: 1.0.0 3401 | picocolors: 1.0.0 3402 | dev: true 3403 | 3404 | /slash/3.0.0: 3405 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3406 | engines: {node: '>=8'} 3407 | dev: true 3408 | 3409 | /slice-ansi/3.0.0: 3410 | resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} 3411 | engines: {node: '>=8'} 3412 | dependencies: 3413 | ansi-styles: 4.3.0 3414 | astral-regex: 2.0.0 3415 | is-fullwidth-code-point: 3.0.0 3416 | dev: true 3417 | 3418 | /slice-ansi/4.0.0: 3419 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 3420 | engines: {node: '>=10'} 3421 | dependencies: 3422 | ansi-styles: 4.3.0 3423 | astral-regex: 2.0.0 3424 | is-fullwidth-code-point: 3.0.0 3425 | dev: true 3426 | 3427 | /solid-js/1.3.13: 3428 | resolution: {integrity: sha512-1EBEIW9u2yqT5QNjFdvz/tMAoKsDdaRA2Jbgykd2Dt13Ia0D4mV+BFvPkOaseSyu7DsMKS23+ZZofV8BVKmpuQ==} 3429 | dev: true 3430 | 3431 | /solid-refresh/0.4.0_solid-js@1.3.13: 3432 | resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} 3433 | peerDependencies: 3434 | solid-js: ^1.3.0 3435 | dependencies: 3436 | '@babel/generator': 7.17.7 3437 | '@babel/helper-module-imports': 7.16.7 3438 | '@babel/types': 7.17.0 3439 | solid-js: 1.3.13 3440 | dev: true 3441 | 3442 | /solid-testing-library/0.3.0_solid-js@1.3.13: 3443 | resolution: {integrity: sha512-6NWVbySNVzyReBm2N6p3eF8bzxRZXHZTAmPix4vFWYol16QWVjNQsEUxvr+ZOutb0yuMZmNuGx3b6WIJYmjwMQ==} 3444 | engines: {node: '>= 14'} 3445 | peerDependencies: 3446 | solid-js: '>=1.0.0' 3447 | dependencies: 3448 | '@testing-library/dom': 7.31.2 3449 | solid-js: 1.3.13 3450 | dev: true 3451 | 3452 | /source-map-js/1.0.2: 3453 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3454 | engines: {node: '>=0.10.0'} 3455 | dev: true 3456 | 3457 | /source-map/0.5.7: 3458 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 3459 | engines: {node: '>=0.10.0'} 3460 | dev: true 3461 | 3462 | /source-map/0.6.1: 3463 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3464 | engines: {node: '>=0.10.0'} 3465 | dev: true 3466 | optional: true 3467 | 3468 | /source-map/0.7.3: 3469 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 3470 | engines: {node: '>= 8'} 3471 | dev: true 3472 | 3473 | /sshpk/1.17.0: 3474 | resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} 3475 | engines: {node: '>=0.10.0'} 3476 | hasBin: true 3477 | dependencies: 3478 | asn1: 0.2.6 3479 | assert-plus: 1.0.0 3480 | bcrypt-pbkdf: 1.0.2 3481 | dashdash: 1.14.1 3482 | ecc-jsbn: 0.1.2 3483 | getpass: 0.1.7 3484 | jsbn: 0.1.1 3485 | safer-buffer: 2.1.2 3486 | tweetnacl: 0.14.5 3487 | dev: true 3488 | 3489 | /string-width/4.2.3: 3490 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3491 | engines: {node: '>=8'} 3492 | dependencies: 3493 | emoji-regex: 8.0.0 3494 | is-fullwidth-code-point: 3.0.0 3495 | strip-ansi: 6.0.1 3496 | dev: true 3497 | 3498 | /string.prototype.trimend/1.0.4: 3499 | resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} 3500 | dependencies: 3501 | call-bind: 1.0.2 3502 | define-properties: 1.1.3 3503 | dev: true 3504 | 3505 | /string.prototype.trimstart/1.0.4: 3506 | resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} 3507 | dependencies: 3508 | call-bind: 1.0.2 3509 | define-properties: 1.1.3 3510 | dev: true 3511 | 3512 | /strip-ansi/6.0.1: 3513 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3514 | engines: {node: '>=8'} 3515 | dependencies: 3516 | ansi-regex: 5.0.1 3517 | dev: true 3518 | 3519 | /strip-bom/3.0.0: 3520 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 3521 | engines: {node: '>=4'} 3522 | dev: true 3523 | 3524 | /strip-final-newline/2.0.0: 3525 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 3526 | engines: {node: '>=6'} 3527 | dev: true 3528 | 3529 | /strip-json-comments/3.1.1: 3530 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3531 | engines: {node: '>=8'} 3532 | dev: true 3533 | 3534 | /supports-color/5.5.0: 3535 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3536 | engines: {node: '>=4'} 3537 | dependencies: 3538 | has-flag: 3.0.0 3539 | dev: true 3540 | 3541 | /supports-color/7.2.0: 3542 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3543 | engines: {node: '>=8'} 3544 | dependencies: 3545 | has-flag: 4.0.0 3546 | dev: true 3547 | 3548 | /supports-color/8.1.1: 3549 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 3550 | engines: {node: '>=10'} 3551 | dependencies: 3552 | has-flag: 4.0.0 3553 | dev: true 3554 | 3555 | /supports-preserve-symlinks-flag/1.0.0: 3556 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3557 | engines: {node: '>= 0.4'} 3558 | dev: true 3559 | 3560 | /symbol-tree/3.2.4: 3561 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 3562 | dev: true 3563 | 3564 | /test-exclude/6.0.0: 3565 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 3566 | engines: {node: '>=8'} 3567 | dependencies: 3568 | '@istanbuljs/schema': 0.1.3 3569 | glob: 7.2.0 3570 | minimatch: 3.1.2 3571 | dev: true 3572 | 3573 | /text-table/0.2.0: 3574 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 3575 | dev: true 3576 | 3577 | /throttleit/1.0.0: 3578 | resolution: {integrity: sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=} 3579 | dev: true 3580 | 3581 | /through/2.3.8: 3582 | resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} 3583 | dev: true 3584 | 3585 | /tinypool/0.1.2: 3586 | resolution: {integrity: sha512-fvtYGXoui2RpeMILfkvGIgOVkzJEGediv8UJt7TxdAOY8pnvUkFg/fkvqTfXG9Acc9S17Cnn1S4osDc2164guA==} 3587 | engines: {node: '>=14.0.0'} 3588 | dev: true 3589 | 3590 | /tinyspy/0.3.0: 3591 | resolution: {integrity: sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==} 3592 | engines: {node: '>=14.0.0'} 3593 | dev: true 3594 | 3595 | /tmp/0.2.1: 3596 | resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} 3597 | engines: {node: '>=8.17.0'} 3598 | dependencies: 3599 | rimraf: 3.0.2 3600 | dev: true 3601 | 3602 | /to-fast-properties/2.0.0: 3603 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 3604 | engines: {node: '>=4'} 3605 | dev: true 3606 | 3607 | /to-regex-range/5.0.1: 3608 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3609 | engines: {node: '>=8.0'} 3610 | dependencies: 3611 | is-number: 7.0.0 3612 | dev: true 3613 | 3614 | /tough-cookie/2.5.0: 3615 | resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} 3616 | engines: {node: '>=0.8'} 3617 | dependencies: 3618 | psl: 1.8.0 3619 | punycode: 2.1.1 3620 | dev: true 3621 | 3622 | /tough-cookie/4.0.0: 3623 | resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} 3624 | engines: {node: '>=6'} 3625 | dependencies: 3626 | psl: 1.8.0 3627 | punycode: 2.1.1 3628 | universalify: 0.1.2 3629 | dev: true 3630 | 3631 | /tr46/3.0.0: 3632 | resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} 3633 | engines: {node: '>=12'} 3634 | dependencies: 3635 | punycode: 2.1.1 3636 | dev: true 3637 | 3638 | /ts-toolbelt/9.6.0: 3639 | resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} 3640 | dev: true 3641 | 3642 | /tsconfig-paths/3.14.1: 3643 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 3644 | dependencies: 3645 | '@types/json5': 0.0.29 3646 | json5: 1.0.1 3647 | minimist: 1.2.6 3648 | strip-bom: 3.0.0 3649 | dev: true 3650 | 3651 | /tslib/1.14.1: 3652 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3653 | dev: true 3654 | 3655 | /tslib/2.3.1: 3656 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 3657 | dev: true 3658 | 3659 | /tsutils/3.21.0_typescript@4.6.3: 3660 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 3661 | engines: {node: '>= 6'} 3662 | peerDependencies: 3663 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 3664 | dependencies: 3665 | tslib: 1.14.1 3666 | typescript: 4.6.3 3667 | dev: true 3668 | 3669 | /tunnel-agent/0.6.0: 3670 | resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} 3671 | dependencies: 3672 | safe-buffer: 5.1.2 3673 | dev: true 3674 | 3675 | /tweetnacl/0.14.5: 3676 | resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} 3677 | dev: true 3678 | 3679 | /type-check/0.3.2: 3680 | resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} 3681 | engines: {node: '>= 0.8.0'} 3682 | dependencies: 3683 | prelude-ls: 1.1.2 3684 | dev: true 3685 | 3686 | /type-check/0.4.0: 3687 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3688 | engines: {node: '>= 0.8.0'} 3689 | dependencies: 3690 | prelude-ls: 1.2.1 3691 | dev: true 3692 | 3693 | /type-detect/4.0.8: 3694 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3695 | engines: {node: '>=4'} 3696 | dev: true 3697 | 3698 | /type-fest/0.20.2: 3699 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3700 | engines: {node: '>=10'} 3701 | dev: true 3702 | 3703 | /type-fest/0.21.3: 3704 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 3705 | engines: {node: '>=10'} 3706 | dev: true 3707 | 3708 | /typescript/4.6.3: 3709 | resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} 3710 | engines: {node: '>=4.2.0'} 3711 | hasBin: true 3712 | dev: true 3713 | 3714 | /unbox-primitive/1.0.1: 3715 | resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} 3716 | dependencies: 3717 | function-bind: 1.1.1 3718 | has-bigints: 1.0.1 3719 | has-symbols: 1.0.3 3720 | which-boxed-primitive: 1.0.2 3721 | dev: true 3722 | 3723 | /universalify/0.1.2: 3724 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 3725 | engines: {node: '>= 4.0.0'} 3726 | dev: true 3727 | 3728 | /universalify/2.0.0: 3729 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 3730 | engines: {node: '>= 10.0.0'} 3731 | dev: true 3732 | 3733 | /untildify/4.0.0: 3734 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} 3735 | engines: {node: '>=8'} 3736 | dev: true 3737 | 3738 | /uri-js/4.4.1: 3739 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3740 | dependencies: 3741 | punycode: 2.1.1 3742 | dev: true 3743 | 3744 | /uuid/8.3.2: 3745 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 3746 | hasBin: true 3747 | dev: true 3748 | 3749 | /v8-compile-cache/2.3.0: 3750 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 3751 | dev: true 3752 | 3753 | /v8-to-istanbul/8.1.1: 3754 | resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} 3755 | engines: {node: '>=10.12.0'} 3756 | dependencies: 3757 | '@types/istanbul-lib-coverage': 2.0.4 3758 | convert-source-map: 1.8.0 3759 | source-map: 0.7.3 3760 | dev: true 3761 | 3762 | /verror/1.10.0: 3763 | resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} 3764 | engines: {'0': node >=0.6.0} 3765 | dependencies: 3766 | assert-plus: 1.0.0 3767 | core-util-is: 1.0.2 3768 | extsprintf: 1.3.0 3769 | dev: true 3770 | 3771 | /vite-plugin-solid/2.2.6: 3772 | resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==} 3773 | dependencies: 3774 | '@babel/core': 7.17.8 3775 | '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 3776 | babel-preset-solid: 1.3.13_@babel+core@7.17.8 3777 | merge-anything: 5.0.2 3778 | solid-js: 1.3.13 3779 | solid-refresh: 0.4.0_solid-js@1.3.13 3780 | vite: 2.9.1 3781 | transitivePeerDependencies: 3782 | - less 3783 | - sass 3784 | - stylus 3785 | - supports-color 3786 | dev: true 3787 | 3788 | /vite/2.9.1: 3789 | resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} 3790 | engines: {node: '>=12.2.0'} 3791 | hasBin: true 3792 | peerDependencies: 3793 | less: '*' 3794 | sass: '*' 3795 | stylus: '*' 3796 | peerDependenciesMeta: 3797 | less: 3798 | optional: true 3799 | sass: 3800 | optional: true 3801 | stylus: 3802 | optional: true 3803 | dependencies: 3804 | esbuild: 0.14.29 3805 | postcss: 8.4.12 3806 | resolve: 1.22.0 3807 | rollup: 2.70.1 3808 | optionalDependencies: 3809 | fsevents: 2.3.2 3810 | dev: true 3811 | 3812 | /vitest/0.8.4_c8@7.11.0+jsdom@19.0.0: 3813 | resolution: {integrity: sha512-1OoAG1+VYkzp4WLCVQFRJX/OKk70rsMIM5H23crfc1wSEnJvHlxgQBS1HPpV/VYmjC8bIInKWhnB4Gaw32MnyQ==} 3814 | engines: {node: '>=v14.16.0'} 3815 | hasBin: true 3816 | peerDependencies: 3817 | '@vitest/ui': '*' 3818 | c8: '*' 3819 | happy-dom: '*' 3820 | jsdom: '*' 3821 | peerDependenciesMeta: 3822 | '@vitest/ui': 3823 | optional: true 3824 | c8: 3825 | optional: true 3826 | happy-dom: 3827 | optional: true 3828 | jsdom: 3829 | optional: true 3830 | dependencies: 3831 | '@types/chai': 4.3.0 3832 | '@types/chai-subset': 1.3.3 3833 | c8: 7.11.0 3834 | chai: 4.3.6 3835 | jsdom: 19.0.0 3836 | local-pkg: 0.4.1 3837 | tinypool: 0.1.2 3838 | tinyspy: 0.3.0 3839 | vite: 2.9.1 3840 | transitivePeerDependencies: 3841 | - less 3842 | - sass 3843 | - stylus 3844 | dev: true 3845 | 3846 | /w3c-hr-time/1.0.2: 3847 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 3848 | dependencies: 3849 | browser-process-hrtime: 1.0.0 3850 | dev: true 3851 | 3852 | /w3c-xmlserializer/3.0.0: 3853 | resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} 3854 | engines: {node: '>=12'} 3855 | dependencies: 3856 | xml-name-validator: 4.0.0 3857 | dev: true 3858 | 3859 | /webidl-conversions/7.0.0: 3860 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 3861 | engines: {node: '>=12'} 3862 | dev: true 3863 | 3864 | /whatwg-encoding/2.0.0: 3865 | resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} 3866 | engines: {node: '>=12'} 3867 | dependencies: 3868 | iconv-lite: 0.6.3 3869 | dev: true 3870 | 3871 | /whatwg-mimetype/3.0.0: 3872 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 3873 | engines: {node: '>=12'} 3874 | dev: true 3875 | 3876 | /whatwg-url/10.0.0: 3877 | resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} 3878 | engines: {node: '>=12'} 3879 | dependencies: 3880 | tr46: 3.0.0 3881 | webidl-conversions: 7.0.0 3882 | dev: true 3883 | 3884 | /which-boxed-primitive/1.0.2: 3885 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3886 | dependencies: 3887 | is-bigint: 1.0.4 3888 | is-boolean-object: 1.1.2 3889 | is-number-object: 1.0.6 3890 | is-string: 1.0.7 3891 | is-symbol: 1.0.4 3892 | dev: true 3893 | 3894 | /which/2.0.2: 3895 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3896 | engines: {node: '>= 8'} 3897 | hasBin: true 3898 | dependencies: 3899 | isexe: 2.0.0 3900 | dev: true 3901 | 3902 | /word-wrap/1.2.3: 3903 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3904 | engines: {node: '>=0.10.0'} 3905 | dev: true 3906 | 3907 | /wrap-ansi/6.2.0: 3908 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 3909 | engines: {node: '>=8'} 3910 | dependencies: 3911 | ansi-styles: 4.3.0 3912 | string-width: 4.2.3 3913 | strip-ansi: 6.0.1 3914 | dev: true 3915 | 3916 | /wrap-ansi/7.0.0: 3917 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3918 | engines: {node: '>=10'} 3919 | dependencies: 3920 | ansi-styles: 4.3.0 3921 | string-width: 4.2.3 3922 | strip-ansi: 6.0.1 3923 | dev: true 3924 | 3925 | /wrappy/1.0.2: 3926 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 3927 | dev: true 3928 | 3929 | /ws/8.5.0: 3930 | resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} 3931 | engines: {node: '>=10.0.0'} 3932 | peerDependencies: 3933 | bufferutil: ^4.0.1 3934 | utf-8-validate: ^5.0.2 3935 | peerDependenciesMeta: 3936 | bufferutil: 3937 | optional: true 3938 | utf-8-validate: 3939 | optional: true 3940 | dev: true 3941 | 3942 | /xml-name-validator/4.0.0: 3943 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 3944 | engines: {node: '>=12'} 3945 | dev: true 3946 | 3947 | /xmlchars/2.2.0: 3948 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 3949 | dev: true 3950 | 3951 | /y18n/5.0.8: 3952 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3953 | engines: {node: '>=10'} 3954 | dev: true 3955 | 3956 | /yallist/4.0.0: 3957 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3958 | dev: true 3959 | 3960 | /yargs-parser/20.2.9: 3961 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 3962 | engines: {node: '>=10'} 3963 | dev: true 3964 | 3965 | /yargs/16.2.0: 3966 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 3967 | engines: {node: '>=10'} 3968 | dependencies: 3969 | cliui: 7.0.4 3970 | escalade: 3.1.1 3971 | get-caller-file: 2.0.5 3972 | require-directory: 2.1.1 3973 | string-width: 4.2.3 3974 | y18n: 5.0.8 3975 | yargs-parser: 20.2.9 3976 | dev: true 3977 | 3978 | /yauzl/2.10.0: 3979 | resolution: {integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=} 3980 | dependencies: 3981 | buffer-crc32: 0.2.13 3982 | fd-slicer: 1.1.0 3983 | dev: true 3984 | 3985 | /yocto-queue/0.1.0: 3986 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3987 | engines: {node: '>=10'} 3988 | dev: true 3989 | --------------------------------------------------------------------------------