├── .prettierignore ├── README.md ├── src ├── runtime │ ├── index.ts │ ├── internal │ │ ├── index.ts │ │ ├── invalidate.ts │ │ ├── schedule.ts │ │ └── dom.ts │ └── tsconfig.json └── compiler │ ├── parse │ ├── index.ts │ ├── script.ts │ ├── body.ts │ └── tags.ts │ ├── tsconfig.json │ ├── components │ ├── index.ts │ ├── Block.ts │ ├── Component.ts │ ├── Fragment.ts │ └── EachBlock.ts │ ├── index.ts │ ├── render.ts │ ├── interfaces.ts │ └── utils.ts ├── .prettierrc ├── TODO.md ├── .gitignore ├── tsconfig.json ├── generate-types.js ├── LICENSE ├── package.json ├── rollup.config.js └── pnpm-lock.yaml /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚀 Albio 2 | 3 | Under construction 4 | -------------------------------------------------------------------------------- /src/runtime/index.ts: -------------------------------------------------------------------------------- 1 | export { $$invalidate, $$text, $$set_data } from './internal/index'; 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "singleQuote": true, 4 | "printWidth": 80 5 | } 6 | -------------------------------------------------------------------------------- /src/compiler/parse/index.ts: -------------------------------------------------------------------------------- 1 | export * from './body'; 2 | export * from './script'; 3 | export * from './tags'; 4 | -------------------------------------------------------------------------------- /src/runtime/internal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dom'; 2 | export * from './invalidate'; 3 | export * from './schedule'; 4 | -------------------------------------------------------------------------------- /src/compiler/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["."], 4 | 5 | "compilerOptions": { 6 | "lib": ["es2017", "webworker"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | - [x] Basic event listener binding 2 | - [x] Parse reactive declarations and statements 3 | - [ ] Codegen 4 | - [ ] keep track of all places in markup with references to binding 5 | 6 | -------------------------------------------------------------------------------- /src/compiler/components/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Component } from './Component'; 2 | export { default as BlockComponent } from './Block'; 3 | export { default as EachBlockComponent } from './EachBlock'; 4 | export { default as Fragment } from './Fragment'; 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | .vscode 4 | node_modules 5 | *.map 6 | /src/compiler/compile/internal_exports.ts 7 | /compiler.d.ts 8 | /compiler.*js 9 | /index.*js 10 | /internal 11 | /scratch/ 12 | /test/*/samples/_ 13 | /yarn-error.log 14 | _actual*.* 15 | _output 16 | /types 17 | .eslintcache 18 | /*.html 19 | dist -------------------------------------------------------------------------------- /src/runtime/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["."], 4 | 5 | "compilerOptions": { 6 | "lib": ["esnext", "dom", "dom.iterable"], 7 | "target": "esnext", 8 | "types": [], 9 | 10 | "baseUrl": ".", 11 | "paths": { 12 | "albio/*": ["*"] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/compiler/index.ts: -------------------------------------------------------------------------------- 1 | // 2 | // /\ | | | (_) 3 | // / \ | | |__ _ ___ 4 | // / /\ \ | | '_ \| |/ _ \ 5 | // / ____ \| | |_) | | (_) | 6 | // /_/ \_\_|_.__/|_|\___/ 7 | // 8 | 9 | export * from './parse/index'; 10 | export * from './components/index'; 11 | export { default as Renderer } from './render'; 12 | export { 13 | type ChildNode, 14 | type ParentNode, 15 | Element, 16 | Text, 17 | Comment, 18 | } from 'domhandler'; 19 | -------------------------------------------------------------------------------- /src/runtime/internal/invalidate.ts: -------------------------------------------------------------------------------- 1 | import { scheduleUpdate } from './schedule'; 2 | 3 | export function $$invalidate( 4 | dirty: number[], 5 | toDirty: number[], 6 | ret: any, 7 | update: (...args: any) => void, 8 | ): any { 9 | toDirty.forEach((i) => { 10 | if (dirty[(i / 31) | 0] === -1) { 11 | scheduleUpdate(() => { 12 | return update(dirty); 13 | }); 14 | dirty.fill(0); 15 | } 16 | dirty[(i / 31) | 0] |= 1 << i % 31; 17 | }); 18 | 19 | return ret; 20 | } 21 | -------------------------------------------------------------------------------- /src/runtime/internal/schedule.ts: -------------------------------------------------------------------------------- 1 | let update_scheduled = false; 2 | const resolved_promise = Promise.resolve(); 3 | const workQueue: (() => void)[] = []; 4 | 5 | export function scheduleUpdate(update: () => void): void { 6 | if (!update_scheduled) { 7 | update_scheduled = true; 8 | workQueue.push(update); 9 | resolved_promise.then(flush); 10 | } 11 | } 12 | 13 | export function flush(): void { 14 | while (workQueue.length) { 15 | const work = workQueue.shift(); 16 | if (work) work(); 17 | } 18 | update_scheduled = false; 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [], 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "lib": ["es2017"], 6 | "target": "es2017", 7 | "declaration": true, 8 | "declarationDir": "types", 9 | "noEmitOnError": true, 10 | "noErrorTruncation": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "allowSyntheticDefaultImports": true, 15 | "noImplicitAny": true, 16 | "stripInternal": true, 17 | "noImplicitThis": true, 18 | "noUnusedLocals": false, 19 | "noUnusedParameters": true, 20 | "typeRoots": ["./node_modules/@types"] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /generate-types.js: -------------------------------------------------------------------------------- 1 | // This script generates the TypeScript definitions 2 | 3 | const { execSync } = require('child_process'); 4 | const { readFileSync, writeFileSync } = require('fs'); 5 | 6 | try { 7 | execSync('tsc -p src/compiler --emitDeclarationOnly && tsc -p src/runtime --emitDeclarationOnly'); 8 | } catch (err) { 9 | console.error(err.stderr.toString()); 10 | throw err; 11 | } 12 | function modify(path, modifyFn) { 13 | const content = readFileSync(path, 'utf8'); 14 | writeFileSync(path, modifyFn(content)); 15 | } 16 | modify( 17 | 'types/compiler/index.d.ts', 18 | content => content + '\nexport * from "./interfaces"' 19 | ); 20 | 21 | -------------------------------------------------------------------------------- /src/runtime/internal/dom.ts: -------------------------------------------------------------------------------- 1 | export function $$element(node: any): any { 2 | return document.createElement(node); 3 | } 4 | 5 | export function $$set_data(text: Text, data: any): void { 6 | data = '' + data; 7 | if (text.wholeText !== data) text.data = data; 8 | } 9 | 10 | export function $$set_attr_data(el: any, attr: string, data: any): void { 11 | data = '' + data; 12 | el[attr] = data; 13 | } 14 | 15 | export function $$text(data: any): Text { 16 | return document.createTextNode(data); 17 | } 18 | 19 | export function $$detach(node: any) { 20 | if (node.parentNode) { 21 | node.parentNode.removeChild(node); 22 | } 23 | } 24 | 25 | export function $$toggle_class(el: any, name: string, toggle: boolean) { 26 | el.classList[toggle ? 'add' : 'remove'](name); 27 | } 28 | -------------------------------------------------------------------------------- /src/compiler/components/Block.ts: -------------------------------------------------------------------------------- 1 | import { Node } from 'estree'; 2 | import { ASTNode, Block, BlockType } from '../interfaces'; 3 | import { parse_html } from '../parse'; 4 | import Component from './Component'; 5 | 6 | export default abstract class BlockComponent extends Component { 7 | type: BlockType; 8 | start_node: ASTNode; 9 | end_node: ASTNode; 10 | index: number; 11 | 12 | constructor(block: Block) { 13 | super(parse_html(block.chunk)); 14 | this.index = block.index; 15 | this.start_node = parse_html([block.start_node]).nodes[0]; 16 | this.end_node = parse_html([block.end_node]).nodes[0]; 17 | this.root_entities = this.all_entities.filter( 18 | (node) => node.parent === this.start_node.parent, 19 | ); 20 | this.child_entities = this.all_entities.filter( 21 | (node) => node.parent !== this.start_node.parent, 22 | ); 23 | this.type = block.nodeType; 24 | } 25 | 26 | abstract render(...args: any): Node; 27 | } 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Melinda Chang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/compiler/parse/script.ts: -------------------------------------------------------------------------------- 1 | import { Props, ReactiveStatement } from '../interfaces'; 2 | import { fetch_object, parse } from '../utils'; 3 | import { print, x } from 'code-red'; 4 | import { 5 | Identifier, 6 | Node, 7 | Statement, 8 | VariableDeclaration, 9 | Program, 10 | } from 'estree'; 11 | import { Element, Text } from 'domhandler'; 12 | import { analyze, extract_names } from 'periscopic'; 13 | 14 | export function parse_code(scripts: Element[]) { 15 | let source = ''; 16 | let linkedModules: Element[] = []; 17 | 18 | scripts.forEach((script) => { 19 | const i = Object.keys(script.attribs).findIndex((key) => key === 'src'); 20 | if (i === -1) { 21 | source += (script.childNodes[0] as Text).data; 22 | } else { 23 | linkedModules.push(script); 24 | } 25 | }); 26 | return { source, linkedModules }; 27 | } 28 | 29 | export function get_program(source: string) { 30 | const program = parse(source) as any as Program; 31 | return program; 32 | } 33 | 34 | export function extract_scripts(ast: Program) { 35 | let props: Props = {}; 36 | let reactives: ReactiveStatement[] = []; 37 | let residuals: Node[] = []; 38 | 39 | ast.body.forEach((node) => { 40 | switch (node.type) { 41 | case 'ExportNamedDeclaration': 42 | (node.declaration as VariableDeclaration).declarations.forEach( 43 | (declarator) => { 44 | props[(declarator.id as Identifier).name] = declarator.init 45 | ? print(x`${declarator.init}`).code 46 | : undefined; 47 | }, 48 | ); 49 | break; 50 | case 'LabeledStatement': 51 | if (node.label.name === '#') { 52 | const { scope } = analyze(node); 53 | reactives.push({ chunk: node.body, deps: [...scope.references] }); 54 | } 55 | break; 56 | default: 57 | residuals.push(node); 58 | } 59 | }); 60 | 61 | return { props, reactives, residuals }; 62 | } 63 | -------------------------------------------------------------------------------- /src/compiler/components/Component.ts: -------------------------------------------------------------------------------- 1 | import { x } from 'code-red'; 2 | import { Node, Expression } from 'estree'; 3 | import { ASTNode, Binding, Listener, Reference } from '../interfaces'; 4 | import { CompilerParams } from '../interfaces'; 5 | 6 | type BitMask = { 7 | n: number; 8 | names: string[]; 9 | }; 10 | 11 | export default abstract class Component { 12 | all_entities: ASTNode[]; 13 | root_entities: ASTNode[]; 14 | child_entities: ASTNode[]; 15 | bindings: Binding[]; 16 | listeners: Listener[]; 17 | references: Reference[]; 18 | class_references: Reference[]; 19 | identifiers: string[]; 20 | 21 | constructor(parsed: CompilerParams) { 22 | this.all_entities = parsed.nodes; 23 | this.listeners = parsed.listeners; 24 | this.references = parsed.references.filter((r) => !r.type); 25 | this.class_references = parsed.references.filter((r) => r.type === 'class'); 26 | this.identifiers = parsed.nodes.map((node) => 27 | [node.type[0], node.index].join(''), 28 | ); 29 | this.bindings = parsed.nodes.filter( 30 | (node) => node.type === 'Binding', 31 | ) as Binding[]; 32 | } 33 | 34 | abstract populate_deps(...args: any): void; 35 | abstract render_handler_func(...args: any): Node[]; 36 | dirty(names: string[], props: string[]): Expression { 37 | const get_bitmask = () => { 38 | const bitmask: BitMask[] = []; 39 | names.forEach((name) => { 40 | const val = props.indexOf(name); 41 | const i = (val / 31) | 0; 42 | const n = 1 << val % 31; 43 | 44 | if (!bitmask[i]) bitmask[i] = { n: 0, names: [] }; 45 | 46 | bitmask[i].n |= n; 47 | bitmask[i].names.push(name); 48 | }); 49 | return bitmask; 50 | }; 51 | const bitmask = get_bitmask(); 52 | return bitmask 53 | .map((b, i) => ({ b, i })) 54 | .filter(({ b }) => b) 55 | .map(({ b, i }) => x`$$dirty[${i}] & ${b.n}`) 56 | .reduce((left, right) => x`${left} | ${right}`); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/compiler/render.ts: -------------------------------------------------------------------------------- 1 | import { b, print } from 'code-red'; 2 | import { Node } from 'estree'; 3 | import { BlockComponent, Fragment } from './components'; 4 | import { destringify } from './utils'; 5 | import util from 'util'; 6 | 7 | export default class Renderer { 8 | fragment: Fragment; 9 | blocks: BlockComponent[]; 10 | ast: Node[]; 11 | 12 | constructor(fragment: Fragment, blocks: BlockComponent[]) { 13 | this.fragment = fragment; 14 | this.blocks = blocks; 15 | this.ast = []; 16 | } 17 | 18 | render_instance(): Node[] { 19 | const base_dirty = []; 20 | const numProps = Object.keys(this.fragment.props).length; 21 | for (let i = 0; i < numProps / 31 + (numProps % 1 === 0 ? 0 : 1); i++) 22 | base_dirty.push(-1); 23 | this.ast = b` 24 | 25 | let {${Object.keys(this.fragment.props).join(',')}} = ${util.inspect( 26 | Object.fromEntries( 27 | Object.entries(this.fragment.props).map(([k, v]) => [ 28 | k, 29 | destringify(v), 30 | ]), 31 | ), 32 | )} 33 | 34 | let $$dirty = [${base_dirty.join(',')}] 35 | ${this.fragment.residuals} 36 | 37 | 38 | ${this.fragment.references 39 | .filter((r) => r.assoc_events) 40 | .map((r) => 41 | this.fragment.render_handler_func( 42 | this.fragment.identifiers[r.index], 43 | r, 44 | r.assoc_events, 45 | ), 46 | )} 47 | 48 | ${this.blocks.map((block) => 49 | block.references 50 | .filter((r) => r.assoc_events) 51 | .map((r) => 52 | block.render_handler_func( 53 | block.identifiers[r.index], 54 | r, 55 | r.assoc_events, 56 | this.fragment.props, 57 | ), 58 | ), 59 | )} 60 | 61 | 62 | ${this.fragment.render_fragment(this.blocks)} 63 | ${this.blocks.map((block) => 64 | block.render(Object.keys(this.fragment.props)), 65 | )} 66 | 67 | 68 | export const app = create_fragment() 69 | `; 70 | return this.ast; 71 | } 72 | 73 | ast_to_string(): string { 74 | return print(this.ast as any as Node).code; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/compiler/interfaces.ts: -------------------------------------------------------------------------------- 1 | import { AnyNode } from 'domhandler'; 2 | import { LabeledStatement, Node, Statement } from 'estree'; 3 | import { Component } from './components'; 4 | 5 | export type ASTNode = BaseNode | TextTag | ElementTag | Binding | CommentTag; 6 | export type BlockType = 'each' | 'if' | 'else'; 7 | 8 | /** 9 | * Maybe include start and end location in parsing instead of index so that you can incorporate blocks 10 | * Compiler $$invalidate function should pass in an array of update functions for every component with 11 | * the reassigned variable as a dependency 12 | */ 13 | 14 | interface BaseNode { 15 | index: number; 16 | name?: string; 17 | type: string; 18 | parent?: ASTNode; 19 | children?: ASTNode[]; 20 | next?: ASTNode; 21 | prev?: ASTNode; 22 | startIndex: number | null; 23 | endIndex: number | null; 24 | } 25 | 26 | export interface Block { 27 | index: number; 28 | nodeType: BlockType; 29 | parent: AnyNode; 30 | start_node: AnyNode; 31 | end_node: AnyNode | null; 32 | chunk: AnyNode[]; 33 | } 34 | 35 | export interface EachBlock extends Block { 36 | nodeType: 'each'; 37 | } 38 | 39 | export interface IfBlock extends Block { 40 | nodeType: 'if'; 41 | } 42 | 43 | export interface ElseBlock extends Block { 44 | nodeType: 'else'; 45 | linkedIfBlock: Block; 46 | } 47 | 48 | export interface TextTag extends BaseNode { 49 | type: 'Text'; 50 | value: string; 51 | } 52 | 53 | export interface ElementTag extends BaseNode { 54 | type: 'Element'; 55 | attrs?: { 56 | [key: string]: string; 57 | }; 58 | } 59 | 60 | export interface CommentTag extends BaseNode { 61 | type: 'Comment'; 62 | value: string; 63 | } 64 | 65 | export interface Binding extends BaseNode { 66 | type: 'Binding'; 67 | default_value: string; 68 | data: string; 69 | deps: string[]; 70 | } 71 | 72 | export interface Props { 73 | [key: string]: any; 74 | } 75 | 76 | export interface Listener { 77 | index: number; 78 | event: string; 79 | handler: string; 80 | } 81 | 82 | export interface Reference { 83 | type?: string; 84 | index: number; 85 | var: string; 86 | ref: string; 87 | assoc_events?: string[]; 88 | deps?: string[]; 89 | } 90 | 91 | export interface CompilerParams { 92 | nodes: ASTNode[]; 93 | listeners: Listener[]; 94 | references: Reference[]; 95 | props?: Props; 96 | reactives?: ReactiveStatement[]; 97 | residuals?: Node[]; 98 | blocks?: Component[]; 99 | } 100 | 101 | export interface ReactiveStatement { 102 | chunk: Statement; 103 | deps: string[]; 104 | } 105 | 106 | export interface IterableKey { 107 | name: string; 108 | variableRef: string; 109 | } 110 | -------------------------------------------------------------------------------- /src/compiler/parse/body.ts: -------------------------------------------------------------------------------- 1 | import { readFileSync } from 'fs'; 2 | import { parseFragment } from 'parse5'; 3 | import { adapter } from 'parse5-htmlparser2-tree-adapter'; 4 | import { 5 | ChildNode, 6 | Document, 7 | Element, 8 | hasChildren, 9 | type AnyNode, 10 | } from 'domhandler'; 11 | import { Block, BlockType } from '../interfaces'; 12 | 13 | export const extract_fragment = (path: string) => { 14 | const source = path.endsWith('.html') 15 | ? readFileSync(path, { encoding: 'utf8' }) 16 | : path; 17 | const fragment: Document = parseFragment(source, { 18 | treeAdapter: adapter, 19 | sourceCodeLocationInfo: true, 20 | }); 21 | const script: Element[] = []; 22 | const tags: AnyNode[] = []; 23 | const blocks: Block[] = []; 24 | 25 | const extract_blocks = (child: ChildNode) => { 26 | if (hasChildren(child)) { 27 | child.children.forEach((gchild) => extract_blocks(gchild)); 28 | } else { 29 | if (child.type === 'text') { 30 | if (child.data.includes('{#')) { 31 | const nodeType: string = child.data.split('{#')[1].split(' ')[0]; 32 | blocks.push({ 33 | index: blocks.length, 34 | nodeType: nodeType as BlockType, 35 | parent: child.parent, 36 | start_node: child, 37 | end_node: null, 38 | chunk: [], 39 | }); 40 | } else if (child.data.includes('{/')) { 41 | const nodeType: string = child.data.split('{/')[1].split('}')[0]; 42 | const i = blocks.reverse().findIndex((b) => b.nodeType === nodeType); 43 | blocks[i].end_node = child; 44 | } 45 | } 46 | } 47 | }; 48 | 49 | fragment.children.forEach((child) => { 50 | extract_blocks(child); 51 | child.type === 'script' ? script.push(child) : tags.push(child); 52 | }); 53 | 54 | for (let i = tags.length - 1; i >= 0; i--) { 55 | const extract_chunk = (b: Block, tag: AnyNode, parentArr = tags) => { 56 | if (tag.parent === b.start_node.parent) { 57 | const ind = parentArr.indexOf(tag); 58 | if ( 59 | tag.startIndex >= b.start_node.endIndex && 60 | tag.endIndex <= b.end_node.startIndex 61 | ) { 62 | b.chunk.push(tag); 63 | parentArr.splice(ind, 1); 64 | } else if (b.start_node === tag || b.end_node === tag) { 65 | parentArr.splice(ind, 1); 66 | } 67 | } else if (hasChildren(tag)) { 68 | for (let j = tag.children.length - 1; j >= 0; j--) { 69 | extract_chunk(b, tag.children[j], tag.children); 70 | } 71 | } 72 | }; 73 | 74 | blocks.forEach((b) => { 75 | extract_chunk(b, tags[i]); 76 | }); 77 | } 78 | 79 | return { script, tags, blocks }; 80 | }; 81 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "albio", 3 | "version": "1.0.58", 4 | "description": "🚀 Tiny compiler-powered reactivity library for sensible web apps", 5 | "main": "index", 6 | "module": "index.mjs", 7 | "files": [ 8 | "compiler.*", 9 | "index.*", 10 | "internal", 11 | "types" 12 | ], 13 | "exports": { 14 | "./package.json": "./package.json", 15 | ".": { 16 | "types": "./types/runtime/index.d.ts", 17 | "browser": { 18 | "import": "./index.mjs", 19 | "require": "./index.js" 20 | }, 21 | "import": "./index.mjs", 22 | "require": "./index.js" 23 | }, 24 | "./compiler": { 25 | "types": "./types/compiler/index.d.ts", 26 | "import": "./compiler.mjs", 27 | "require": "./compiler.js" 28 | }, 29 | "./internal": { 30 | "types": "./types/runtime/internal/index.d.ts", 31 | "import": "./internal/index.mjs", 32 | "require": "./internal/index.js" 33 | } 34 | }, 35 | "types": "types/runtime/index.d.ts", 36 | "engines": { 37 | "node": ">= 8" 38 | }, 39 | "scripts": { 40 | "build": "rollup -c && pnpm tsd", 41 | "tsd": "node ./generate-types.js", 42 | "dev": "rollup -cw", 43 | "test": "jest --silent --runInBand", 44 | "cleanup": "prettier --write src --parser typescript", 45 | "lint": "eslint \"{src,test}/**/*.{ts,js}\" --cache" 46 | }, 47 | "repository": { 48 | "type": "git", 49 | "url": "git+https://github.com/melindachang/albio.git" 50 | }, 51 | "keywords": [ 52 | "framework", 53 | "library", 54 | "templating", 55 | "reactivity", 56 | "UI" 57 | ], 58 | "author": "Melinda Chang ", 59 | "license": "MIT", 60 | "bugs": { 61 | "url": "https://github.com/melindachang/albio/issues" 62 | }, 63 | "homepage": "https://github.com/melindachang/albio#readme", 64 | "devDependencies": { 65 | "@jest/types": "^29.3.1", 66 | "@rollup/plugin-commonjs": "^24.0.0", 67 | "@rollup/plugin-json": "^6.0.0", 68 | "@rollup/plugin-node-resolve": "^15.0.1", 69 | "@rollup/plugin-replace": "^5.0.2", 70 | "@rollup/plugin-strip": "^3.0.2", 71 | "@rollup/plugin-sucrase": "^5.0.1", 72 | "@rollup/plugin-typescript": "^10.0.1", 73 | "@swc-node/jest": "^1.5.6", 74 | "@swc/core": "^1.3.25", 75 | "@types/estree": "0.0.50", 76 | "@types/jest": "^27.5.2", 77 | "@types/js-beautify": "^1.13.3", 78 | "@types/node": "^16.18.11", 79 | "acorn": "^8.8.1", 80 | "code-red": "^0.2.5", 81 | "domhandler": "^5.0.3", 82 | "estree-walker": "^3.0.2", 83 | "jest-cli": "^29.3.1", 84 | "parse5": "^7.1.2", 85 | "parse5-htmlparser2-tree-adapter": "^7.0.0", 86 | "periscopic": "^3.0.4", 87 | "prettier": "^2.8.2", 88 | "rimraf": "^3.0.2", 89 | "rollup": "^2.79.1", 90 | "ts-node": "^10.9.1", 91 | "tsc-alias": "^1.8.2", 92 | "typescript": "^4.9.4" 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import replace from '@rollup/plugin-replace'; 3 | import resolve from '@rollup/plugin-node-resolve'; 4 | import commonjs from '@rollup/plugin-commonjs'; 5 | import json from '@rollup/plugin-json'; 6 | import sucrase from '@rollup/plugin-sucrase'; 7 | import pkg from './package.json'; 8 | 9 | const external = (id) => id.startsWith('albio/'); 10 | 11 | const ts_plugin = sucrase({ 12 | transforms: ['typescript'], 13 | }); 14 | 15 | fs.writeFileSync(`./compiler.d.ts`, `export * from './types/compiler/index';`); 16 | 17 | export default [ 18 | { 19 | input: `src/runtime/index.ts`, 20 | output: [ 21 | { 22 | file: `index.mjs`, 23 | format: 'esm', 24 | paths: (id) => id.startsWith('albio/') && `${id.replace('albio', '.')}/index.mjs`, 25 | }, 26 | { 27 | file: `index.js`, 28 | format: 'cjs', 29 | paths: (id) => id.startsWith('albio/') && `${id.replace('albio', '.')}/index.js`, 30 | }, 31 | ], 32 | external, 33 | plugins: [ts_plugin], 34 | }, 35 | 36 | ...fs 37 | .readdirSync('src/runtime') 38 | .filter((dir) => fs.statSync(`src/runtime/${dir}`).isDirectory()) 39 | .map((dir) => ({ 40 | input: `src/runtime/${dir}/index.ts`, 41 | output: [ 42 | { 43 | file: `${dir}/index.mjs`, 44 | format: 'esm', 45 | paths: (id) => id.startsWith('albio/') && `${id.replace('albio', '..')}/index.mjs`, 46 | }, 47 | { 48 | file: `${dir}/index.js`, 49 | format: 'cjs', 50 | paths: (id) => id.startsWith('albio/') && `${id.replace('albio', '..')}/index.js`, 51 | }, 52 | ], 53 | external, 54 | plugins: [ 55 | replace({ 56 | __VERSION__: pkg.version, 57 | }), 58 | ts_plugin, 59 | { 60 | writeBundle() { 61 | fs.writeFileSync( 62 | `${dir}/package.json`, 63 | JSON.stringify( 64 | { 65 | main: './index', 66 | module: './index.mjs', 67 | types: './index.d.ts', 68 | }, 69 | null, 70 | ' ', 71 | ), 72 | ); 73 | fs.writeFileSync(`${dir}/index.d.ts`, `export * from '../types/runtime/${dir}/index';`); 74 | }, 75 | }, 76 | ], 77 | })), 78 | 79 | { 80 | input: 'src/compiler/index.ts', 81 | plugins: [ 82 | replace({ 83 | __VERSION__: pkg.version, 84 | }), 85 | resolve(), 86 | commonjs({ 87 | include: ['node_modules/**'], 88 | }), 89 | json(), 90 | ts_plugin, 91 | ], 92 | output: [ 93 | { 94 | file: 'compiler.js', 95 | format: 'cjs', 96 | name: 'albio', 97 | sourcemap: true, 98 | }, 99 | { 100 | file: 'compiler.mjs', 101 | format: 'esm', 102 | name: 'albio', 103 | sourcemap: true, 104 | }, 105 | ], 106 | }, 107 | ]; 108 | -------------------------------------------------------------------------------- /src/compiler/utils.ts: -------------------------------------------------------------------------------- 1 | import { Node, Identifier, CallExpression, Expression } from 'estree'; 2 | import { ASTNode, Binding, ElementTag, Reference, TextTag } from './interfaces'; 3 | import * as code_red from 'code-red'; 4 | import { walk } from 'estree-walker'; 5 | 6 | export const parse = (source: string): Node => 7 | code_red.parse(source, { 8 | sourceType: 'module', 9 | ecmaVersion: 12, 10 | locations: true, 11 | }); 12 | 13 | export function is_reference(item: Reference | Binding): item is Reference { 14 | return (item as Reference).var !== undefined; 15 | } 16 | 17 | export function has_arguments(call: string) { 18 | const exp = parse(call); 19 | let args = false; 20 | walk(exp, { 21 | enter(node) { 22 | if ( 23 | node.type === 'CallExpression' && 24 | (node as CallExpression).arguments.length 25 | ) 26 | args = true; 27 | }, 28 | }); 29 | return args; 30 | } 31 | 32 | export function generate_toggle_class_str( 33 | identifiers: string[], 34 | ref: Reference, 35 | ): Node { 36 | return code_red.x`$$toggle_class(${identifiers[ref.index]}, "${ref.var}", ${ 37 | ref.ref 38 | })`; 39 | } 40 | 41 | export function get_associated_events(bound: string): string[] { 42 | switch (bound) { 43 | case 'value': 44 | return ['input']; 45 | case 'checked': 46 | return ['change']; 47 | default: 48 | return []; 49 | } 50 | } 51 | 52 | export function fetch_object(node: Node): Identifier { 53 | while (node.type === 'MemberExpression') node = node.object; 54 | return node as Identifier; 55 | } 56 | 57 | export function destringify(str: string): string { 58 | return eval(`(function() {return ${str}})()`); 59 | } 60 | 61 | export function generate_node_str( 62 | identifiers: string[], 63 | node: ASTNode, 64 | ): Node[] { 65 | const identifier = identifiers[node.index]; 66 | switch (node.type) { 67 | case 'Text': 68 | return code_red.b`${identifier} = $$text("${(node as TextTag).value}")`; 69 | case 'Binding': 70 | return code_red.b`${identifier}_value = $$text(${ 71 | (node as Binding).data 72 | })\n${identifier} = $$text(${identifier}_value.data)`; 73 | default: 74 | return code_red.b`${identifier} = $$element("${node.name}")`; 75 | } 76 | } 77 | 78 | export function generate_attr_str( 79 | identifiers: string[], 80 | node: ASTNode, 81 | ): Node[] { 82 | if (!(node as ElementTag).attrs) return []; 83 | const identifier = identifiers[node.index]; 84 | return Object.entries((node as ElementTag).attrs!).map( 85 | ([name, value]) => 86 | code_red.x`${identifier}.setAttribute("${name}", "${value}")`, 87 | ); 88 | } 89 | 90 | export function render_ref_check( 91 | dirty_exp: Expression, 92 | identifiers: string[], 93 | ref: Reference, 94 | ): Node[] { 95 | switch (ref.var) { 96 | case 'value': { 97 | return code_red.b` 98 | if (${dirty_exp} && ${`${identifiers[ref.index]}.${ref.var}`} !== ${ 99 | ref.ref 100 | }) 101 | $$set_attr_data(${identifiers[ref.index]}, "value", ${ref.ref}) 102 | `; 103 | } 104 | case 'checked': { 105 | return code_red.b` 106 | if (${dirty_exp}) 107 | ${identifiers[ref.index]}.checked = ${ref.ref} 108 | `; 109 | } 110 | default: 111 | return code_red.b``; 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /src/compiler/parse/tags.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Listener, 3 | TextTag, 4 | ElementTag, 5 | type ASTNode, 6 | Binding, 7 | Reference, 8 | } from '../interfaces'; 9 | import { Text, Element, Comment, type AnyNode } from 'domhandler'; 10 | import { get_associated_events } from '../utils'; 11 | 12 | export function parse_tags( 13 | nodes: ASTNode[], 14 | listeners: Listener[], 15 | references: Reference[], 16 | index: number, 17 | tags: AnyNode[], 18 | parent?: ASTNode, 19 | ): number { 20 | tags.forEach((tag) => { 21 | if (tag.type === 'text') { 22 | index = parse_text(nodes, index, tag as Text, parent); 23 | } else if (tag.type === 'comment') { 24 | index = parse_comment(nodes, index, tag as Comment, parent); 25 | } else { 26 | index = parse_element( 27 | nodes, 28 | listeners, 29 | references, 30 | index, 31 | tag as Element, 32 | parent, 33 | ); 34 | } 35 | }); 36 | return index; 37 | } 38 | 39 | export function parse_text( 40 | nodes: ASTNode[], 41 | index: number, 42 | tag: Text, 43 | parent?: ASTNode, 44 | ): number { 45 | let flag = tag.data; 46 | let startCode: number, endCode: number; 47 | 48 | while (true) { 49 | startCode = flag.search('{'); 50 | 51 | if (startCode === 0) { 52 | endCode = flag.lastIndexOf('}'); 53 | index = add_binding( 54 | nodes, 55 | index, 56 | flag.substring(1, endCode), 57 | tag, 58 | parent, 59 | ); 60 | flag = flag.substring(endCode + 1); 61 | if (!flag) break; 62 | } else if (startCode < 0) { 63 | index = add_text(nodes, index, flag, tag, parent); 64 | break; 65 | } else { 66 | index = add_text(nodes, index, flag.substring(0, startCode), tag, parent); 67 | flag = flag.substring(startCode); 68 | } 69 | } 70 | 71 | return index; 72 | } 73 | 74 | export function add_text( 75 | nodes: ASTNode[], 76 | index: number, 77 | value: string, 78 | tag: Text, 79 | parent?: ASTNode, 80 | ): number { 81 | if (index === 0 && value.trim() === '') return index; 82 | 83 | nodes.push({ 84 | index, 85 | type: 'Text', 86 | value, 87 | parent, 88 | startIndex: tag.startIndex, 89 | endIndex: tag.endIndex, 90 | }); 91 | 92 | return index + 1; 93 | } 94 | 95 | export function add_binding( 96 | nodes: ASTNode[], 97 | index: number, 98 | data: string, 99 | tag: AnyNode, 100 | parent?: ASTNode, 101 | ): number { 102 | nodes.push({ 103 | index, 104 | type: 'Binding', 105 | data, 106 | parent, 107 | startIndex: tag.startIndex, 108 | endIndex: tag.endIndex, 109 | } as Binding); 110 | 111 | return index + 1; 112 | } 113 | 114 | export function parse_element( 115 | nodes: ASTNode[], 116 | listeners: Listener[], 117 | references: Reference[], 118 | index: number, 119 | tag: Element, 120 | parent?: ASTNode, 121 | ) { 122 | let attrs: { [key: string]: string } = {}; 123 | 124 | if (tag.attribs) { 125 | Object.entries(tag.attribs).forEach(([k, v]) => { 126 | if (k.match(/^on:/) || k.substring(0, 1).match(/^@/)) { 127 | const div = k.search('@') > -1 ? '@' : ':'; 128 | listeners.push({ 129 | index, 130 | event: k.split(div)[1], 131 | handler: v, 132 | }); 133 | } else if (k.match(/^bind:/) || k.substring(0, 1).match(/^:/)) { 134 | const bound = k.split(':')[1]; 135 | const assoc_events: string[] = get_associated_events(bound); 136 | references.push({ 137 | index, 138 | var: bound, 139 | ref: v, 140 | assoc_events, 141 | }); 142 | } else if (k.match(/^class:/)) { 143 | const bound = k.split(':')[1]; 144 | // Var = Class Name 145 | // Ref = dependent 146 | references.push({ 147 | type: 'class', 148 | index, 149 | var: bound, 150 | ref: v, 151 | }); 152 | } else { 153 | attrs[k] = v; 154 | } 155 | }); 156 | } 157 | 158 | let el: ElementTag = { 159 | index, 160 | type: 'Element', 161 | attrs, 162 | name: tag.name, 163 | parent, 164 | startIndex: tag.startIndex, 165 | endIndex: tag.endIndex, 166 | }; 167 | nodes.push(el); 168 | 169 | return parse_tags(nodes, listeners, references, index + 1, tag.children, el); 170 | } 171 | 172 | export function parse_comment( 173 | nodes: ASTNode[], 174 | index: number, 175 | tag: Comment, 176 | parent?: ASTNode, 177 | ): number { 178 | nodes.push({ 179 | index, 180 | type: 'Comment', 181 | parent, 182 | value: tag.data, 183 | startIndex: tag.startIndex, 184 | endIndex: tag.endIndex, 185 | }); 186 | 187 | return index + 1; 188 | } 189 | 190 | export function prune_trailing_whitespace(nodes: ASTNode[]): void { 191 | let i = nodes.length - 1; 192 | let node = nodes[i]; 193 | 194 | while ( 195 | node.parent === null && 196 | node.type === 'Text' && 197 | (node as TextTag).value.trim() === '' 198 | ) { 199 | nodes.splice(i, 1); 200 | i -= 1; 201 | node = nodes[i]; 202 | } 203 | } 204 | 205 | export function parse_html(tags: AnyNode[]): { 206 | nodes: ASTNode[]; 207 | listeners: Listener[]; 208 | references: Reference[]; 209 | } { 210 | const nodes: ASTNode[] = []; 211 | const listeners: Listener[] = []; 212 | const references: Reference[] = []; 213 | 214 | parse_tags(nodes, listeners, references, 0, tags); 215 | if (nodes.length > 0) prune_trailing_whitespace(nodes); 216 | 217 | return { nodes, listeners, references }; 218 | } 219 | -------------------------------------------------------------------------------- /src/compiler/components/Fragment.ts: -------------------------------------------------------------------------------- 1 | import { 2 | fetch_object, 3 | generate_attr_str, 4 | generate_node_str, 5 | generate_toggle_class_str, 6 | is_reference, 7 | parse, 8 | render_ref_check, 9 | } from '../utils'; 10 | import { Node } from 'estree'; 11 | import { 12 | Binding, 13 | CompilerParams, 14 | Props, 15 | ReactiveStatement, 16 | Reference, 17 | } from '../interfaces'; 18 | import Component from './Component'; 19 | import { analyze, extract_names } from 'periscopic'; 20 | import { walk } from 'estree-walker'; 21 | import { print, x, b } from 'code-red'; 22 | import BlockComponent from './Block'; 23 | import EachBlockComponent from './EachBlock'; 24 | 25 | export default class Fragment extends Component { 26 | reactives: ReactiveStatement[]; 27 | residuals: Node[]; 28 | props: Props; 29 | ast: Node[]; 30 | 31 | constructor(parsed: CompilerParams) { 32 | super(parsed); 33 | this.root_entities = parsed.nodes.filter((node) => !node.parent); 34 | this.child_entities = parsed.nodes.filter((node) => node.parent); 35 | this.reactives = parsed.reactives || []; 36 | this.residuals = parsed.residuals || []; 37 | this.props = parsed.props || {}; 38 | this.ast = []; 39 | this.populate_deps(this.bindings); 40 | this.populate_deps(this.references); 41 | this.populate_deps(this.class_references); 42 | } 43 | 44 | invalidate_residuals(ast: Node): void { 45 | const props: string[] = Object.keys(this.props); 46 | walk(ast, { 47 | enter(node: any) { 48 | let mutated: string[]; 49 | if (node.type === 'AssignmentExpression') { 50 | mutated = extract_names(fetch_object(node.left)); 51 | } else if (node.type === 'UpdateExpression') { 52 | mutated = extract_names(fetch_object(node.argument)); 53 | } 54 | 55 | if (mutated && mutated.some((m) => props.indexOf(m) > -1)) { 56 | this.replace( 57 | x`$$invalidate($$dirty, [${mutated 58 | .map((m) => props.indexOf(m)) 59 | .join(',')}], (${print(node).code}), app.p)`, 60 | ); 61 | } 62 | }, 63 | }); 64 | } 65 | 66 | filter_reactive_deps() { 67 | this.reactives.forEach((r) => { 68 | r.deps = r.deps.filter((d) => Object.keys(this.props).includes(d)); 69 | }); 70 | } 71 | 72 | render_fragment(blocks: BlockComponent[]): Node[] { 73 | this.invalidate_residuals(this.residuals as any as Node); 74 | this.filter_reactive_deps(); 75 | this.ast = b` 76 | 77 | 78 | function create_fragment() { 79 | 80 | let ${this.identifiers 81 | .concat( 82 | this.identifiers 83 | .filter((i) => i.indexOf('B') > -1) 84 | .map((x) => `${x}_value`), 85 | ) 86 | .join(',')} 87 | 88 | ${blocks 89 | .filter((block) => block.type === 'each') 90 | .map( 91 | (block: EachBlockComponent) => 92 | b`let ${block.vars.block_arr_name} = []`, 93 | )} 94 | 95 | ${blocks 96 | .filter((block) => block.type === 'each') 97 | .map((block: EachBlockComponent) => 98 | block.render_each_for(true, block.render_each_populate()), 99 | )} 100 | 101 | let mountPoint; 102 | 103 | return { 104 | c() { 105 | ${this.all_entities.map((node) => 106 | generate_node_str(this.identifiers, node), 107 | )} 108 | ${this.all_entities 109 | .map((node) => generate_attr_str(this.identifiers, node)) 110 | .filter((list) => list.length)} 111 | 112 | 113 | ${blocks 114 | .filter((block) => block.type === 'each') 115 | .map((block: EachBlockComponent) => 116 | block.render_each_for(true, block.render_each_create()), 117 | )} 118 | 119 | ${this.listeners.map( 120 | (listener) => 121 | x`${this.identifiers[listener.index]}.addEventListener("${ 122 | listener.event 123 | }", ${listener.handler})`, 124 | )} 125 | 126 | ${this.class_references.map((r) => 127 | generate_toggle_class_str(this.identifiers, r), 128 | )} 129 | ${this.references 130 | .filter((r) => r.assoc_events) 131 | .map((r) => { 132 | return r.assoc_events.map((e) => { 133 | return x`${ 134 | this.identifiers[r.index] 135 | }.addEventListener("${e}", () => { ${ 136 | this.identifiers[r.index] + 137 | '_handler_' + 138 | e + 139 | `(${this.identifiers[r.index]})` 140 | }})`; 141 | }); 142 | })} 143 | }, 144 | m(target) { 145 | mountPoint = target; 146 | ${this.child_entities.map( 147 | (node) => 148 | x`${this.identifiers[node.parent!.index]}.appendChild(${ 149 | this.identifiers[node.index] 150 | })`, 151 | )} 152 | 153 | ${this.root_entities.map( 154 | (node) => x`target.append(${this.identifiers[node.index]})`, 155 | )} 156 | 157 | ${blocks 158 | .filter((block) => block.type === 'each') 159 | .map((block: EachBlockComponent) => 160 | block.render_each_for( 161 | true, 162 | block.render_each_mount(this.all_entities, this.identifiers), 163 | ), 164 | )} 165 | 166 | ${this.references.map( 167 | (r) => x`${this.identifiers[r.index]}.${r.var} = ${r.ref}`, 168 | )} 169 | 170 | }, 171 | p() { 172 | ${blocks 173 | .filter((block) => block.type === 'each') 174 | .map((block: EachBlockComponent) => { 175 | return b` 176 | if (${this.dirty( 177 | block.vars.unique_deps, 178 | Object.keys(this.props), 179 | )}) { 180 | ${block.render_each_for( 181 | true, 182 | block.render_each_update( 183 | this.all_entities, 184 | this.identifiers, 185 | ), 186 | )} 187 | ${block.render_each_for(false, block.render_each_detach())} 188 | ${block.vars.block_arr_name}.length = ${block.iterable}.length 189 | } 190 | `; 191 | })} 192 | ${this.bindings.map( 193 | (binding) => 194 | b`if (${this.dirty(binding.deps, Object.keys(this.props))} && ${ 195 | this.identifiers[binding.index] + '_value' 196 | } !== (${this.identifiers[binding.index] + '_value'} = (${ 197 | binding.data 198 | }) + '')) $$set_data(${this.identifiers[binding.index]},${ 199 | this.identifiers[binding.index] + '_value' 200 | })`, 201 | )} 202 | 203 | ${this.references.map((r) => 204 | render_ref_check( 205 | this.dirty(r.deps, Object.keys(this.props)), 206 | this.identifiers, 207 | r, 208 | ), 209 | )} 210 | 211 | ${this.class_references.map( 212 | (r) => b` 213 | if (${this.dirty( 214 | r.deps, 215 | Object.keys(this.props), 216 | )}) ${generate_toggle_class_str(this.identifiers, r)} 217 | `, 218 | )} 219 | 220 | ${this.reactives.map( 221 | (r) => 222 | b`if (${this.dirty(r.deps, Object.keys(this.props))}) { ${ 223 | r.chunk 224 | } }`, 225 | )} 226 | 227 | $$dirty.fill(-1) 228 | } 229 | } 230 | }`; 231 | return this.ast; 232 | } 233 | 234 | render_handler_func( 235 | identifier: string, 236 | ref: Reference, 237 | event: string[], 238 | ): Node[] { 239 | let exps: Node[] = []; 240 | event.forEach((e) => { 241 | let func = `${identifier}_handler_${e}`; 242 | exps.push(x` 243 | function ${func}(el) { 244 | ${ref.ref} = el.${ref.var}; 245 | $$invalidate($$dirty, [${ref.deps 246 | .map((d) => Object.keys(this.props).indexOf(d)) 247 | .join(',')}], (${ref.ref}), app.p); 248 | } 249 | `); 250 | }); 251 | return exps; 252 | } 253 | 254 | populate_deps(bindings: Binding[] | Reference[]): void { 255 | bindings.forEach((binding) => { 256 | binding.deps = []; 257 | const expression: Node = is_reference(binding) 258 | ? parse(binding.ref) 259 | : parse(binding.data); 260 | const { scope } = analyze(expression); 261 | [...scope.references].forEach((ref) => binding.deps.push(ref)); 262 | }); 263 | } 264 | } 265 | -------------------------------------------------------------------------------- /src/compiler/components/EachBlock.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ASTNode, 3 | Binding, 4 | EachBlock, 5 | IterableKey, 6 | Props, 7 | Reference, 8 | } from '../interfaces'; 9 | import { 10 | generate_attr_str, 11 | generate_node_str, 12 | generate_toggle_class_str, 13 | is_reference, 14 | parse, 15 | render_ref_check, 16 | } from '../utils'; 17 | import { b, x } from 'code-red'; 18 | import { Node } from 'estree'; 19 | import BlockComponent from './Block'; 20 | import { walk } from 'estree-walker'; 21 | import { analyze } from 'periscopic'; 22 | 23 | export default class EachBlockComponent extends BlockComponent { 24 | tag: string; 25 | iterable: string; 26 | keys: IterableKey[] = []; 27 | vars: { 28 | block_arr_name: string; 29 | create_func_name: string; 30 | unique_deps: string[]; 31 | }; 32 | 33 | constructor(block: EachBlock) { 34 | super(block); 35 | const segments = (this.start_node as Binding).data.split(' '); 36 | this.iterable = segments[1]; 37 | 38 | const regex = /[^\w.-]+/g; 39 | const i = segments.indexOf('as'); 40 | if (segments[i + 1].substring(0, 1).match(regex)) { 41 | const rest = segments.slice(i + 1, segments.length).join(' '); 42 | const exp = parse(rest.substring(0, rest.search('}') + 1)); 43 | const { scope } = analyze(exp); 44 | [...scope.references].forEach((ref) => 45 | this.keys.push({ name: ref, variableRef: `${this.iterable}.${ref}` }), 46 | ); 47 | } else { 48 | const str = segments[i + 1].replace(regex, ''); 49 | this.keys.push({ name: str, variableRef: str }); 50 | } 51 | this.populate_deps(this.bindings, this.keys, this.iterable); 52 | this.populate_deps(this.references, this.keys, this.iterable); 53 | this.populate_deps(this.class_references, this.keys, this.iterable); 54 | const all_deps: string[] = []; 55 | this.bindings 56 | .map((binding) => binding.deps) 57 | .forEach((deps) => all_deps.push(...deps)); 58 | this.vars = { 59 | block_arr_name: `each_block_${this.index}`, 60 | create_func_name: `create_each_block_${this.index}`, 61 | unique_deps: [...new Set(all_deps)], 62 | }; 63 | } 64 | render_each_for(reset: boolean, node: Node | Node[]): Node[] { 65 | const dec = reset ? b`let #i` : ``; 66 | const dec2 = reset ? x`#i = 0` : ``; 67 | const operableLength = reset 68 | ? x`${this.iterable}.length` 69 | : x`${this.vars.block_arr_name}.length`; 70 | return b` 71 | ${dec} 72 | for (${dec2}; #i < ${operableLength}; #i += 1) { 73 | ${node} 74 | } 75 | `; 76 | } 77 | 78 | render_handler_func( 79 | identifier: string, 80 | ref: Reference, 81 | event: string[], 82 | props: Props, 83 | ): Node[] { 84 | let exps: Node[] = []; 85 | event.forEach((e) => { 86 | let func = `${identifier}_handler_${e}`; 87 | let property; 88 | const ast = parse(ref.ref); 89 | walk(ast, { 90 | enter(node) { 91 | if (node.type === 'MemberExpression') 92 | property = (node as any).property.name; 93 | }, 94 | }); 95 | /** TODO: Doesn't work with property literals */ 96 | exps.push(x` 97 | function ${func}(each_value, i) { 98 | ${property ? `each_value[i].${property}` : 'each_value[i]'} = this.${ 99 | ref.var 100 | }; 101 | $$invalidate($$dirty, [${ref.deps 102 | .map((d) => Object.keys(props).indexOf(d)) 103 | .join(',')}], (each_value), app.p); 104 | } 105 | `); 106 | }); 107 | return exps; 108 | } 109 | 110 | render_each_populate(): Node { 111 | return x`${this.vars.block_arr_name}[#i] = ${this.vars.create_func_name}(#i)`; 112 | } 113 | 114 | render_each_create(): Node { 115 | return x`${this.vars.block_arr_name}[#i].c()`; 116 | } 117 | 118 | render_each_mount(nodes: ASTNode[], identifiers: string[]): Node { 119 | return x` 120 | ${this.vars.block_arr_name}[#i].m(${ 121 | this.start_node.parent 122 | ? identifiers[this.start_node.parent.index] 123 | : 'mountPoint' 124 | }, ${ 125 | nodes.some((node) => this.end_node.endIndex === node.startIndex) 126 | ? identifiers[ 127 | nodes.find((node) => this.end_node.endIndex === node.startIndex) 128 | .index 129 | ] 130 | : 'null' 131 | })`; 132 | } 133 | 134 | render_each_update(nodes: ASTNode[], identifiers: string[]): Node[] { 135 | return b` 136 | if (${this.vars.block_arr_name}[#i]) { 137 | ${this.vars.block_arr_name}[#i].p(#i) 138 | } else { 139 | ${this.render_each_populate()} 140 | ${this.render_each_create()} 141 | ${this.render_each_mount(nodes, identifiers)} 142 | } 143 | `; 144 | } 145 | 146 | render_each_detach() { 147 | return x`${this.vars.block_arr_name}[#i].d(1)`; 148 | } 149 | 150 | render_each_current(index?: string): Node { 151 | return x` 152 | ${this.keys 153 | .map( 154 | (key) => 155 | `${key.name} = ${this.iterable}[${index ? index : 'i'}]${ 156 | key.name === key.variableRef ? '' : '.' + key.name 157 | }`, 158 | ) 159 | .join(',')}`; 160 | } 161 | 162 | render(props: string[]): Node { 163 | return x` 164 | function ${this.vars.create_func_name}(i) { 165 | let ${this.render_each_current()} 166 | 167 | let ${this.identifiers 168 | .concat( 169 | this.identifiers 170 | .filter((i) => i.indexOf('B') > -1) 171 | .map((x) => `${x}_value`), 172 | ) 173 | .join(',')} 174 | 175 | return { 176 | c() { 177 | ${this.all_entities.map((node) => 178 | generate_node_str(this.identifiers, node), 179 | )} 180 | 181 | ${this.all_entities 182 | .map((node) => generate_attr_str(this.identifiers, node)) 183 | .filter((list) => list.length > 0)} 184 | 185 | ${this.listeners.map( 186 | (listener) => 187 | x`${this.identifiers[listener.index]}.addEventListener("${ 188 | listener.event 189 | }", ${listener.handler})`, 190 | )} 191 | 192 | ${this.references 193 | .filter((r) => r.assoc_events) 194 | .map((r) => { 195 | return r.assoc_events.map((e) => { 196 | return x`${ 197 | this.identifiers[r.index] 198 | }.addEventListener("${e}", () => { ${ 199 | this.identifiers[r.index] + 200 | '_handler_' + 201 | e + 202 | `.call(${this.identifiers[r.index]}, ${this.iterable}, i)` 203 | }})`; 204 | }); 205 | })} 206 | 207 | 208 | ${this.class_references.map((r) => 209 | generate_toggle_class_str(this.identifiers, r), 210 | )} 211 | 212 | 213 | }, 214 | m(target, anchor) { 215 | ${this.root_entities.map( 216 | (node) => 217 | x`target.insertBefore(${ 218 | this.identifiers[node.index] 219 | }, anchor || null)`, 220 | )} 221 | 222 | ${this.child_entities.map( 223 | (node) => 224 | x`${this.identifiers[node.parent!.index]}.appendChild(${ 225 | this.identifiers[node.index] 226 | })`, 227 | )} 228 | 229 | ${this.references.map( 230 | (r) => x`${this.identifiers[r.index]}.${r.var} = ${r.ref}`, 231 | )} 232 | 233 | }, 234 | p(new_index) { 235 | ${this.render_each_current('new_index')} 236 | 237 | ${this.bindings.map( 238 | (binding) => 239 | b`if (${this.dirty(binding.deps, props)} && ${ 240 | this.identifiers[binding.index] + '_value' 241 | } !== (${this.identifiers[binding.index] + '_value'} = (${ 242 | binding.data 243 | }) + '')) $$set_data(${this.identifiers[binding.index]},${ 244 | this.identifiers[binding.index] + '_value' 245 | })`, 246 | )} 247 | 248 | ${this.references.map((r) => 249 | render_ref_check(this.dirty(r.deps, props), this.identifiers, r), 250 | )} 251 | 252 | ${this.class_references.map( 253 | (r) => b` 254 | if (${this.dirty(r.deps, props)}) ${generate_toggle_class_str( 255 | this.identifiers, 256 | r, 257 | )} 258 | `, 259 | )} 260 | 261 | }, 262 | d(detaching) { 263 | ${this.root_entities.map( 264 | (node) => 265 | b`if (detaching) $$detach(${this.identifiers[node.index]})`, 266 | )} 267 | } 268 | } 269 | } 270 | `; 271 | } 272 | 273 | populate_deps( 274 | bindings: Binding[] | Reference[], 275 | keys: IterableKey[], 276 | iterable: string, 277 | ): void { 278 | bindings.forEach((binding) => { 279 | let deps: Set = new Set(); 280 | const expression: Node = is_reference(binding) 281 | ? parse(binding.ref) 282 | : parse(binding.data); 283 | const { scope } = analyze(expression); 284 | [...scope.references].forEach((ref) => { 285 | keys.map((key) => key.name).includes(ref) 286 | ? deps.add(iterable) 287 | : deps.add(ref); 288 | }); 289 | binding.deps = [...deps]; 290 | }); 291 | } 292 | } 293 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@jest/types': ^29.3.1 5 | '@rollup/plugin-commonjs': ^24.0.0 6 | '@rollup/plugin-json': ^6.0.0 7 | '@rollup/plugin-node-resolve': ^15.0.1 8 | '@rollup/plugin-replace': ^5.0.2 9 | '@rollup/plugin-strip': ^3.0.2 10 | '@rollup/plugin-sucrase': ^5.0.1 11 | '@rollup/plugin-typescript': ^10.0.1 12 | '@swc-node/jest': ^1.5.6 13 | '@swc/core': ^1.3.25 14 | '@types/estree': 0.0.50 15 | '@types/jest': ^27.5.2 16 | '@types/js-beautify': ^1.13.3 17 | '@types/node': ^16.18.11 18 | acorn: ^8.8.1 19 | code-red: ^0.2.5 20 | domhandler: ^5.0.3 21 | estree-walker: ^3.0.2 22 | jest-cli: ^29.3.1 23 | parse5: ^7.1.2 24 | parse5-htmlparser2-tree-adapter: ^7.0.0 25 | periscopic: ^3.0.4 26 | prettier: ^2.8.2 27 | rimraf: ^3.0.2 28 | rollup: ^2.79.1 29 | ts-node: ^10.9.1 30 | tsc-alias: ^1.8.2 31 | typescript: ^4.9.4 32 | 33 | devDependencies: 34 | '@jest/types': 29.3.1 35 | '@rollup/plugin-commonjs': 24.0.0_rollup@2.79.1 36 | '@rollup/plugin-json': 6.0.0_rollup@2.79.1 37 | '@rollup/plugin-node-resolve': 15.0.1_rollup@2.79.1 38 | '@rollup/plugin-replace': 5.0.2_rollup@2.79.1 39 | '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 40 | '@rollup/plugin-sucrase': 5.0.1_rollup@2.79.1 41 | '@rollup/plugin-typescript': 10.0.1_ntuob3xud5wukob6phfmz2mbyy 42 | '@swc-node/jest': 1.5.6_v5ttncapjqsn6w3qkbzxgcggpa 43 | '@swc/core': 1.3.25 44 | '@types/estree': 0.0.50 45 | '@types/jest': 27.5.2 46 | '@types/js-beautify': 1.13.3 47 | '@types/node': 16.18.11 48 | acorn: 8.8.1 49 | code-red: 0.2.5 50 | domhandler: 5.0.3 51 | estree-walker: 3.0.2 52 | jest-cli: 29.3.1_35bb52e3ngsl3trrvg3csiponq 53 | parse5: 7.1.2 54 | parse5-htmlparser2-tree-adapter: 7.0.0 55 | periscopic: 3.0.4 56 | prettier: 2.8.2 57 | rimraf: 3.0.2 58 | rollup: 2.79.1 59 | ts-node: 10.9.1_j6w75qxuvt5djadh2qwj7tbyma 60 | tsc-alias: 1.8.2 61 | typescript: 4.9.4 62 | 63 | packages: 64 | 65 | /@ampproject/remapping/2.2.0: 66 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 67 | engines: {node: '>=6.0.0'} 68 | dependencies: 69 | '@jridgewell/gen-mapping': 0.1.1 70 | '@jridgewell/trace-mapping': 0.3.17 71 | dev: true 72 | 73 | /@babel/code-frame/7.18.6: 74 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 75 | engines: {node: '>=6.9.0'} 76 | dependencies: 77 | '@babel/highlight': 7.18.6 78 | dev: true 79 | 80 | /@babel/compat-data/7.20.10: 81 | resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} 82 | engines: {node: '>=6.9.0'} 83 | dev: true 84 | 85 | /@babel/core/7.20.12: 86 | resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} 87 | engines: {node: '>=6.9.0'} 88 | dependencies: 89 | '@ampproject/remapping': 2.2.0 90 | '@babel/code-frame': 7.18.6 91 | '@babel/generator': 7.20.7 92 | '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 93 | '@babel/helper-module-transforms': 7.20.11 94 | '@babel/helpers': 7.20.7 95 | '@babel/parser': 7.20.7 96 | '@babel/template': 7.20.7 97 | '@babel/traverse': 7.20.12 98 | '@babel/types': 7.20.7 99 | convert-source-map: 1.9.0 100 | debug: 4.3.4 101 | gensync: 1.0.0-beta.2 102 | json5: 2.2.3 103 | semver: 6.3.0 104 | transitivePeerDependencies: 105 | - supports-color 106 | dev: true 107 | 108 | /@babel/generator/7.20.7: 109 | resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} 110 | engines: {node: '>=6.9.0'} 111 | dependencies: 112 | '@babel/types': 7.20.7 113 | '@jridgewell/gen-mapping': 0.3.2 114 | jsesc: 2.5.2 115 | dev: true 116 | 117 | /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: 118 | resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} 119 | engines: {node: '>=6.9.0'} 120 | peerDependencies: 121 | '@babel/core': ^7.0.0 122 | dependencies: 123 | '@babel/compat-data': 7.20.10 124 | '@babel/core': 7.20.12 125 | '@babel/helper-validator-option': 7.18.6 126 | browserslist: 4.21.4 127 | lru-cache: 5.1.1 128 | semver: 6.3.0 129 | dev: true 130 | 131 | /@babel/helper-environment-visitor/7.18.9: 132 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 133 | engines: {node: '>=6.9.0'} 134 | dev: true 135 | 136 | /@babel/helper-function-name/7.19.0: 137 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 138 | engines: {node: '>=6.9.0'} 139 | dependencies: 140 | '@babel/template': 7.20.7 141 | '@babel/types': 7.20.7 142 | dev: true 143 | 144 | /@babel/helper-hoist-variables/7.18.6: 145 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 146 | engines: {node: '>=6.9.0'} 147 | dependencies: 148 | '@babel/types': 7.20.7 149 | dev: true 150 | 151 | /@babel/helper-module-imports/7.18.6: 152 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 153 | engines: {node: '>=6.9.0'} 154 | dependencies: 155 | '@babel/types': 7.20.7 156 | dev: true 157 | 158 | /@babel/helper-module-transforms/7.20.11: 159 | resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} 160 | engines: {node: '>=6.9.0'} 161 | dependencies: 162 | '@babel/helper-environment-visitor': 7.18.9 163 | '@babel/helper-module-imports': 7.18.6 164 | '@babel/helper-simple-access': 7.20.2 165 | '@babel/helper-split-export-declaration': 7.18.6 166 | '@babel/helper-validator-identifier': 7.19.1 167 | '@babel/template': 7.20.7 168 | '@babel/traverse': 7.20.12 169 | '@babel/types': 7.20.7 170 | transitivePeerDependencies: 171 | - supports-color 172 | dev: true 173 | 174 | /@babel/helper-plugin-utils/7.20.2: 175 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 176 | engines: {node: '>=6.9.0'} 177 | dev: true 178 | 179 | /@babel/helper-simple-access/7.20.2: 180 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 181 | engines: {node: '>=6.9.0'} 182 | dependencies: 183 | '@babel/types': 7.20.7 184 | dev: true 185 | 186 | /@babel/helper-split-export-declaration/7.18.6: 187 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 188 | engines: {node: '>=6.9.0'} 189 | dependencies: 190 | '@babel/types': 7.20.7 191 | dev: true 192 | 193 | /@babel/helper-string-parser/7.19.4: 194 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 195 | engines: {node: '>=6.9.0'} 196 | dev: true 197 | 198 | /@babel/helper-validator-identifier/7.19.1: 199 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 200 | engines: {node: '>=6.9.0'} 201 | dev: true 202 | 203 | /@babel/helper-validator-option/7.18.6: 204 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 205 | engines: {node: '>=6.9.0'} 206 | dev: true 207 | 208 | /@babel/helpers/7.20.7: 209 | resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} 210 | engines: {node: '>=6.9.0'} 211 | dependencies: 212 | '@babel/template': 7.20.7 213 | '@babel/traverse': 7.20.12 214 | '@babel/types': 7.20.7 215 | transitivePeerDependencies: 216 | - supports-color 217 | dev: true 218 | 219 | /@babel/highlight/7.18.6: 220 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 221 | engines: {node: '>=6.9.0'} 222 | dependencies: 223 | '@babel/helper-validator-identifier': 7.19.1 224 | chalk: 2.4.2 225 | js-tokens: 4.0.0 226 | dev: true 227 | 228 | /@babel/parser/7.20.7: 229 | resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} 230 | engines: {node: '>=6.0.0'} 231 | hasBin: true 232 | dependencies: 233 | '@babel/types': 7.20.7 234 | dev: true 235 | 236 | /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: 237 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 238 | peerDependencies: 239 | '@babel/core': ^7.0.0-0 240 | dependencies: 241 | '@babel/core': 7.20.12 242 | '@babel/helper-plugin-utils': 7.20.2 243 | dev: true 244 | 245 | /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: 246 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 247 | peerDependencies: 248 | '@babel/core': ^7.0.0-0 249 | dependencies: 250 | '@babel/core': 7.20.12 251 | '@babel/helper-plugin-utils': 7.20.2 252 | dev: true 253 | 254 | /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: 255 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 256 | peerDependencies: 257 | '@babel/core': ^7.0.0-0 258 | dependencies: 259 | '@babel/core': 7.20.12 260 | '@babel/helper-plugin-utils': 7.20.2 261 | dev: true 262 | 263 | /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: 264 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 265 | peerDependencies: 266 | '@babel/core': ^7.0.0-0 267 | dependencies: 268 | '@babel/core': 7.20.12 269 | '@babel/helper-plugin-utils': 7.20.2 270 | dev: true 271 | 272 | /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: 273 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 274 | peerDependencies: 275 | '@babel/core': ^7.0.0-0 276 | dependencies: 277 | '@babel/core': 7.20.12 278 | '@babel/helper-plugin-utils': 7.20.2 279 | dev: true 280 | 281 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: 282 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} 283 | engines: {node: '>=6.9.0'} 284 | peerDependencies: 285 | '@babel/core': ^7.0.0-0 286 | dependencies: 287 | '@babel/core': 7.20.12 288 | '@babel/helper-plugin-utils': 7.20.2 289 | dev: true 290 | 291 | /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: 292 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 293 | peerDependencies: 294 | '@babel/core': ^7.0.0-0 295 | dependencies: 296 | '@babel/core': 7.20.12 297 | '@babel/helper-plugin-utils': 7.20.2 298 | dev: true 299 | 300 | /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: 301 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 302 | peerDependencies: 303 | '@babel/core': ^7.0.0-0 304 | dependencies: 305 | '@babel/core': 7.20.12 306 | '@babel/helper-plugin-utils': 7.20.2 307 | dev: true 308 | 309 | /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: 310 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 311 | peerDependencies: 312 | '@babel/core': ^7.0.0-0 313 | dependencies: 314 | '@babel/core': 7.20.12 315 | '@babel/helper-plugin-utils': 7.20.2 316 | dev: true 317 | 318 | /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: 319 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 320 | peerDependencies: 321 | '@babel/core': ^7.0.0-0 322 | dependencies: 323 | '@babel/core': 7.20.12 324 | '@babel/helper-plugin-utils': 7.20.2 325 | dev: true 326 | 327 | /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: 328 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 329 | peerDependencies: 330 | '@babel/core': ^7.0.0-0 331 | dependencies: 332 | '@babel/core': 7.20.12 333 | '@babel/helper-plugin-utils': 7.20.2 334 | dev: true 335 | 336 | /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: 337 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 338 | peerDependencies: 339 | '@babel/core': ^7.0.0-0 340 | dependencies: 341 | '@babel/core': 7.20.12 342 | '@babel/helper-plugin-utils': 7.20.2 343 | dev: true 344 | 345 | /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: 346 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 347 | engines: {node: '>=6.9.0'} 348 | peerDependencies: 349 | '@babel/core': ^7.0.0-0 350 | dependencies: 351 | '@babel/core': 7.20.12 352 | '@babel/helper-plugin-utils': 7.20.2 353 | dev: true 354 | 355 | /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: 356 | resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} 357 | engines: {node: '>=6.9.0'} 358 | peerDependencies: 359 | '@babel/core': ^7.0.0-0 360 | dependencies: 361 | '@babel/core': 7.20.12 362 | '@babel/helper-plugin-utils': 7.20.2 363 | dev: true 364 | 365 | /@babel/template/7.20.7: 366 | resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} 367 | engines: {node: '>=6.9.0'} 368 | dependencies: 369 | '@babel/code-frame': 7.18.6 370 | '@babel/parser': 7.20.7 371 | '@babel/types': 7.20.7 372 | dev: true 373 | 374 | /@babel/traverse/7.20.12: 375 | resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} 376 | engines: {node: '>=6.9.0'} 377 | dependencies: 378 | '@babel/code-frame': 7.18.6 379 | '@babel/generator': 7.20.7 380 | '@babel/helper-environment-visitor': 7.18.9 381 | '@babel/helper-function-name': 7.19.0 382 | '@babel/helper-hoist-variables': 7.18.6 383 | '@babel/helper-split-export-declaration': 7.18.6 384 | '@babel/parser': 7.20.7 385 | '@babel/types': 7.20.7 386 | debug: 4.3.4 387 | globals: 11.12.0 388 | transitivePeerDependencies: 389 | - supports-color 390 | dev: true 391 | 392 | /@babel/types/7.20.7: 393 | resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} 394 | engines: {node: '>=6.9.0'} 395 | dependencies: 396 | '@babel/helper-string-parser': 7.19.4 397 | '@babel/helper-validator-identifier': 7.19.1 398 | to-fast-properties: 2.0.0 399 | dev: true 400 | 401 | /@bcoe/v8-coverage/0.2.3: 402 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 403 | dev: true 404 | 405 | /@cspotcode/source-map-support/0.8.1: 406 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 407 | engines: {node: '>=12'} 408 | dependencies: 409 | '@jridgewell/trace-mapping': 0.3.9 410 | dev: true 411 | 412 | /@istanbuljs/load-nyc-config/1.1.0: 413 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 414 | engines: {node: '>=8'} 415 | dependencies: 416 | camelcase: 5.3.1 417 | find-up: 4.1.0 418 | get-package-type: 0.1.0 419 | js-yaml: 3.14.1 420 | resolve-from: 5.0.0 421 | dev: true 422 | 423 | /@istanbuljs/schema/0.1.3: 424 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 425 | engines: {node: '>=8'} 426 | dev: true 427 | 428 | /@jest/console/29.3.1: 429 | resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} 430 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 431 | dependencies: 432 | '@jest/types': 29.3.1 433 | '@types/node': 16.18.11 434 | chalk: 4.1.2 435 | jest-message-util: 29.3.1 436 | jest-util: 29.3.1 437 | slash: 3.0.0 438 | dev: true 439 | 440 | /@jest/core/29.3.1_ts-node@10.9.1: 441 | resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} 442 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 443 | peerDependencies: 444 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 445 | peerDependenciesMeta: 446 | node-notifier: 447 | optional: true 448 | dependencies: 449 | '@jest/console': 29.3.1 450 | '@jest/reporters': 29.3.1 451 | '@jest/test-result': 29.3.1 452 | '@jest/transform': 29.3.1 453 | '@jest/types': 29.3.1 454 | '@types/node': 16.18.11 455 | ansi-escapes: 4.3.2 456 | chalk: 4.1.2 457 | ci-info: 3.7.1 458 | exit: 0.1.2 459 | graceful-fs: 4.2.10 460 | jest-changed-files: 29.2.0 461 | jest-config: 29.3.1_35bb52e3ngsl3trrvg3csiponq 462 | jest-haste-map: 29.3.1 463 | jest-message-util: 29.3.1 464 | jest-regex-util: 29.2.0 465 | jest-resolve: 29.3.1 466 | jest-resolve-dependencies: 29.3.1 467 | jest-runner: 29.3.1 468 | jest-runtime: 29.3.1 469 | jest-snapshot: 29.3.1 470 | jest-util: 29.3.1 471 | jest-validate: 29.3.1 472 | jest-watcher: 29.3.1 473 | micromatch: 4.0.5 474 | pretty-format: 29.3.1 475 | slash: 3.0.0 476 | strip-ansi: 6.0.1 477 | transitivePeerDependencies: 478 | - supports-color 479 | - ts-node 480 | dev: true 481 | 482 | /@jest/environment/29.3.1: 483 | resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} 484 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 485 | dependencies: 486 | '@jest/fake-timers': 29.3.1 487 | '@jest/types': 29.3.1 488 | '@types/node': 16.18.11 489 | jest-mock: 29.3.1 490 | dev: true 491 | 492 | /@jest/expect-utils/29.3.1: 493 | resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} 494 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 495 | dependencies: 496 | jest-get-type: 29.2.0 497 | dev: true 498 | 499 | /@jest/expect/29.3.1: 500 | resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} 501 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 502 | dependencies: 503 | expect: 29.3.1 504 | jest-snapshot: 29.3.1 505 | transitivePeerDependencies: 506 | - supports-color 507 | dev: true 508 | 509 | /@jest/fake-timers/29.3.1: 510 | resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} 511 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 512 | dependencies: 513 | '@jest/types': 29.3.1 514 | '@sinonjs/fake-timers': 9.1.2 515 | '@types/node': 16.18.11 516 | jest-message-util: 29.3.1 517 | jest-mock: 29.3.1 518 | jest-util: 29.3.1 519 | dev: true 520 | 521 | /@jest/globals/29.3.1: 522 | resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} 523 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 524 | dependencies: 525 | '@jest/environment': 29.3.1 526 | '@jest/expect': 29.3.1 527 | '@jest/types': 29.3.1 528 | jest-mock: 29.3.1 529 | transitivePeerDependencies: 530 | - supports-color 531 | dev: true 532 | 533 | /@jest/reporters/29.3.1: 534 | resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} 535 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 536 | peerDependencies: 537 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 538 | peerDependenciesMeta: 539 | node-notifier: 540 | optional: true 541 | dependencies: 542 | '@bcoe/v8-coverage': 0.2.3 543 | '@jest/console': 29.3.1 544 | '@jest/test-result': 29.3.1 545 | '@jest/transform': 29.3.1 546 | '@jest/types': 29.3.1 547 | '@jridgewell/trace-mapping': 0.3.17 548 | '@types/node': 16.18.11 549 | chalk: 4.1.2 550 | collect-v8-coverage: 1.0.1 551 | exit: 0.1.2 552 | glob: 7.2.3 553 | graceful-fs: 4.2.10 554 | istanbul-lib-coverage: 3.2.0 555 | istanbul-lib-instrument: 5.2.1 556 | istanbul-lib-report: 3.0.0 557 | istanbul-lib-source-maps: 4.0.1 558 | istanbul-reports: 3.1.5 559 | jest-message-util: 29.3.1 560 | jest-util: 29.3.1 561 | jest-worker: 29.3.1 562 | slash: 3.0.0 563 | string-length: 4.0.2 564 | strip-ansi: 6.0.1 565 | v8-to-istanbul: 9.0.1 566 | transitivePeerDependencies: 567 | - supports-color 568 | dev: true 569 | 570 | /@jest/schemas/29.0.0: 571 | resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} 572 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 573 | dependencies: 574 | '@sinclair/typebox': 0.24.51 575 | dev: true 576 | 577 | /@jest/source-map/29.2.0: 578 | resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} 579 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 580 | dependencies: 581 | '@jridgewell/trace-mapping': 0.3.17 582 | callsites: 3.1.0 583 | graceful-fs: 4.2.10 584 | dev: true 585 | 586 | /@jest/test-result/29.3.1: 587 | resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} 588 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 589 | dependencies: 590 | '@jest/console': 29.3.1 591 | '@jest/types': 29.3.1 592 | '@types/istanbul-lib-coverage': 2.0.4 593 | collect-v8-coverage: 1.0.1 594 | dev: true 595 | 596 | /@jest/test-sequencer/29.3.1: 597 | resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} 598 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 599 | dependencies: 600 | '@jest/test-result': 29.3.1 601 | graceful-fs: 4.2.10 602 | jest-haste-map: 29.3.1 603 | slash: 3.0.0 604 | dev: true 605 | 606 | /@jest/transform/29.3.1: 607 | resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} 608 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 609 | dependencies: 610 | '@babel/core': 7.20.12 611 | '@jest/types': 29.3.1 612 | '@jridgewell/trace-mapping': 0.3.17 613 | babel-plugin-istanbul: 6.1.1 614 | chalk: 4.1.2 615 | convert-source-map: 2.0.0 616 | fast-json-stable-stringify: 2.1.0 617 | graceful-fs: 4.2.10 618 | jest-haste-map: 29.3.1 619 | jest-regex-util: 29.2.0 620 | jest-util: 29.3.1 621 | micromatch: 4.0.5 622 | pirates: 4.0.5 623 | slash: 3.0.0 624 | write-file-atomic: 4.0.2 625 | transitivePeerDependencies: 626 | - supports-color 627 | dev: true 628 | 629 | /@jest/types/29.3.1: 630 | resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} 631 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 632 | dependencies: 633 | '@jest/schemas': 29.0.0 634 | '@types/istanbul-lib-coverage': 2.0.4 635 | '@types/istanbul-reports': 3.0.1 636 | '@types/node': 16.18.11 637 | '@types/yargs': 17.0.19 638 | chalk: 4.1.2 639 | dev: true 640 | 641 | /@jridgewell/gen-mapping/0.1.1: 642 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 643 | engines: {node: '>=6.0.0'} 644 | dependencies: 645 | '@jridgewell/set-array': 1.1.2 646 | '@jridgewell/sourcemap-codec': 1.4.14 647 | dev: true 648 | 649 | /@jridgewell/gen-mapping/0.3.2: 650 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 651 | engines: {node: '>=6.0.0'} 652 | dependencies: 653 | '@jridgewell/set-array': 1.1.2 654 | '@jridgewell/sourcemap-codec': 1.4.14 655 | '@jridgewell/trace-mapping': 0.3.17 656 | dev: true 657 | 658 | /@jridgewell/resolve-uri/3.1.0: 659 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 660 | engines: {node: '>=6.0.0'} 661 | dev: true 662 | 663 | /@jridgewell/set-array/1.1.2: 664 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 665 | engines: {node: '>=6.0.0'} 666 | dev: true 667 | 668 | /@jridgewell/sourcemap-codec/1.4.14: 669 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 670 | dev: true 671 | 672 | /@jridgewell/trace-mapping/0.3.17: 673 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 674 | dependencies: 675 | '@jridgewell/resolve-uri': 3.1.0 676 | '@jridgewell/sourcemap-codec': 1.4.14 677 | dev: true 678 | 679 | /@jridgewell/trace-mapping/0.3.9: 680 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 681 | dependencies: 682 | '@jridgewell/resolve-uri': 3.1.0 683 | '@jridgewell/sourcemap-codec': 1.4.14 684 | dev: true 685 | 686 | /@node-rs/xxhash-android-arm-eabi/1.2.1: 687 | resolution: {integrity: sha512-wvx3/7zBlsUnwWS9ZHBuPqubKaotMNDcyyroEMt5ZV+28/hF4HjNZQgOk6uHdOdlMKAXThqc6AHzwGOK1XXYmw==} 688 | engines: {node: '>= 12'} 689 | cpu: [arm] 690 | os: [android] 691 | requiresBuild: true 692 | dev: true 693 | optional: true 694 | 695 | /@node-rs/xxhash-android-arm64/1.2.1: 696 | resolution: {integrity: sha512-97Hrljvg+J4VxZH5WBqTwIsWrkNCub4aj2mW878svOVYV1qQFU0D4LuJGX8qE0WFTrmL0ycMEH2WIk4CIV5dMg==} 697 | engines: {node: '>= 12'} 698 | cpu: [arm64] 699 | os: [android] 700 | requiresBuild: true 701 | dev: true 702 | optional: true 703 | 704 | /@node-rs/xxhash-darwin-arm64/1.2.1: 705 | resolution: {integrity: sha512-TtfW7Zo1AYQcIMYBI46VQtNkS6scXRnPp/f+9b7+xzEZ72SIpaDKE/33EjrXBNm2ARYRxCpTtL4jN0IHECYe3g==} 706 | engines: {node: '>= 12'} 707 | cpu: [arm64] 708 | os: [darwin] 709 | requiresBuild: true 710 | dev: true 711 | optional: true 712 | 713 | /@node-rs/xxhash-darwin-x64/1.2.1: 714 | resolution: {integrity: sha512-EEy3bPzvi1TStTMxalvIyNia6j9vlICTjnwRhGpShfIMg6XR6OUzda9JojozF53YhHH4oPAzUtUGA2SM5wU8mg==} 715 | engines: {node: '>= 12'} 716 | cpu: [x64] 717 | os: [darwin] 718 | requiresBuild: true 719 | dev: true 720 | optional: true 721 | 722 | /@node-rs/xxhash-freebsd-x64/1.2.1: 723 | resolution: {integrity: sha512-FYBrXV15HXnDEbzIJ0veY5H0C3NqU8kVJOvX7pAFK2kGqspq92BGfBS8j1BOxEFZ6pyQwMQgfOhRI/bsdrb7Zg==} 724 | engines: {node: '>= 12'} 725 | cpu: [x64] 726 | os: [freebsd] 727 | requiresBuild: true 728 | dev: true 729 | optional: true 730 | 731 | /@node-rs/xxhash-linux-arm-gnueabihf/1.2.1: 732 | resolution: {integrity: sha512-h58lDRP3T+kNjH4GCfnCB50b7d9XuVLogN3+wRWZI0yDE1AlTZBfK/00IwSvREcRjHqc5crsS9Zh3SuxIjID2g==} 733 | engines: {node: '>= 12'} 734 | cpu: [arm] 735 | os: [linux] 736 | requiresBuild: true 737 | dev: true 738 | optional: true 739 | 740 | /@node-rs/xxhash-linux-arm64-gnu/1.2.1: 741 | resolution: {integrity: sha512-OLReGi3amHkIU8zPxmDXyJHsUNR2XOPBwd9bzJcuxNM0wSP0g3EMs9VUHmlhh/DiomTduu6A90WzrmuCGaYUAA==} 742 | engines: {node: '>= 12'} 743 | cpu: [arm64] 744 | os: [linux] 745 | requiresBuild: true 746 | dev: true 747 | optional: true 748 | 749 | /@node-rs/xxhash-linux-arm64-musl/1.2.1: 750 | resolution: {integrity: sha512-Rc22qQALjoTkdY2JnoJZn6bzHQQyNcvysU1kznAqwg9pPOD4bU++of1sS7II8o/ihe1g/qz4RKfyG+qUPjy/WQ==} 751 | engines: {node: '>= 12'} 752 | cpu: [arm64] 753 | os: [linux] 754 | requiresBuild: true 755 | dev: true 756 | optional: true 757 | 758 | /@node-rs/xxhash-linux-x64-gnu/1.2.1: 759 | resolution: {integrity: sha512-MM0dfHxEe4uHuUFyM12pXiuie7fAq2LH7+PrXb8FqaGHqxF4aaIZE0gTMNDmrCsJy91tun85/TCu1vQEJ0g+Bw==} 760 | engines: {node: '>= 12'} 761 | cpu: [x64] 762 | os: [linux] 763 | requiresBuild: true 764 | dev: true 765 | optional: true 766 | 767 | /@node-rs/xxhash-linux-x64-musl/1.2.1: 768 | resolution: {integrity: sha512-mD3DEGqnxi39cMDIi5ZqcEUl4/eOcM4qGY/XFSFpUN7oUG4vnf/8U5mwzvAjU+nHWaq9ubteePA1GOXiATvv6w==} 769 | engines: {node: '>= 12'} 770 | cpu: [x64] 771 | os: [linux] 772 | requiresBuild: true 773 | dev: true 774 | optional: true 775 | 776 | /@node-rs/xxhash-win32-arm64-msvc/1.2.1: 777 | resolution: {integrity: sha512-90A9Ux4ozMSmss3Pn+A3TTYSw8uzGSBIPrRw+mIn/rVKBMfMfkKKNL+xjIXw1lkL9s2kG/1aGMBRTeuOeG9xtA==} 778 | engines: {node: '>= 12'} 779 | cpu: [arm64] 780 | os: [win32] 781 | requiresBuild: true 782 | dev: true 783 | optional: true 784 | 785 | /@node-rs/xxhash-win32-ia32-msvc/1.2.1: 786 | resolution: {integrity: sha512-zhpg4pV71e6vDmOSLwFCNKiodtcNHUg76d5npvkWhJa0T/ykMHGWUbaFnpQzLwGD5Sq4mDHrQ7h6lxYA4j/6eQ==} 787 | engines: {node: '>= 12'} 788 | cpu: [ia32] 789 | os: [win32] 790 | requiresBuild: true 791 | dev: true 792 | optional: true 793 | 794 | /@node-rs/xxhash-win32-x64-msvc/1.2.1: 795 | resolution: {integrity: sha512-KkZKyppIM2HJA3oZQ4nsPLwQ5HbELCZt+epLAH3/0H3QN9zqbzoCn6b140hg0lX+KT6YT0otGMbnlnvD2qpswQ==} 796 | engines: {node: '>= 12'} 797 | cpu: [x64] 798 | os: [win32] 799 | requiresBuild: true 800 | dev: true 801 | optional: true 802 | 803 | /@node-rs/xxhash/1.2.1: 804 | resolution: {integrity: sha512-Yyur0X8LFgzxcRWro1wAGVCZK8kcpDhnRKUUeW21OTpoHzDwN8zZSm43bF76xMQF1SyfWr17aSG6G0o8D1hTJA==} 805 | engines: {node: '>= 12'} 806 | optionalDependencies: 807 | '@node-rs/xxhash-android-arm-eabi': 1.2.1 808 | '@node-rs/xxhash-android-arm64': 1.2.1 809 | '@node-rs/xxhash-darwin-arm64': 1.2.1 810 | '@node-rs/xxhash-darwin-x64': 1.2.1 811 | '@node-rs/xxhash-freebsd-x64': 1.2.1 812 | '@node-rs/xxhash-linux-arm-gnueabihf': 1.2.1 813 | '@node-rs/xxhash-linux-arm64-gnu': 1.2.1 814 | '@node-rs/xxhash-linux-arm64-musl': 1.2.1 815 | '@node-rs/xxhash-linux-x64-gnu': 1.2.1 816 | '@node-rs/xxhash-linux-x64-musl': 1.2.1 817 | '@node-rs/xxhash-win32-arm64-msvc': 1.2.1 818 | '@node-rs/xxhash-win32-ia32-msvc': 1.2.1 819 | '@node-rs/xxhash-win32-x64-msvc': 1.2.1 820 | dev: true 821 | 822 | /@nodelib/fs.scandir/2.1.5: 823 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 824 | engines: {node: '>= 8'} 825 | dependencies: 826 | '@nodelib/fs.stat': 2.0.5 827 | run-parallel: 1.2.0 828 | dev: true 829 | 830 | /@nodelib/fs.stat/2.0.5: 831 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 832 | engines: {node: '>= 8'} 833 | dev: true 834 | 835 | /@nodelib/fs.walk/1.2.8: 836 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 837 | engines: {node: '>= 8'} 838 | dependencies: 839 | '@nodelib/fs.scandir': 2.1.5 840 | fastq: 1.15.0 841 | dev: true 842 | 843 | /@rollup/plugin-commonjs/24.0.0_rollup@2.79.1: 844 | resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} 845 | engines: {node: '>=14.0.0'} 846 | peerDependencies: 847 | rollup: ^2.68.0||^3.0.0 848 | peerDependenciesMeta: 849 | rollup: 850 | optional: true 851 | dependencies: 852 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 853 | commondir: 1.0.1 854 | estree-walker: 2.0.2 855 | glob: 8.0.3 856 | is-reference: 1.2.1 857 | magic-string: 0.27.0 858 | rollup: 2.79.1 859 | dev: true 860 | 861 | /@rollup/plugin-json/6.0.0_rollup@2.79.1: 862 | resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} 863 | engines: {node: '>=14.0.0'} 864 | peerDependencies: 865 | rollup: ^1.20.0||^2.0.0||^3.0.0 866 | peerDependenciesMeta: 867 | rollup: 868 | optional: true 869 | dependencies: 870 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 871 | rollup: 2.79.1 872 | dev: true 873 | 874 | /@rollup/plugin-node-resolve/15.0.1_rollup@2.79.1: 875 | resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} 876 | engines: {node: '>=14.0.0'} 877 | peerDependencies: 878 | rollup: ^2.78.0||^3.0.0 879 | peerDependenciesMeta: 880 | rollup: 881 | optional: true 882 | dependencies: 883 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 884 | '@types/resolve': 1.20.2 885 | deepmerge: 4.2.2 886 | is-builtin-module: 3.2.0 887 | is-module: 1.0.0 888 | resolve: 1.22.1 889 | rollup: 2.79.1 890 | dev: true 891 | 892 | /@rollup/plugin-replace/5.0.2_rollup@2.79.1: 893 | resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} 894 | engines: {node: '>=14.0.0'} 895 | peerDependencies: 896 | rollup: ^1.20.0||^2.0.0||^3.0.0 897 | peerDependenciesMeta: 898 | rollup: 899 | optional: true 900 | dependencies: 901 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 902 | magic-string: 0.27.0 903 | rollup: 2.79.1 904 | dev: true 905 | 906 | /@rollup/plugin-strip/3.0.2_rollup@2.79.1: 907 | resolution: {integrity: sha512-L8Whin/DB5XsLE586+xcud6yX/pMVUlfalA999uAsC+dtwmBHSiUwtAxMl3eVvykX3N5BhdeAjStqDlzMmfUXw==} 908 | engines: {node: '>=14.0.0'} 909 | peerDependencies: 910 | rollup: ^1.20.0||^2.0.0||^3.0.0 911 | peerDependenciesMeta: 912 | rollup: 913 | optional: true 914 | dependencies: 915 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 916 | estree-walker: 2.0.2 917 | magic-string: 0.27.0 918 | rollup: 2.79.1 919 | dev: true 920 | 921 | /@rollup/plugin-sucrase/5.0.1_rollup@2.79.1: 922 | resolution: {integrity: sha512-3mYe28rR/sUTkV8v10yPCP55TQ/oJkvcxKZBj6NGx9ZfCn9BdBtBL1v1S0TQrcOV4WD3FTHJaI7TbbukALx9wA==} 923 | engines: {node: '>=14.0.0'} 924 | peerDependencies: 925 | rollup: ^2.53.1||^3.0.0 926 | peerDependenciesMeta: 927 | rollup: 928 | optional: true 929 | dependencies: 930 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 931 | rollup: 2.79.1 932 | sucrase: 3.29.0 933 | dev: true 934 | 935 | /@rollup/plugin-typescript/10.0.1_ntuob3xud5wukob6phfmz2mbyy: 936 | resolution: {integrity: sha512-wBykxRLlX7EzL8BmUqMqk5zpx2onnmRMSw/l9M1sVfkJvdwfxogZQVNUM9gVMJbjRLDR5H6U0OMOrlDGmIV45A==} 937 | engines: {node: '>=14.0.0'} 938 | peerDependencies: 939 | rollup: ^2.14.0||^3.0.0 940 | tslib: '*' 941 | typescript: '>=3.7.0' 942 | peerDependenciesMeta: 943 | rollup: 944 | optional: true 945 | tslib: 946 | optional: true 947 | dependencies: 948 | '@rollup/pluginutils': 5.0.2_rollup@2.79.1 949 | resolve: 1.22.1 950 | rollup: 2.79.1 951 | typescript: 4.9.4 952 | dev: true 953 | 954 | /@rollup/pluginutils/5.0.2_rollup@2.79.1: 955 | resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} 956 | engines: {node: '>=14.0.0'} 957 | peerDependencies: 958 | rollup: ^1.20.0||^2.0.0||^3.0.0 959 | peerDependenciesMeta: 960 | rollup: 961 | optional: true 962 | dependencies: 963 | '@types/estree': 1.0.0 964 | estree-walker: 2.0.2 965 | picomatch: 2.3.1 966 | rollup: 2.79.1 967 | dev: true 968 | 969 | /@sinclair/typebox/0.24.51: 970 | resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} 971 | dev: true 972 | 973 | /@sinonjs/commons/1.8.6: 974 | resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} 975 | dependencies: 976 | type-detect: 4.0.8 977 | dev: true 978 | 979 | /@sinonjs/fake-timers/9.1.2: 980 | resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} 981 | dependencies: 982 | '@sinonjs/commons': 1.8.6 983 | dev: true 984 | 985 | /@swc-node/core/1.9.2_@swc+core@1.3.25: 986 | resolution: {integrity: sha512-tInCla6NO1HEQwhIc/K7PCOu4X3ppqw5xYNEMD7i41SyRuH7yp3u8x7x2cqeAD+6IAhJ5jKDPv2QRLPz7Xt3EA==} 987 | engines: {node: '>= 10'} 988 | peerDependencies: 989 | '@swc/core': '>= 1.3' 990 | dependencies: 991 | '@swc/core': 1.3.25 992 | dev: true 993 | 994 | /@swc-node/jest/1.5.6_v5ttncapjqsn6w3qkbzxgcggpa: 995 | resolution: {integrity: sha512-znW8hxrvEyuaPhkAUBn+zCY53WnE0WKNb1jPNSW+QwBOwQz7wdQn/nTRTojeFyqmGxlJNgxyVVKMx+n9xnrq8Q==} 996 | peerDependencies: 997 | '@swc/core': '>= 1.3' 998 | typescript: '>= 4.3' 999 | dependencies: 1000 | '@node-rs/xxhash': 1.2.1 1001 | '@swc-node/core': 1.9.2_@swc+core@1.3.25 1002 | '@swc-node/register': 1.5.5_v5ttncapjqsn6w3qkbzxgcggpa 1003 | '@swc/core': 1.3.25 1004 | typescript: 4.9.4 1005 | transitivePeerDependencies: 1006 | - supports-color 1007 | dev: true 1008 | 1009 | /@swc-node/register/1.5.5_v5ttncapjqsn6w3qkbzxgcggpa: 1010 | resolution: {integrity: sha512-SNpbRG8EOXShk3YAnC4suAVovYQ7oFOFdCVBA3J8hkO5qy0WHPVnlnMojTYI+8UT1CrfQ1QSUySaAARRvEdwjg==} 1011 | peerDependencies: 1012 | '@swc/core': '>= 1.3' 1013 | typescript: '>= 4.3' 1014 | dependencies: 1015 | '@swc-node/core': 1.9.2_@swc+core@1.3.25 1016 | '@swc-node/sourcemap-support': 0.2.3 1017 | '@swc/core': 1.3.25 1018 | colorette: 2.0.19 1019 | debug: 4.3.4 1020 | pirates: 4.0.5 1021 | tslib: 2.4.1 1022 | typescript: 4.9.4 1023 | transitivePeerDependencies: 1024 | - supports-color 1025 | dev: true 1026 | 1027 | /@swc-node/sourcemap-support/0.2.3: 1028 | resolution: {integrity: sha512-LOC/z9HDUmTqSAF08YIRLThGGNZLdRrjcEdoQu/EANxPSVRedYgh4AiZlOX8sY8Rp1p7S/StOmZogJLuvR4mcA==} 1029 | dependencies: 1030 | source-map-support: 0.5.21 1031 | tslib: 2.4.1 1032 | dev: true 1033 | 1034 | /@swc/core-darwin-arm64/1.3.25: 1035 | resolution: {integrity: sha512-8PWAVcjTJyj2VrqPBFOIi2w2P0Z8kOCbzHW3+pe+bSXxfGMG0MKPl5U2IXhsEL0ovm4xSFlqW0yygpoP3MmRPw==} 1036 | engines: {node: '>=10'} 1037 | cpu: [arm64] 1038 | os: [darwin] 1039 | requiresBuild: true 1040 | dev: true 1041 | optional: true 1042 | 1043 | /@swc/core-darwin-x64/1.3.25: 1044 | resolution: {integrity: sha512-5DHGiMYFEj5aa208tCjo7Sn5tiG4xPz+4gUiWVlglxqXFptkNim5xu/1G6VYm5Zk7dI5jJkjTU76GQG7IRvPug==} 1045 | engines: {node: '>=10'} 1046 | cpu: [x64] 1047 | os: [darwin] 1048 | requiresBuild: true 1049 | dev: true 1050 | optional: true 1051 | 1052 | /@swc/core-linux-arm-gnueabihf/1.3.25: 1053 | resolution: {integrity: sha512-YNfLxv9PhZk+jrJbpR1mMrYBUkufo0hiFv3S1OrX3l8edsIP4wPND5w9ZH0Oi898f6Jg9DBrY2zXJMQ+gWkbvA==} 1054 | engines: {node: '>=10'} 1055 | cpu: [arm] 1056 | os: [linux] 1057 | requiresBuild: true 1058 | dev: true 1059 | optional: true 1060 | 1061 | /@swc/core-linux-arm64-gnu/1.3.25: 1062 | resolution: {integrity: sha512-kS+spM5/xQ6QvWF1ms3byfjnhUlpjTfFwgCyHnIKgjvsYkDa+vkAIhKq6HuEdaTPaCRCjts0Zarhub1nClUU0g==} 1063 | engines: {node: '>=10'} 1064 | cpu: [arm64] 1065 | os: [linux] 1066 | requiresBuild: true 1067 | dev: true 1068 | optional: true 1069 | 1070 | /@swc/core-linux-arm64-musl/1.3.25: 1071 | resolution: {integrity: sha512-vM3D7LWmjotUAJ2D4F+L+dspFeWrcPNVh0o8TCoTOYCt8DPD5YsUKTpIgOsZ+gReeWUAnNTh0Btx5pGGVfajGA==} 1072 | engines: {node: '>=10'} 1073 | cpu: [arm64] 1074 | os: [linux] 1075 | requiresBuild: true 1076 | dev: true 1077 | optional: true 1078 | 1079 | /@swc/core-linux-x64-gnu/1.3.25: 1080 | resolution: {integrity: sha512-xUCLLMDlYa/zB8BftVa4SrxuVpcDxkltCfmBg5r2pZPVskhC5ZJsQZ/AvWNChoAB11shRhjTaWDlmxJEsa7TIg==} 1081 | engines: {node: '>=10'} 1082 | cpu: [x64] 1083 | os: [linux] 1084 | requiresBuild: true 1085 | dev: true 1086 | optional: true 1087 | 1088 | /@swc/core-linux-x64-musl/1.3.25: 1089 | resolution: {integrity: sha512-QzHU3BIaUVRSFNsUn3Qxx1vgtF/f5NqsFMAAPSq9Y8Yq5nrlc2t7cNuOROxHLbUqE+NPUp6+RglleJMoeWz5mA==} 1090 | engines: {node: '>=10'} 1091 | cpu: [x64] 1092 | os: [linux] 1093 | requiresBuild: true 1094 | dev: true 1095 | optional: true 1096 | 1097 | /@swc/core-win32-arm64-msvc/1.3.25: 1098 | resolution: {integrity: sha512-77VSVtneVOAUL4zkRyQZ6pWVpTsVVdqwly/DKnRnloglGKxYuk5DG5MUBsL72Nnfv4OCHjZ27eI3NUrpLsUb2Q==} 1099 | engines: {node: '>=10'} 1100 | cpu: [arm64] 1101 | os: [win32] 1102 | requiresBuild: true 1103 | dev: true 1104 | optional: true 1105 | 1106 | /@swc/core-win32-ia32-msvc/1.3.25: 1107 | resolution: {integrity: sha512-kz0v3K3H6OPEZR3ry72Ad/6C5GrZBRRUk69K58LORQ8tZXQD3UGl85pUbQqyHl8fR5NU76Muxgovj9CI9iTHGA==} 1108 | engines: {node: '>=10'} 1109 | cpu: [ia32] 1110 | os: [win32] 1111 | requiresBuild: true 1112 | dev: true 1113 | optional: true 1114 | 1115 | /@swc/core-win32-x64-msvc/1.3.25: 1116 | resolution: {integrity: sha512-nmQOAzIpNRRnupWzkenJmW4i+h1M76cVNUqEU2MjmtesEkRZEGqv//jefXiyCP2zcbeLNLKiB2ptVJhpd1BvRA==} 1117 | engines: {node: '>=10'} 1118 | cpu: [x64] 1119 | os: [win32] 1120 | requiresBuild: true 1121 | dev: true 1122 | optional: true 1123 | 1124 | /@swc/core/1.3.25: 1125 | resolution: {integrity: sha512-wqzvM/wu6OsTVYPMStOpm7kIQcPX3GoZ0sC85qzDdsCxmJ1rmItLAD91sXPUmmdk0XqPYjLgT9MRDEIP5woz4g==} 1126 | engines: {node: '>=10'} 1127 | requiresBuild: true 1128 | optionalDependencies: 1129 | '@swc/core-darwin-arm64': 1.3.25 1130 | '@swc/core-darwin-x64': 1.3.25 1131 | '@swc/core-linux-arm-gnueabihf': 1.3.25 1132 | '@swc/core-linux-arm64-gnu': 1.3.25 1133 | '@swc/core-linux-arm64-musl': 1.3.25 1134 | '@swc/core-linux-x64-gnu': 1.3.25 1135 | '@swc/core-linux-x64-musl': 1.3.25 1136 | '@swc/core-win32-arm64-msvc': 1.3.25 1137 | '@swc/core-win32-ia32-msvc': 1.3.25 1138 | '@swc/core-win32-x64-msvc': 1.3.25 1139 | dev: true 1140 | 1141 | /@tsconfig/node10/1.0.9: 1142 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 1143 | dev: true 1144 | 1145 | /@tsconfig/node12/1.0.11: 1146 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 1147 | dev: true 1148 | 1149 | /@tsconfig/node14/1.0.3: 1150 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 1151 | dev: true 1152 | 1153 | /@tsconfig/node16/1.0.3: 1154 | resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} 1155 | dev: true 1156 | 1157 | /@types/babel__core/7.1.20: 1158 | resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} 1159 | dependencies: 1160 | '@babel/parser': 7.20.7 1161 | '@babel/types': 7.20.7 1162 | '@types/babel__generator': 7.6.4 1163 | '@types/babel__template': 7.4.1 1164 | '@types/babel__traverse': 7.18.3 1165 | dev: true 1166 | 1167 | /@types/babel__generator/7.6.4: 1168 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 1169 | dependencies: 1170 | '@babel/types': 7.20.7 1171 | dev: true 1172 | 1173 | /@types/babel__template/7.4.1: 1174 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 1175 | dependencies: 1176 | '@babel/parser': 7.20.7 1177 | '@babel/types': 7.20.7 1178 | dev: true 1179 | 1180 | /@types/babel__traverse/7.18.3: 1181 | resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} 1182 | dependencies: 1183 | '@babel/types': 7.20.7 1184 | dev: true 1185 | 1186 | /@types/estree/0.0.50: 1187 | resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==} 1188 | dev: true 1189 | 1190 | /@types/estree/1.0.0: 1191 | resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} 1192 | dev: true 1193 | 1194 | /@types/graceful-fs/4.1.6: 1195 | resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} 1196 | dependencies: 1197 | '@types/node': 16.18.11 1198 | dev: true 1199 | 1200 | /@types/istanbul-lib-coverage/2.0.4: 1201 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 1202 | dev: true 1203 | 1204 | /@types/istanbul-lib-report/3.0.0: 1205 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 1206 | dependencies: 1207 | '@types/istanbul-lib-coverage': 2.0.4 1208 | dev: true 1209 | 1210 | /@types/istanbul-reports/3.0.1: 1211 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 1212 | dependencies: 1213 | '@types/istanbul-lib-report': 3.0.0 1214 | dev: true 1215 | 1216 | /@types/jest/27.5.2: 1217 | resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} 1218 | dependencies: 1219 | jest-matcher-utils: 27.5.1 1220 | pretty-format: 27.5.1 1221 | dev: true 1222 | 1223 | /@types/js-beautify/1.13.3: 1224 | resolution: {integrity: sha512-ucIPw5gmNyvRKi6mpeojlqp+T+6ZBJeU+kqMDnIEDlijEU4QhLTon90sZ3cz9HZr+QTwXILjNsMZImzA7+zuJA==} 1225 | dev: true 1226 | 1227 | /@types/node/16.18.11: 1228 | resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==} 1229 | dev: true 1230 | 1231 | /@types/prettier/2.7.2: 1232 | resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} 1233 | dev: true 1234 | 1235 | /@types/resolve/1.20.2: 1236 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 1237 | dev: true 1238 | 1239 | /@types/stack-utils/2.0.1: 1240 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 1241 | dev: true 1242 | 1243 | /@types/yargs-parser/21.0.0: 1244 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 1245 | dev: true 1246 | 1247 | /@types/yargs/17.0.19: 1248 | resolution: {integrity: sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==} 1249 | dependencies: 1250 | '@types/yargs-parser': 21.0.0 1251 | dev: true 1252 | 1253 | /acorn-walk/8.2.0: 1254 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 1255 | engines: {node: '>=0.4.0'} 1256 | dev: true 1257 | 1258 | /acorn/8.8.1: 1259 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 1260 | engines: {node: '>=0.4.0'} 1261 | hasBin: true 1262 | dev: true 1263 | 1264 | /ansi-escapes/4.3.2: 1265 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 1266 | engines: {node: '>=8'} 1267 | dependencies: 1268 | type-fest: 0.21.3 1269 | dev: true 1270 | 1271 | /ansi-regex/5.0.1: 1272 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1273 | engines: {node: '>=8'} 1274 | dev: true 1275 | 1276 | /ansi-styles/3.2.1: 1277 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1278 | engines: {node: '>=4'} 1279 | dependencies: 1280 | color-convert: 1.9.3 1281 | dev: true 1282 | 1283 | /ansi-styles/4.3.0: 1284 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1285 | engines: {node: '>=8'} 1286 | dependencies: 1287 | color-convert: 2.0.1 1288 | dev: true 1289 | 1290 | /ansi-styles/5.2.0: 1291 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 1292 | engines: {node: '>=10'} 1293 | dev: true 1294 | 1295 | /any-promise/1.3.0: 1296 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 1297 | dev: true 1298 | 1299 | /anymatch/3.1.3: 1300 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 1301 | engines: {node: '>= 8'} 1302 | dependencies: 1303 | normalize-path: 3.0.0 1304 | picomatch: 2.3.1 1305 | dev: true 1306 | 1307 | /arg/4.1.3: 1308 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 1309 | dev: true 1310 | 1311 | /argparse/1.0.10: 1312 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 1313 | dependencies: 1314 | sprintf-js: 1.0.3 1315 | dev: true 1316 | 1317 | /array-union/2.1.0: 1318 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 1319 | engines: {node: '>=8'} 1320 | dev: true 1321 | 1322 | /babel-jest/29.3.1_@babel+core@7.20.12: 1323 | resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} 1324 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1325 | peerDependencies: 1326 | '@babel/core': ^7.8.0 1327 | dependencies: 1328 | '@babel/core': 7.20.12 1329 | '@jest/transform': 29.3.1 1330 | '@types/babel__core': 7.1.20 1331 | babel-plugin-istanbul: 6.1.1 1332 | babel-preset-jest: 29.2.0_@babel+core@7.20.12 1333 | chalk: 4.1.2 1334 | graceful-fs: 4.2.10 1335 | slash: 3.0.0 1336 | transitivePeerDependencies: 1337 | - supports-color 1338 | dev: true 1339 | 1340 | /babel-plugin-istanbul/6.1.1: 1341 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 1342 | engines: {node: '>=8'} 1343 | dependencies: 1344 | '@babel/helper-plugin-utils': 7.20.2 1345 | '@istanbuljs/load-nyc-config': 1.1.0 1346 | '@istanbuljs/schema': 0.1.3 1347 | istanbul-lib-instrument: 5.2.1 1348 | test-exclude: 6.0.0 1349 | transitivePeerDependencies: 1350 | - supports-color 1351 | dev: true 1352 | 1353 | /babel-plugin-jest-hoist/29.2.0: 1354 | resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} 1355 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1356 | dependencies: 1357 | '@babel/template': 7.20.7 1358 | '@babel/types': 7.20.7 1359 | '@types/babel__core': 7.1.20 1360 | '@types/babel__traverse': 7.18.3 1361 | dev: true 1362 | 1363 | /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: 1364 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} 1365 | peerDependencies: 1366 | '@babel/core': ^7.0.0 1367 | dependencies: 1368 | '@babel/core': 7.20.12 1369 | '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 1370 | '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 1371 | '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 1372 | '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 1373 | '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 1374 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 1375 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 1376 | '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 1377 | '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 1378 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 1379 | '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 1380 | '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 1381 | dev: true 1382 | 1383 | /babel-preset-jest/29.2.0_@babel+core@7.20.12: 1384 | resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} 1385 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1386 | peerDependencies: 1387 | '@babel/core': ^7.0.0 1388 | dependencies: 1389 | '@babel/core': 7.20.12 1390 | babel-plugin-jest-hoist: 29.2.0 1391 | babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 1392 | dev: true 1393 | 1394 | /balanced-match/1.0.2: 1395 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1396 | dev: true 1397 | 1398 | /binary-extensions/2.2.0: 1399 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1400 | engines: {node: '>=8'} 1401 | dev: true 1402 | 1403 | /brace-expansion/1.1.11: 1404 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1405 | dependencies: 1406 | balanced-match: 1.0.2 1407 | concat-map: 0.0.1 1408 | dev: true 1409 | 1410 | /brace-expansion/2.0.1: 1411 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1412 | dependencies: 1413 | balanced-match: 1.0.2 1414 | dev: true 1415 | 1416 | /braces/3.0.2: 1417 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1418 | engines: {node: '>=8'} 1419 | dependencies: 1420 | fill-range: 7.0.1 1421 | dev: true 1422 | 1423 | /browserslist/4.21.4: 1424 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 1425 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1426 | hasBin: true 1427 | dependencies: 1428 | caniuse-lite: 1.0.30001442 1429 | electron-to-chromium: 1.4.284 1430 | node-releases: 2.0.8 1431 | update-browserslist-db: 1.0.10_browserslist@4.21.4 1432 | dev: true 1433 | 1434 | /bser/2.1.1: 1435 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 1436 | dependencies: 1437 | node-int64: 0.4.0 1438 | dev: true 1439 | 1440 | /buffer-from/1.1.2: 1441 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1442 | dev: true 1443 | 1444 | /builtin-modules/3.3.0: 1445 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 1446 | engines: {node: '>=6'} 1447 | dev: true 1448 | 1449 | /callsites/3.1.0: 1450 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1451 | engines: {node: '>=6'} 1452 | dev: true 1453 | 1454 | /camelcase/5.3.1: 1455 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1456 | engines: {node: '>=6'} 1457 | dev: true 1458 | 1459 | /camelcase/6.3.0: 1460 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 1461 | engines: {node: '>=10'} 1462 | dev: true 1463 | 1464 | /caniuse-lite/1.0.30001442: 1465 | resolution: {integrity: sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==} 1466 | dev: true 1467 | 1468 | /chalk/2.4.2: 1469 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1470 | engines: {node: '>=4'} 1471 | dependencies: 1472 | ansi-styles: 3.2.1 1473 | escape-string-regexp: 1.0.5 1474 | supports-color: 5.5.0 1475 | dev: true 1476 | 1477 | /chalk/4.1.2: 1478 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1479 | engines: {node: '>=10'} 1480 | dependencies: 1481 | ansi-styles: 4.3.0 1482 | supports-color: 7.2.0 1483 | dev: true 1484 | 1485 | /char-regex/1.0.2: 1486 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 1487 | engines: {node: '>=10'} 1488 | dev: true 1489 | 1490 | /chokidar/3.5.3: 1491 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1492 | engines: {node: '>= 8.10.0'} 1493 | dependencies: 1494 | anymatch: 3.1.3 1495 | braces: 3.0.2 1496 | glob-parent: 5.1.2 1497 | is-binary-path: 2.1.0 1498 | is-glob: 4.0.3 1499 | normalize-path: 3.0.0 1500 | readdirp: 3.6.0 1501 | optionalDependencies: 1502 | fsevents: 2.3.2 1503 | dev: true 1504 | 1505 | /ci-info/3.7.1: 1506 | resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} 1507 | engines: {node: '>=8'} 1508 | dev: true 1509 | 1510 | /cjs-module-lexer/1.2.2: 1511 | resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} 1512 | dev: true 1513 | 1514 | /cliui/8.0.1: 1515 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 1516 | engines: {node: '>=12'} 1517 | dependencies: 1518 | string-width: 4.2.3 1519 | strip-ansi: 6.0.1 1520 | wrap-ansi: 7.0.0 1521 | dev: true 1522 | 1523 | /co/4.6.0: 1524 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 1525 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 1526 | dev: true 1527 | 1528 | /code-red/0.2.5: 1529 | resolution: {integrity: sha512-x+uQyJLNS1v0+74eXqM7FMPoM1fU/fN3tdexGWtCuVjCfxADt1TuuEGIGlFyCC2vhgINDctDb/rgSn8/ZDfJsQ==} 1530 | dependencies: 1531 | '@types/estree': 0.0.50 1532 | acorn: 8.8.1 1533 | estree-walker: 3.0.2 1534 | is-reference: 3.0.1 1535 | periscopic: 3.0.4 1536 | sourcemap-codec: 1.4.8 1537 | dev: true 1538 | 1539 | /collect-v8-coverage/1.0.1: 1540 | resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} 1541 | dev: true 1542 | 1543 | /color-convert/1.9.3: 1544 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1545 | dependencies: 1546 | color-name: 1.1.3 1547 | dev: true 1548 | 1549 | /color-convert/2.0.1: 1550 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1551 | engines: {node: '>=7.0.0'} 1552 | dependencies: 1553 | color-name: 1.1.4 1554 | dev: true 1555 | 1556 | /color-name/1.1.3: 1557 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1558 | dev: true 1559 | 1560 | /color-name/1.1.4: 1561 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1562 | dev: true 1563 | 1564 | /colorette/2.0.19: 1565 | resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} 1566 | dev: true 1567 | 1568 | /commander/4.1.1: 1569 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1570 | engines: {node: '>= 6'} 1571 | dev: true 1572 | 1573 | /commander/9.5.0: 1574 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} 1575 | engines: {node: ^12.20.0 || >=14} 1576 | dev: true 1577 | 1578 | /commondir/1.0.1: 1579 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 1580 | dev: true 1581 | 1582 | /concat-map/0.0.1: 1583 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1584 | dev: true 1585 | 1586 | /convert-source-map/1.9.0: 1587 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1588 | dev: true 1589 | 1590 | /convert-source-map/2.0.0: 1591 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1592 | dev: true 1593 | 1594 | /create-require/1.1.1: 1595 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 1596 | dev: true 1597 | 1598 | /cross-spawn/7.0.3: 1599 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1600 | engines: {node: '>= 8'} 1601 | dependencies: 1602 | path-key: 3.1.1 1603 | shebang-command: 2.0.0 1604 | which: 2.0.2 1605 | dev: true 1606 | 1607 | /debug/4.3.4: 1608 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1609 | engines: {node: '>=6.0'} 1610 | peerDependencies: 1611 | supports-color: '*' 1612 | peerDependenciesMeta: 1613 | supports-color: 1614 | optional: true 1615 | dependencies: 1616 | ms: 2.1.2 1617 | dev: true 1618 | 1619 | /dedent/0.7.0: 1620 | resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} 1621 | dev: true 1622 | 1623 | /deepmerge/4.2.2: 1624 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 1625 | engines: {node: '>=0.10.0'} 1626 | dev: true 1627 | 1628 | /detect-newline/3.1.0: 1629 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1630 | engines: {node: '>=8'} 1631 | dev: true 1632 | 1633 | /diff-sequences/27.5.1: 1634 | resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} 1635 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1636 | dev: true 1637 | 1638 | /diff-sequences/29.3.1: 1639 | resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} 1640 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1641 | dev: true 1642 | 1643 | /diff/4.0.2: 1644 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 1645 | engines: {node: '>=0.3.1'} 1646 | dev: true 1647 | 1648 | /dir-glob/3.0.1: 1649 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1650 | engines: {node: '>=8'} 1651 | dependencies: 1652 | path-type: 4.0.0 1653 | dev: true 1654 | 1655 | /domelementtype/2.3.0: 1656 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1657 | dev: true 1658 | 1659 | /domhandler/5.0.3: 1660 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1661 | engines: {node: '>= 4'} 1662 | dependencies: 1663 | domelementtype: 2.3.0 1664 | dev: true 1665 | 1666 | /electron-to-chromium/1.4.284: 1667 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 1668 | dev: true 1669 | 1670 | /emittery/0.13.1: 1671 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 1672 | engines: {node: '>=12'} 1673 | dev: true 1674 | 1675 | /emoji-regex/8.0.0: 1676 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1677 | dev: true 1678 | 1679 | /entities/4.4.0: 1680 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} 1681 | engines: {node: '>=0.12'} 1682 | dev: true 1683 | 1684 | /error-ex/1.3.2: 1685 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1686 | dependencies: 1687 | is-arrayish: 0.2.1 1688 | dev: true 1689 | 1690 | /escalade/3.1.1: 1691 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1692 | engines: {node: '>=6'} 1693 | dev: true 1694 | 1695 | /escape-string-regexp/1.0.5: 1696 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1697 | engines: {node: '>=0.8.0'} 1698 | dev: true 1699 | 1700 | /escape-string-regexp/2.0.0: 1701 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1702 | engines: {node: '>=8'} 1703 | dev: true 1704 | 1705 | /esprima/4.0.1: 1706 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1707 | engines: {node: '>=4'} 1708 | hasBin: true 1709 | dev: true 1710 | 1711 | /estree-walker/2.0.2: 1712 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1713 | dev: true 1714 | 1715 | /estree-walker/3.0.2: 1716 | resolution: {integrity: sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==} 1717 | dev: true 1718 | 1719 | /execa/5.1.1: 1720 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1721 | engines: {node: '>=10'} 1722 | dependencies: 1723 | cross-spawn: 7.0.3 1724 | get-stream: 6.0.1 1725 | human-signals: 2.1.0 1726 | is-stream: 2.0.1 1727 | merge-stream: 2.0.0 1728 | npm-run-path: 4.0.1 1729 | onetime: 5.1.2 1730 | signal-exit: 3.0.7 1731 | strip-final-newline: 2.0.0 1732 | dev: true 1733 | 1734 | /exit/0.1.2: 1735 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} 1736 | engines: {node: '>= 0.8.0'} 1737 | dev: true 1738 | 1739 | /expect/29.3.1: 1740 | resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} 1741 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1742 | dependencies: 1743 | '@jest/expect-utils': 29.3.1 1744 | jest-get-type: 29.2.0 1745 | jest-matcher-utils: 29.3.1 1746 | jest-message-util: 29.3.1 1747 | jest-util: 29.3.1 1748 | dev: true 1749 | 1750 | /fast-glob/3.2.12: 1751 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1752 | engines: {node: '>=8.6.0'} 1753 | dependencies: 1754 | '@nodelib/fs.stat': 2.0.5 1755 | '@nodelib/fs.walk': 1.2.8 1756 | glob-parent: 5.1.2 1757 | merge2: 1.4.1 1758 | micromatch: 4.0.5 1759 | dev: true 1760 | 1761 | /fast-json-stable-stringify/2.1.0: 1762 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1763 | dev: true 1764 | 1765 | /fastq/1.15.0: 1766 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1767 | dependencies: 1768 | reusify: 1.0.4 1769 | dev: true 1770 | 1771 | /fb-watchman/2.0.2: 1772 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 1773 | dependencies: 1774 | bser: 2.1.1 1775 | dev: true 1776 | 1777 | /fill-range/7.0.1: 1778 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1779 | engines: {node: '>=8'} 1780 | dependencies: 1781 | to-regex-range: 5.0.1 1782 | dev: true 1783 | 1784 | /find-up/4.1.0: 1785 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1786 | engines: {node: '>=8'} 1787 | dependencies: 1788 | locate-path: 5.0.0 1789 | path-exists: 4.0.0 1790 | dev: true 1791 | 1792 | /fs.realpath/1.0.0: 1793 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1794 | dev: true 1795 | 1796 | /fsevents/2.3.2: 1797 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1798 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1799 | os: [darwin] 1800 | requiresBuild: true 1801 | dev: true 1802 | optional: true 1803 | 1804 | /function-bind/1.1.1: 1805 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1806 | dev: true 1807 | 1808 | /gensync/1.0.0-beta.2: 1809 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1810 | engines: {node: '>=6.9.0'} 1811 | dev: true 1812 | 1813 | /get-caller-file/2.0.5: 1814 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1815 | engines: {node: 6.* || 8.* || >= 10.*} 1816 | dev: true 1817 | 1818 | /get-package-type/0.1.0: 1819 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1820 | engines: {node: '>=8.0.0'} 1821 | dev: true 1822 | 1823 | /get-stream/6.0.1: 1824 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1825 | engines: {node: '>=10'} 1826 | dev: true 1827 | 1828 | /glob-parent/5.1.2: 1829 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1830 | engines: {node: '>= 6'} 1831 | dependencies: 1832 | is-glob: 4.0.3 1833 | dev: true 1834 | 1835 | /glob/7.1.6: 1836 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1837 | dependencies: 1838 | fs.realpath: 1.0.0 1839 | inflight: 1.0.6 1840 | inherits: 2.0.4 1841 | minimatch: 3.1.2 1842 | once: 1.4.0 1843 | path-is-absolute: 1.0.1 1844 | dev: true 1845 | 1846 | /glob/7.2.3: 1847 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1848 | dependencies: 1849 | fs.realpath: 1.0.0 1850 | inflight: 1.0.6 1851 | inherits: 2.0.4 1852 | minimatch: 3.1.2 1853 | once: 1.4.0 1854 | path-is-absolute: 1.0.1 1855 | dev: true 1856 | 1857 | /glob/8.0.3: 1858 | resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} 1859 | engines: {node: '>=12'} 1860 | dependencies: 1861 | fs.realpath: 1.0.0 1862 | inflight: 1.0.6 1863 | inherits: 2.0.4 1864 | minimatch: 5.1.2 1865 | once: 1.4.0 1866 | dev: true 1867 | 1868 | /globals/11.12.0: 1869 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1870 | engines: {node: '>=4'} 1871 | dev: true 1872 | 1873 | /globby/11.1.0: 1874 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1875 | engines: {node: '>=10'} 1876 | dependencies: 1877 | array-union: 2.1.0 1878 | dir-glob: 3.0.1 1879 | fast-glob: 3.2.12 1880 | ignore: 5.2.4 1881 | merge2: 1.4.1 1882 | slash: 3.0.0 1883 | dev: true 1884 | 1885 | /graceful-fs/4.2.10: 1886 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1887 | dev: true 1888 | 1889 | /has-flag/3.0.0: 1890 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1891 | engines: {node: '>=4'} 1892 | dev: true 1893 | 1894 | /has-flag/4.0.0: 1895 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1896 | engines: {node: '>=8'} 1897 | dev: true 1898 | 1899 | /has/1.0.3: 1900 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1901 | engines: {node: '>= 0.4.0'} 1902 | dependencies: 1903 | function-bind: 1.1.1 1904 | dev: true 1905 | 1906 | /html-escaper/2.0.2: 1907 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1908 | dev: true 1909 | 1910 | /human-signals/2.1.0: 1911 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1912 | engines: {node: '>=10.17.0'} 1913 | dev: true 1914 | 1915 | /ignore/5.2.4: 1916 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1917 | engines: {node: '>= 4'} 1918 | dev: true 1919 | 1920 | /import-local/3.1.0: 1921 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 1922 | engines: {node: '>=8'} 1923 | hasBin: true 1924 | dependencies: 1925 | pkg-dir: 4.2.0 1926 | resolve-cwd: 3.0.0 1927 | dev: true 1928 | 1929 | /imurmurhash/0.1.4: 1930 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1931 | engines: {node: '>=0.8.19'} 1932 | dev: true 1933 | 1934 | /inflight/1.0.6: 1935 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1936 | dependencies: 1937 | once: 1.4.0 1938 | wrappy: 1.0.2 1939 | dev: true 1940 | 1941 | /inherits/2.0.4: 1942 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1943 | dev: true 1944 | 1945 | /is-arrayish/0.2.1: 1946 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1947 | dev: true 1948 | 1949 | /is-binary-path/2.1.0: 1950 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1951 | engines: {node: '>=8'} 1952 | dependencies: 1953 | binary-extensions: 2.2.0 1954 | dev: true 1955 | 1956 | /is-builtin-module/3.2.0: 1957 | resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} 1958 | engines: {node: '>=6'} 1959 | dependencies: 1960 | builtin-modules: 3.3.0 1961 | dev: true 1962 | 1963 | /is-core-module/2.11.0: 1964 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1965 | dependencies: 1966 | has: 1.0.3 1967 | dev: true 1968 | 1969 | /is-extglob/2.1.1: 1970 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1971 | engines: {node: '>=0.10.0'} 1972 | dev: true 1973 | 1974 | /is-fullwidth-code-point/3.0.0: 1975 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1976 | engines: {node: '>=8'} 1977 | dev: true 1978 | 1979 | /is-generator-fn/2.1.0: 1980 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1981 | engines: {node: '>=6'} 1982 | dev: true 1983 | 1984 | /is-glob/4.0.3: 1985 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1986 | engines: {node: '>=0.10.0'} 1987 | dependencies: 1988 | is-extglob: 2.1.1 1989 | dev: true 1990 | 1991 | /is-module/1.0.0: 1992 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 1993 | dev: true 1994 | 1995 | /is-number/7.0.0: 1996 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1997 | engines: {node: '>=0.12.0'} 1998 | dev: true 1999 | 2000 | /is-reference/1.2.1: 2001 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} 2002 | dependencies: 2003 | '@types/estree': 1.0.0 2004 | dev: true 2005 | 2006 | /is-reference/3.0.1: 2007 | resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} 2008 | dependencies: 2009 | '@types/estree': 1.0.0 2010 | dev: true 2011 | 2012 | /is-stream/2.0.1: 2013 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 2014 | engines: {node: '>=8'} 2015 | dev: true 2016 | 2017 | /isexe/2.0.0: 2018 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2019 | dev: true 2020 | 2021 | /istanbul-lib-coverage/3.2.0: 2022 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 2023 | engines: {node: '>=8'} 2024 | dev: true 2025 | 2026 | /istanbul-lib-instrument/5.2.1: 2027 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} 2028 | engines: {node: '>=8'} 2029 | dependencies: 2030 | '@babel/core': 7.20.12 2031 | '@babel/parser': 7.20.7 2032 | '@istanbuljs/schema': 0.1.3 2033 | istanbul-lib-coverage: 3.2.0 2034 | semver: 6.3.0 2035 | transitivePeerDependencies: 2036 | - supports-color 2037 | dev: true 2038 | 2039 | /istanbul-lib-report/3.0.0: 2040 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 2041 | engines: {node: '>=8'} 2042 | dependencies: 2043 | istanbul-lib-coverage: 3.2.0 2044 | make-dir: 3.1.0 2045 | supports-color: 7.2.0 2046 | dev: true 2047 | 2048 | /istanbul-lib-source-maps/4.0.1: 2049 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 2050 | engines: {node: '>=10'} 2051 | dependencies: 2052 | debug: 4.3.4 2053 | istanbul-lib-coverage: 3.2.0 2054 | source-map: 0.6.1 2055 | transitivePeerDependencies: 2056 | - supports-color 2057 | dev: true 2058 | 2059 | /istanbul-reports/3.1.5: 2060 | resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} 2061 | engines: {node: '>=8'} 2062 | dependencies: 2063 | html-escaper: 2.0.2 2064 | istanbul-lib-report: 3.0.0 2065 | dev: true 2066 | 2067 | /jest-changed-files/29.2.0: 2068 | resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} 2069 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2070 | dependencies: 2071 | execa: 5.1.1 2072 | p-limit: 3.1.0 2073 | dev: true 2074 | 2075 | /jest-circus/29.3.1: 2076 | resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} 2077 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2078 | dependencies: 2079 | '@jest/environment': 29.3.1 2080 | '@jest/expect': 29.3.1 2081 | '@jest/test-result': 29.3.1 2082 | '@jest/types': 29.3.1 2083 | '@types/node': 16.18.11 2084 | chalk: 4.1.2 2085 | co: 4.6.0 2086 | dedent: 0.7.0 2087 | is-generator-fn: 2.1.0 2088 | jest-each: 29.3.1 2089 | jest-matcher-utils: 29.3.1 2090 | jest-message-util: 29.3.1 2091 | jest-runtime: 29.3.1 2092 | jest-snapshot: 29.3.1 2093 | jest-util: 29.3.1 2094 | p-limit: 3.1.0 2095 | pretty-format: 29.3.1 2096 | slash: 3.0.0 2097 | stack-utils: 2.0.6 2098 | transitivePeerDependencies: 2099 | - supports-color 2100 | dev: true 2101 | 2102 | /jest-cli/29.3.1_35bb52e3ngsl3trrvg3csiponq: 2103 | resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} 2104 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2105 | hasBin: true 2106 | peerDependencies: 2107 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 2108 | peerDependenciesMeta: 2109 | node-notifier: 2110 | optional: true 2111 | dependencies: 2112 | '@jest/core': 29.3.1_ts-node@10.9.1 2113 | '@jest/test-result': 29.3.1 2114 | '@jest/types': 29.3.1 2115 | chalk: 4.1.2 2116 | exit: 0.1.2 2117 | graceful-fs: 4.2.10 2118 | import-local: 3.1.0 2119 | jest-config: 29.3.1_35bb52e3ngsl3trrvg3csiponq 2120 | jest-util: 29.3.1 2121 | jest-validate: 29.3.1 2122 | prompts: 2.4.2 2123 | yargs: 17.6.2 2124 | transitivePeerDependencies: 2125 | - '@types/node' 2126 | - supports-color 2127 | - ts-node 2128 | dev: true 2129 | 2130 | /jest-config/29.3.1_35bb52e3ngsl3trrvg3csiponq: 2131 | resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} 2132 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2133 | peerDependencies: 2134 | '@types/node': '*' 2135 | ts-node: '>=9.0.0' 2136 | peerDependenciesMeta: 2137 | '@types/node': 2138 | optional: true 2139 | ts-node: 2140 | optional: true 2141 | dependencies: 2142 | '@babel/core': 7.20.12 2143 | '@jest/test-sequencer': 29.3.1 2144 | '@jest/types': 29.3.1 2145 | '@types/node': 16.18.11 2146 | babel-jest: 29.3.1_@babel+core@7.20.12 2147 | chalk: 4.1.2 2148 | ci-info: 3.7.1 2149 | deepmerge: 4.2.2 2150 | glob: 7.2.3 2151 | graceful-fs: 4.2.10 2152 | jest-circus: 29.3.1 2153 | jest-environment-node: 29.3.1 2154 | jest-get-type: 29.2.0 2155 | jest-regex-util: 29.2.0 2156 | jest-resolve: 29.3.1 2157 | jest-runner: 29.3.1 2158 | jest-util: 29.3.1 2159 | jest-validate: 29.3.1 2160 | micromatch: 4.0.5 2161 | parse-json: 5.2.0 2162 | pretty-format: 29.3.1 2163 | slash: 3.0.0 2164 | strip-json-comments: 3.1.1 2165 | ts-node: 10.9.1_j6w75qxuvt5djadh2qwj7tbyma 2166 | transitivePeerDependencies: 2167 | - supports-color 2168 | dev: true 2169 | 2170 | /jest-diff/27.5.1: 2171 | resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} 2172 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2173 | dependencies: 2174 | chalk: 4.1.2 2175 | diff-sequences: 27.5.1 2176 | jest-get-type: 27.5.1 2177 | pretty-format: 27.5.1 2178 | dev: true 2179 | 2180 | /jest-diff/29.3.1: 2181 | resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} 2182 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2183 | dependencies: 2184 | chalk: 4.1.2 2185 | diff-sequences: 29.3.1 2186 | jest-get-type: 29.2.0 2187 | pretty-format: 29.3.1 2188 | dev: true 2189 | 2190 | /jest-docblock/29.2.0: 2191 | resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} 2192 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2193 | dependencies: 2194 | detect-newline: 3.1.0 2195 | dev: true 2196 | 2197 | /jest-each/29.3.1: 2198 | resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} 2199 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2200 | dependencies: 2201 | '@jest/types': 29.3.1 2202 | chalk: 4.1.2 2203 | jest-get-type: 29.2.0 2204 | jest-util: 29.3.1 2205 | pretty-format: 29.3.1 2206 | dev: true 2207 | 2208 | /jest-environment-node/29.3.1: 2209 | resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} 2210 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2211 | dependencies: 2212 | '@jest/environment': 29.3.1 2213 | '@jest/fake-timers': 29.3.1 2214 | '@jest/types': 29.3.1 2215 | '@types/node': 16.18.11 2216 | jest-mock: 29.3.1 2217 | jest-util: 29.3.1 2218 | dev: true 2219 | 2220 | /jest-get-type/27.5.1: 2221 | resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} 2222 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2223 | dev: true 2224 | 2225 | /jest-get-type/29.2.0: 2226 | resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} 2227 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2228 | dev: true 2229 | 2230 | /jest-haste-map/29.3.1: 2231 | resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} 2232 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2233 | dependencies: 2234 | '@jest/types': 29.3.1 2235 | '@types/graceful-fs': 4.1.6 2236 | '@types/node': 16.18.11 2237 | anymatch: 3.1.3 2238 | fb-watchman: 2.0.2 2239 | graceful-fs: 4.2.10 2240 | jest-regex-util: 29.2.0 2241 | jest-util: 29.3.1 2242 | jest-worker: 29.3.1 2243 | micromatch: 4.0.5 2244 | walker: 1.0.8 2245 | optionalDependencies: 2246 | fsevents: 2.3.2 2247 | dev: true 2248 | 2249 | /jest-leak-detector/29.3.1: 2250 | resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} 2251 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2252 | dependencies: 2253 | jest-get-type: 29.2.0 2254 | pretty-format: 29.3.1 2255 | dev: true 2256 | 2257 | /jest-matcher-utils/27.5.1: 2258 | resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} 2259 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2260 | dependencies: 2261 | chalk: 4.1.2 2262 | jest-diff: 27.5.1 2263 | jest-get-type: 27.5.1 2264 | pretty-format: 27.5.1 2265 | dev: true 2266 | 2267 | /jest-matcher-utils/29.3.1: 2268 | resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} 2269 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2270 | dependencies: 2271 | chalk: 4.1.2 2272 | jest-diff: 29.3.1 2273 | jest-get-type: 29.2.0 2274 | pretty-format: 29.3.1 2275 | dev: true 2276 | 2277 | /jest-message-util/29.3.1: 2278 | resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} 2279 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2280 | dependencies: 2281 | '@babel/code-frame': 7.18.6 2282 | '@jest/types': 29.3.1 2283 | '@types/stack-utils': 2.0.1 2284 | chalk: 4.1.2 2285 | graceful-fs: 4.2.10 2286 | micromatch: 4.0.5 2287 | pretty-format: 29.3.1 2288 | slash: 3.0.0 2289 | stack-utils: 2.0.6 2290 | dev: true 2291 | 2292 | /jest-mock/29.3.1: 2293 | resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} 2294 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2295 | dependencies: 2296 | '@jest/types': 29.3.1 2297 | '@types/node': 16.18.11 2298 | jest-util: 29.3.1 2299 | dev: true 2300 | 2301 | /jest-pnp-resolver/1.2.3_jest-resolve@29.3.1: 2302 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 2303 | engines: {node: '>=6'} 2304 | peerDependencies: 2305 | jest-resolve: '*' 2306 | peerDependenciesMeta: 2307 | jest-resolve: 2308 | optional: true 2309 | dependencies: 2310 | jest-resolve: 29.3.1 2311 | dev: true 2312 | 2313 | /jest-regex-util/29.2.0: 2314 | resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} 2315 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2316 | dev: true 2317 | 2318 | /jest-resolve-dependencies/29.3.1: 2319 | resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} 2320 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2321 | dependencies: 2322 | jest-regex-util: 29.2.0 2323 | jest-snapshot: 29.3.1 2324 | transitivePeerDependencies: 2325 | - supports-color 2326 | dev: true 2327 | 2328 | /jest-resolve/29.3.1: 2329 | resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} 2330 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2331 | dependencies: 2332 | chalk: 4.1.2 2333 | graceful-fs: 4.2.10 2334 | jest-haste-map: 29.3.1 2335 | jest-pnp-resolver: 1.2.3_jest-resolve@29.3.1 2336 | jest-util: 29.3.1 2337 | jest-validate: 29.3.1 2338 | resolve: 1.22.1 2339 | resolve.exports: 1.1.0 2340 | slash: 3.0.0 2341 | dev: true 2342 | 2343 | /jest-runner/29.3.1: 2344 | resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} 2345 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2346 | dependencies: 2347 | '@jest/console': 29.3.1 2348 | '@jest/environment': 29.3.1 2349 | '@jest/test-result': 29.3.1 2350 | '@jest/transform': 29.3.1 2351 | '@jest/types': 29.3.1 2352 | '@types/node': 16.18.11 2353 | chalk: 4.1.2 2354 | emittery: 0.13.1 2355 | graceful-fs: 4.2.10 2356 | jest-docblock: 29.2.0 2357 | jest-environment-node: 29.3.1 2358 | jest-haste-map: 29.3.1 2359 | jest-leak-detector: 29.3.1 2360 | jest-message-util: 29.3.1 2361 | jest-resolve: 29.3.1 2362 | jest-runtime: 29.3.1 2363 | jest-util: 29.3.1 2364 | jest-watcher: 29.3.1 2365 | jest-worker: 29.3.1 2366 | p-limit: 3.1.0 2367 | source-map-support: 0.5.13 2368 | transitivePeerDependencies: 2369 | - supports-color 2370 | dev: true 2371 | 2372 | /jest-runtime/29.3.1: 2373 | resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} 2374 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2375 | dependencies: 2376 | '@jest/environment': 29.3.1 2377 | '@jest/fake-timers': 29.3.1 2378 | '@jest/globals': 29.3.1 2379 | '@jest/source-map': 29.2.0 2380 | '@jest/test-result': 29.3.1 2381 | '@jest/transform': 29.3.1 2382 | '@jest/types': 29.3.1 2383 | '@types/node': 16.18.11 2384 | chalk: 4.1.2 2385 | cjs-module-lexer: 1.2.2 2386 | collect-v8-coverage: 1.0.1 2387 | glob: 7.2.3 2388 | graceful-fs: 4.2.10 2389 | jest-haste-map: 29.3.1 2390 | jest-message-util: 29.3.1 2391 | jest-mock: 29.3.1 2392 | jest-regex-util: 29.2.0 2393 | jest-resolve: 29.3.1 2394 | jest-snapshot: 29.3.1 2395 | jest-util: 29.3.1 2396 | slash: 3.0.0 2397 | strip-bom: 4.0.0 2398 | transitivePeerDependencies: 2399 | - supports-color 2400 | dev: true 2401 | 2402 | /jest-snapshot/29.3.1: 2403 | resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} 2404 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2405 | dependencies: 2406 | '@babel/core': 7.20.12 2407 | '@babel/generator': 7.20.7 2408 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 2409 | '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 2410 | '@babel/traverse': 7.20.12 2411 | '@babel/types': 7.20.7 2412 | '@jest/expect-utils': 29.3.1 2413 | '@jest/transform': 29.3.1 2414 | '@jest/types': 29.3.1 2415 | '@types/babel__traverse': 7.18.3 2416 | '@types/prettier': 2.7.2 2417 | babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 2418 | chalk: 4.1.2 2419 | expect: 29.3.1 2420 | graceful-fs: 4.2.10 2421 | jest-diff: 29.3.1 2422 | jest-get-type: 29.2.0 2423 | jest-haste-map: 29.3.1 2424 | jest-matcher-utils: 29.3.1 2425 | jest-message-util: 29.3.1 2426 | jest-util: 29.3.1 2427 | natural-compare: 1.4.0 2428 | pretty-format: 29.3.1 2429 | semver: 7.3.8 2430 | transitivePeerDependencies: 2431 | - supports-color 2432 | dev: true 2433 | 2434 | /jest-util/29.3.1: 2435 | resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} 2436 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2437 | dependencies: 2438 | '@jest/types': 29.3.1 2439 | '@types/node': 16.18.11 2440 | chalk: 4.1.2 2441 | ci-info: 3.7.1 2442 | graceful-fs: 4.2.10 2443 | picomatch: 2.3.1 2444 | dev: true 2445 | 2446 | /jest-validate/29.3.1: 2447 | resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} 2448 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2449 | dependencies: 2450 | '@jest/types': 29.3.1 2451 | camelcase: 6.3.0 2452 | chalk: 4.1.2 2453 | jest-get-type: 29.2.0 2454 | leven: 3.1.0 2455 | pretty-format: 29.3.1 2456 | dev: true 2457 | 2458 | /jest-watcher/29.3.1: 2459 | resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} 2460 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2461 | dependencies: 2462 | '@jest/test-result': 29.3.1 2463 | '@jest/types': 29.3.1 2464 | '@types/node': 16.18.11 2465 | ansi-escapes: 4.3.2 2466 | chalk: 4.1.2 2467 | emittery: 0.13.1 2468 | jest-util: 29.3.1 2469 | string-length: 4.0.2 2470 | dev: true 2471 | 2472 | /jest-worker/29.3.1: 2473 | resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} 2474 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2475 | dependencies: 2476 | '@types/node': 16.18.11 2477 | jest-util: 29.3.1 2478 | merge-stream: 2.0.0 2479 | supports-color: 8.1.1 2480 | dev: true 2481 | 2482 | /js-tokens/4.0.0: 2483 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2484 | dev: true 2485 | 2486 | /js-yaml/3.14.1: 2487 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2488 | hasBin: true 2489 | dependencies: 2490 | argparse: 1.0.10 2491 | esprima: 4.0.1 2492 | dev: true 2493 | 2494 | /jsesc/2.5.2: 2495 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2496 | engines: {node: '>=4'} 2497 | hasBin: true 2498 | dev: true 2499 | 2500 | /json-parse-even-better-errors/2.3.1: 2501 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2502 | dev: true 2503 | 2504 | /json5/2.2.3: 2505 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2506 | engines: {node: '>=6'} 2507 | hasBin: true 2508 | dev: true 2509 | 2510 | /kleur/3.0.3: 2511 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2512 | engines: {node: '>=6'} 2513 | dev: true 2514 | 2515 | /leven/3.1.0: 2516 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2517 | engines: {node: '>=6'} 2518 | dev: true 2519 | 2520 | /lines-and-columns/1.2.4: 2521 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2522 | dev: true 2523 | 2524 | /locate-path/5.0.0: 2525 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2526 | engines: {node: '>=8'} 2527 | dependencies: 2528 | p-locate: 4.1.0 2529 | dev: true 2530 | 2531 | /lru-cache/5.1.1: 2532 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2533 | dependencies: 2534 | yallist: 3.1.1 2535 | dev: true 2536 | 2537 | /lru-cache/6.0.0: 2538 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2539 | engines: {node: '>=10'} 2540 | dependencies: 2541 | yallist: 4.0.0 2542 | dev: true 2543 | 2544 | /magic-string/0.27.0: 2545 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 2546 | engines: {node: '>=12'} 2547 | dependencies: 2548 | '@jridgewell/sourcemap-codec': 1.4.14 2549 | dev: true 2550 | 2551 | /make-dir/3.1.0: 2552 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2553 | engines: {node: '>=8'} 2554 | dependencies: 2555 | semver: 6.3.0 2556 | dev: true 2557 | 2558 | /make-error/1.3.6: 2559 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2560 | dev: true 2561 | 2562 | /makeerror/1.0.12: 2563 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 2564 | dependencies: 2565 | tmpl: 1.0.5 2566 | dev: true 2567 | 2568 | /merge-stream/2.0.0: 2569 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2570 | dev: true 2571 | 2572 | /merge2/1.4.1: 2573 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2574 | engines: {node: '>= 8'} 2575 | dev: true 2576 | 2577 | /micromatch/4.0.5: 2578 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2579 | engines: {node: '>=8.6'} 2580 | dependencies: 2581 | braces: 3.0.2 2582 | picomatch: 2.3.1 2583 | dev: true 2584 | 2585 | /mimic-fn/2.1.0: 2586 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2587 | engines: {node: '>=6'} 2588 | dev: true 2589 | 2590 | /minimatch/3.1.2: 2591 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2592 | dependencies: 2593 | brace-expansion: 1.1.11 2594 | dev: true 2595 | 2596 | /minimatch/5.1.2: 2597 | resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==} 2598 | engines: {node: '>=10'} 2599 | dependencies: 2600 | brace-expansion: 2.0.1 2601 | dev: true 2602 | 2603 | /ms/2.1.2: 2604 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2605 | dev: true 2606 | 2607 | /mylas/2.1.13: 2608 | resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} 2609 | engines: {node: '>=12.0.0'} 2610 | dev: true 2611 | 2612 | /mz/2.7.0: 2613 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2614 | dependencies: 2615 | any-promise: 1.3.0 2616 | object-assign: 4.1.1 2617 | thenify-all: 1.6.0 2618 | dev: true 2619 | 2620 | /natural-compare/1.4.0: 2621 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2622 | dev: true 2623 | 2624 | /node-int64/0.4.0: 2625 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 2626 | dev: true 2627 | 2628 | /node-releases/2.0.8: 2629 | resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} 2630 | dev: true 2631 | 2632 | /normalize-path/3.0.0: 2633 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2634 | engines: {node: '>=0.10.0'} 2635 | dev: true 2636 | 2637 | /npm-run-path/4.0.1: 2638 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2639 | engines: {node: '>=8'} 2640 | dependencies: 2641 | path-key: 3.1.1 2642 | dev: true 2643 | 2644 | /object-assign/4.1.1: 2645 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2646 | engines: {node: '>=0.10.0'} 2647 | dev: true 2648 | 2649 | /once/1.4.0: 2650 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2651 | dependencies: 2652 | wrappy: 1.0.2 2653 | dev: true 2654 | 2655 | /onetime/5.1.2: 2656 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2657 | engines: {node: '>=6'} 2658 | dependencies: 2659 | mimic-fn: 2.1.0 2660 | dev: true 2661 | 2662 | /p-limit/2.3.0: 2663 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2664 | engines: {node: '>=6'} 2665 | dependencies: 2666 | p-try: 2.2.0 2667 | dev: true 2668 | 2669 | /p-limit/3.1.0: 2670 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2671 | engines: {node: '>=10'} 2672 | dependencies: 2673 | yocto-queue: 0.1.0 2674 | dev: true 2675 | 2676 | /p-locate/4.1.0: 2677 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2678 | engines: {node: '>=8'} 2679 | dependencies: 2680 | p-limit: 2.3.0 2681 | dev: true 2682 | 2683 | /p-try/2.2.0: 2684 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2685 | engines: {node: '>=6'} 2686 | dev: true 2687 | 2688 | /parse-json/5.2.0: 2689 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2690 | engines: {node: '>=8'} 2691 | dependencies: 2692 | '@babel/code-frame': 7.18.6 2693 | error-ex: 1.3.2 2694 | json-parse-even-better-errors: 2.3.1 2695 | lines-and-columns: 1.2.4 2696 | dev: true 2697 | 2698 | /parse5-htmlparser2-tree-adapter/7.0.0: 2699 | resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} 2700 | dependencies: 2701 | domhandler: 5.0.3 2702 | parse5: 7.1.2 2703 | dev: true 2704 | 2705 | /parse5/7.1.2: 2706 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 2707 | dependencies: 2708 | entities: 4.4.0 2709 | dev: true 2710 | 2711 | /path-exists/4.0.0: 2712 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2713 | engines: {node: '>=8'} 2714 | dev: true 2715 | 2716 | /path-is-absolute/1.0.1: 2717 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2718 | engines: {node: '>=0.10.0'} 2719 | dev: true 2720 | 2721 | /path-key/3.1.1: 2722 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2723 | engines: {node: '>=8'} 2724 | dev: true 2725 | 2726 | /path-parse/1.0.7: 2727 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2728 | dev: true 2729 | 2730 | /path-type/4.0.0: 2731 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2732 | engines: {node: '>=8'} 2733 | dev: true 2734 | 2735 | /periscopic/3.0.4: 2736 | resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} 2737 | dependencies: 2738 | estree-walker: 3.0.2 2739 | is-reference: 3.0.1 2740 | dev: true 2741 | 2742 | /picocolors/1.0.0: 2743 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2744 | dev: true 2745 | 2746 | /picomatch/2.3.1: 2747 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2748 | engines: {node: '>=8.6'} 2749 | dev: true 2750 | 2751 | /pirates/4.0.5: 2752 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2753 | engines: {node: '>= 6'} 2754 | dev: true 2755 | 2756 | /pkg-dir/4.2.0: 2757 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2758 | engines: {node: '>=8'} 2759 | dependencies: 2760 | find-up: 4.1.0 2761 | dev: true 2762 | 2763 | /plimit-lit/1.5.0: 2764 | resolution: {integrity: sha512-Eb/MqCb1Iv/ok4m1FqIXqvUKPISufcjZ605hl3KM/n8GaX8zfhtgdLwZU3vKjuHGh2O9Rjog/bHTq8ofIShdng==} 2765 | dependencies: 2766 | queue-lit: 1.5.0 2767 | dev: true 2768 | 2769 | /prettier/2.8.2: 2770 | resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} 2771 | engines: {node: '>=10.13.0'} 2772 | hasBin: true 2773 | dev: true 2774 | 2775 | /pretty-format/27.5.1: 2776 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 2777 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2778 | dependencies: 2779 | ansi-regex: 5.0.1 2780 | ansi-styles: 5.2.0 2781 | react-is: 17.0.2 2782 | dev: true 2783 | 2784 | /pretty-format/29.3.1: 2785 | resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} 2786 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2787 | dependencies: 2788 | '@jest/schemas': 29.0.0 2789 | ansi-styles: 5.2.0 2790 | react-is: 18.2.0 2791 | dev: true 2792 | 2793 | /prompts/2.4.2: 2794 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 2795 | engines: {node: '>= 6'} 2796 | dependencies: 2797 | kleur: 3.0.3 2798 | sisteransi: 1.0.5 2799 | dev: true 2800 | 2801 | /queue-lit/1.5.0: 2802 | resolution: {integrity: sha512-IslToJ4eiCEE9xwMzq3viOO5nH8sUWUCwoElrhNMozzr9IIt2qqvB4I+uHu/zJTQVqc9R5DFwok4ijNK1pU3fA==} 2803 | dev: true 2804 | 2805 | /queue-microtask/1.2.3: 2806 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2807 | dev: true 2808 | 2809 | /react-is/17.0.2: 2810 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2811 | dev: true 2812 | 2813 | /react-is/18.2.0: 2814 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 2815 | dev: true 2816 | 2817 | /readdirp/3.6.0: 2818 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2819 | engines: {node: '>=8.10.0'} 2820 | dependencies: 2821 | picomatch: 2.3.1 2822 | dev: true 2823 | 2824 | /require-directory/2.1.1: 2825 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2826 | engines: {node: '>=0.10.0'} 2827 | dev: true 2828 | 2829 | /resolve-cwd/3.0.0: 2830 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2831 | engines: {node: '>=8'} 2832 | dependencies: 2833 | resolve-from: 5.0.0 2834 | dev: true 2835 | 2836 | /resolve-from/5.0.0: 2837 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2838 | engines: {node: '>=8'} 2839 | dev: true 2840 | 2841 | /resolve.exports/1.1.0: 2842 | resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} 2843 | engines: {node: '>=10'} 2844 | dev: true 2845 | 2846 | /resolve/1.22.1: 2847 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2848 | hasBin: true 2849 | dependencies: 2850 | is-core-module: 2.11.0 2851 | path-parse: 1.0.7 2852 | supports-preserve-symlinks-flag: 1.0.0 2853 | dev: true 2854 | 2855 | /reusify/1.0.4: 2856 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2857 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2858 | dev: true 2859 | 2860 | /rimraf/3.0.2: 2861 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2862 | hasBin: true 2863 | dependencies: 2864 | glob: 7.2.3 2865 | dev: true 2866 | 2867 | /rollup/2.79.1: 2868 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 2869 | engines: {node: '>=10.0.0'} 2870 | hasBin: true 2871 | optionalDependencies: 2872 | fsevents: 2.3.2 2873 | dev: true 2874 | 2875 | /run-parallel/1.2.0: 2876 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2877 | dependencies: 2878 | queue-microtask: 1.2.3 2879 | dev: true 2880 | 2881 | /semver/6.3.0: 2882 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2883 | hasBin: true 2884 | dev: true 2885 | 2886 | /semver/7.3.8: 2887 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2888 | engines: {node: '>=10'} 2889 | hasBin: true 2890 | dependencies: 2891 | lru-cache: 6.0.0 2892 | dev: true 2893 | 2894 | /shebang-command/2.0.0: 2895 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2896 | engines: {node: '>=8'} 2897 | dependencies: 2898 | shebang-regex: 3.0.0 2899 | dev: true 2900 | 2901 | /shebang-regex/3.0.0: 2902 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2903 | engines: {node: '>=8'} 2904 | dev: true 2905 | 2906 | /signal-exit/3.0.7: 2907 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2908 | dev: true 2909 | 2910 | /sisteransi/1.0.5: 2911 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2912 | dev: true 2913 | 2914 | /slash/3.0.0: 2915 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2916 | engines: {node: '>=8'} 2917 | dev: true 2918 | 2919 | /source-map-support/0.5.13: 2920 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} 2921 | dependencies: 2922 | buffer-from: 1.1.2 2923 | source-map: 0.6.1 2924 | dev: true 2925 | 2926 | /source-map-support/0.5.21: 2927 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2928 | dependencies: 2929 | buffer-from: 1.1.2 2930 | source-map: 0.6.1 2931 | dev: true 2932 | 2933 | /source-map/0.6.1: 2934 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2935 | engines: {node: '>=0.10.0'} 2936 | dev: true 2937 | 2938 | /sourcemap-codec/1.4.8: 2939 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2940 | deprecated: Please use @jridgewell/sourcemap-codec instead 2941 | dev: true 2942 | 2943 | /sprintf-js/1.0.3: 2944 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2945 | dev: true 2946 | 2947 | /stack-utils/2.0.6: 2948 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 2949 | engines: {node: '>=10'} 2950 | dependencies: 2951 | escape-string-regexp: 2.0.0 2952 | dev: true 2953 | 2954 | /string-length/4.0.2: 2955 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 2956 | engines: {node: '>=10'} 2957 | dependencies: 2958 | char-regex: 1.0.2 2959 | strip-ansi: 6.0.1 2960 | dev: true 2961 | 2962 | /string-width/4.2.3: 2963 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2964 | engines: {node: '>=8'} 2965 | dependencies: 2966 | emoji-regex: 8.0.0 2967 | is-fullwidth-code-point: 3.0.0 2968 | strip-ansi: 6.0.1 2969 | dev: true 2970 | 2971 | /strip-ansi/6.0.1: 2972 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2973 | engines: {node: '>=8'} 2974 | dependencies: 2975 | ansi-regex: 5.0.1 2976 | dev: true 2977 | 2978 | /strip-bom/4.0.0: 2979 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 2980 | engines: {node: '>=8'} 2981 | dev: true 2982 | 2983 | /strip-final-newline/2.0.0: 2984 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2985 | engines: {node: '>=6'} 2986 | dev: true 2987 | 2988 | /strip-json-comments/3.1.1: 2989 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2990 | engines: {node: '>=8'} 2991 | dev: true 2992 | 2993 | /sucrase/3.29.0: 2994 | resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} 2995 | engines: {node: '>=8'} 2996 | hasBin: true 2997 | dependencies: 2998 | commander: 4.1.1 2999 | glob: 7.1.6 3000 | lines-and-columns: 1.2.4 3001 | mz: 2.7.0 3002 | pirates: 4.0.5 3003 | ts-interface-checker: 0.1.13 3004 | dev: true 3005 | 3006 | /supports-color/5.5.0: 3007 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3008 | engines: {node: '>=4'} 3009 | dependencies: 3010 | has-flag: 3.0.0 3011 | dev: true 3012 | 3013 | /supports-color/7.2.0: 3014 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3015 | engines: {node: '>=8'} 3016 | dependencies: 3017 | has-flag: 4.0.0 3018 | dev: true 3019 | 3020 | /supports-color/8.1.1: 3021 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 3022 | engines: {node: '>=10'} 3023 | dependencies: 3024 | has-flag: 4.0.0 3025 | dev: true 3026 | 3027 | /supports-preserve-symlinks-flag/1.0.0: 3028 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3029 | engines: {node: '>= 0.4'} 3030 | dev: true 3031 | 3032 | /test-exclude/6.0.0: 3033 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 3034 | engines: {node: '>=8'} 3035 | dependencies: 3036 | '@istanbuljs/schema': 0.1.3 3037 | glob: 7.2.3 3038 | minimatch: 3.1.2 3039 | dev: true 3040 | 3041 | /thenify-all/1.6.0: 3042 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3043 | engines: {node: '>=0.8'} 3044 | dependencies: 3045 | thenify: 3.3.1 3046 | dev: true 3047 | 3048 | /thenify/3.3.1: 3049 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3050 | dependencies: 3051 | any-promise: 1.3.0 3052 | dev: true 3053 | 3054 | /tmpl/1.0.5: 3055 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 3056 | dev: true 3057 | 3058 | /to-fast-properties/2.0.0: 3059 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3060 | engines: {node: '>=4'} 3061 | dev: true 3062 | 3063 | /to-regex-range/5.0.1: 3064 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3065 | engines: {node: '>=8.0'} 3066 | dependencies: 3067 | is-number: 7.0.0 3068 | dev: true 3069 | 3070 | /ts-interface-checker/0.1.13: 3071 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3072 | dev: true 3073 | 3074 | /ts-node/10.9.1_j6w75qxuvt5djadh2qwj7tbyma: 3075 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 3076 | hasBin: true 3077 | peerDependencies: 3078 | '@swc/core': '>=1.2.50' 3079 | '@swc/wasm': '>=1.2.50' 3080 | '@types/node': '*' 3081 | typescript: '>=2.7' 3082 | peerDependenciesMeta: 3083 | '@swc/core': 3084 | optional: true 3085 | '@swc/wasm': 3086 | optional: true 3087 | dependencies: 3088 | '@cspotcode/source-map-support': 0.8.1 3089 | '@swc/core': 1.3.25 3090 | '@tsconfig/node10': 1.0.9 3091 | '@tsconfig/node12': 1.0.11 3092 | '@tsconfig/node14': 1.0.3 3093 | '@tsconfig/node16': 1.0.3 3094 | '@types/node': 16.18.11 3095 | acorn: 8.8.1 3096 | acorn-walk: 8.2.0 3097 | arg: 4.1.3 3098 | create-require: 1.1.1 3099 | diff: 4.0.2 3100 | make-error: 1.3.6 3101 | typescript: 4.9.4 3102 | v8-compile-cache-lib: 3.0.1 3103 | yn: 3.1.1 3104 | dev: true 3105 | 3106 | /tsc-alias/1.8.2: 3107 | resolution: {integrity: sha512-ukBkcNekOgwtnSWYLD5QsMX3yQWg7JviAs8zg3qJGgu4LGtY3tsV4G6vnqvOXIDkbC+XL9vbhObWSpRA5/6wbg==} 3108 | hasBin: true 3109 | dependencies: 3110 | chokidar: 3.5.3 3111 | commander: 9.5.0 3112 | globby: 11.1.0 3113 | mylas: 2.1.13 3114 | normalize-path: 3.0.0 3115 | plimit-lit: 1.5.0 3116 | dev: true 3117 | 3118 | /tslib/2.4.1: 3119 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 3120 | dev: true 3121 | 3122 | /type-detect/4.0.8: 3123 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3124 | engines: {node: '>=4'} 3125 | dev: true 3126 | 3127 | /type-fest/0.21.3: 3128 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 3129 | engines: {node: '>=10'} 3130 | dev: true 3131 | 3132 | /typescript/4.9.4: 3133 | resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} 3134 | engines: {node: '>=4.2.0'} 3135 | hasBin: true 3136 | dev: true 3137 | 3138 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 3139 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 3140 | hasBin: true 3141 | peerDependencies: 3142 | browserslist: '>= 4.21.0' 3143 | dependencies: 3144 | browserslist: 4.21.4 3145 | escalade: 3.1.1 3146 | picocolors: 1.0.0 3147 | dev: true 3148 | 3149 | /v8-compile-cache-lib/3.0.1: 3150 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 3151 | dev: true 3152 | 3153 | /v8-to-istanbul/9.0.1: 3154 | resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} 3155 | engines: {node: '>=10.12.0'} 3156 | dependencies: 3157 | '@jridgewell/trace-mapping': 0.3.17 3158 | '@types/istanbul-lib-coverage': 2.0.4 3159 | convert-source-map: 1.9.0 3160 | dev: true 3161 | 3162 | /walker/1.0.8: 3163 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 3164 | dependencies: 3165 | makeerror: 1.0.12 3166 | dev: true 3167 | 3168 | /which/2.0.2: 3169 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3170 | engines: {node: '>= 8'} 3171 | hasBin: true 3172 | dependencies: 3173 | isexe: 2.0.0 3174 | dev: true 3175 | 3176 | /wrap-ansi/7.0.0: 3177 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3178 | engines: {node: '>=10'} 3179 | dependencies: 3180 | ansi-styles: 4.3.0 3181 | string-width: 4.2.3 3182 | strip-ansi: 6.0.1 3183 | dev: true 3184 | 3185 | /wrappy/1.0.2: 3186 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3187 | dev: true 3188 | 3189 | /write-file-atomic/4.0.2: 3190 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} 3191 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 3192 | dependencies: 3193 | imurmurhash: 0.1.4 3194 | signal-exit: 3.0.7 3195 | dev: true 3196 | 3197 | /y18n/5.0.8: 3198 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3199 | engines: {node: '>=10'} 3200 | dev: true 3201 | 3202 | /yallist/3.1.1: 3203 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3204 | dev: true 3205 | 3206 | /yallist/4.0.0: 3207 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3208 | dev: true 3209 | 3210 | /yargs-parser/21.1.1: 3211 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3212 | engines: {node: '>=12'} 3213 | dev: true 3214 | 3215 | /yargs/17.6.2: 3216 | resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} 3217 | engines: {node: '>=12'} 3218 | dependencies: 3219 | cliui: 8.0.1 3220 | escalade: 3.1.1 3221 | get-caller-file: 2.0.5 3222 | require-directory: 2.1.1 3223 | string-width: 4.2.3 3224 | y18n: 5.0.8 3225 | yargs-parser: 21.1.1 3226 | dev: true 3227 | 3228 | /yn/3.1.1: 3229 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 3230 | engines: {node: '>=6'} 3231 | dev: true 3232 | 3233 | /yocto-queue/0.1.0: 3234 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3235 | engines: {node: '>=10'} 3236 | dev: true 3237 | --------------------------------------------------------------------------------