├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── LICENSE ├── README.md ├── cjs ├── index.js └── package.json ├── es.js ├── esm └── index.js ├── package-lock.json ├── package.json ├── rollup └── es.config.js ├── test ├── index.html └── index.js └── types └── index.d.ts /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: build 5 | 6 | on: [push, pull_request] 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [16] 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v2 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | cache: 'npm' 24 | - run: npm ci 25 | - run: npm run build --if-present 26 | - run: npm test 27 | - run: npm run coverage --if-present 28 | - name: Coveralls 29 | uses: coverallsapp/github-action@master 30 | with: 31 | github-token: ${{ secrets.GITHUB_TOKEN }} 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .nyc_output 3 | coverage/ 4 | node_modules/ 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .nyc_output 3 | .eslintrc.json 4 | .github/ 5 | .travis.yml 6 | coverage/ 7 | node_modules/ 8 | rollup/ 9 | test/ 10 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | package-lock=true 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2023, Andrea Giammarchi, @WebReflection 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14 | OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # handy-wrap 2 | 3 | [![build status](https://github.com/WebReflection/handy-wrap/actions/workflows/node.js.yml/badge.svg)](https://github.com/WebReflection/handy-wrap/actions) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/handy-wrap/badge.svg?branch=main)](https://coveralls.io/github/WebReflection/handy-wrap?branch=main) 4 | 5 | **Social Media Photo by [Rudy Dong](https://unsplash.com/@mrdongok) on [Unsplash](https://unsplash.com/)** 6 | 7 | A generic `EventTarget` Proxy wrapper to chain and/or group common operations, used to showcase [this blog post](https://webreflection.medium.com/taming-the-web-speech-api-ef64f5a245e1) code. 8 | 9 | This module is *450 bytes* once minified (plus brotli). 10 | 11 | ### Single 12 | * `$('css'[, parent])` to query the document and handle a single reference 13 | * `$(target)` to wrap directly an *EventTarget* implemented interface 14 | * `$(t).on(type, ...rest)` to add a listener and chain the proxy 15 | * `$(t).emit(type, ...rest)` to dispatch an event and chain the proxy 16 | * `$(t).field` to get the field value 17 | * `$(t).field = value` to set a field value 18 | * `$(t).method(...args)` to invoke a (bound) method and chain the proxy 19 | * `$(t).valueOf()` to retrieve the wrapped reference 20 | 21 | ### List 22 | * `$$('css'[, parent])` to query the document and handle a list of references 23 | * `$$([target1, target2, ...targetN])` to wrap directly more *EventTarget* implemented interfaces 24 | * `$$([...t]).on(type, ...rest)` to add a listener to all targets and chain the proxy 25 | * `$$([...t]).emit(type, ...rest)` to dispatch many events and chain the proxy 26 | * `$$([...t]).field` to get all fields values as array 27 | * `$$([...t]).field = value` to set all fields values 28 | * `$$([...t]).method(...args)` to invoke all (bound) methods and chain the proxy 29 | * `$$([...t]).valueOf()` to retrieve the list of references 30 | * `$$([...t]).length` to retrieve the `length` of the list 31 | 32 | ### Plugins 33 | 34 | This module exports a `plugins` *Map* to enhance the utilities as needed. 35 | 36 | ```js 37 | // import {$, $$, plugins} from 'https://unpkg.com/handy-wrap'; 38 | import {$, $$, plugins} from 'handy-wrap'; 39 | 40 | const html = Symbol('html'); 41 | 42 | plugins.set(html, (value, name, proxy) => { 43 | const output = []; 44 | for (const node of (value instanceof NodeList ? value : [value])) 45 | output.push(node.outerHTML); 46 | return output.join(''); 47 | }); 48 | 49 | // returns the document.body HTML 50 | $('body')[html]; 51 | 52 | // returns all
  • as HTML 53 | $$('li')[html]; 54 | ``` 55 | -------------------------------------------------------------------------------- /cjs/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /*! (c) Andrea Giammarchi - ISC */ 3 | 4 | const {iterator} = Symbol; 5 | 6 | const plugins = new Map; 7 | exports.plugins = plugins; 8 | 9 | const valueOf = (_, $) => _ ? $.at(0) : $; 10 | 11 | const handler = { 12 | get({_, $}, name, proxy) { 13 | if (plugins.has(name)) 14 | return plugins.get(name)(valueOf(_, $), name, proxy); 15 | switch (name) { 16 | case iterator: return $[iterator].bind($); 17 | case 'emit': return (type, ...args) => { 18 | for (let i = 0; i < $.length; i++) 19 | $[i].dispatchEvent(new Event(type, ...args)); 20 | return proxy; 21 | }; 22 | case 'length': return valueOf(_, $)?.length; 23 | case 'valueOf': return () => valueOf(_, $); 24 | case 'on': name = 'addEventListener'; 25 | default: { 26 | let value; 27 | for (let i = 0; i < $.length; i++) { 28 | if (i) value[i] = $[i][name]; 29 | else { 30 | value = $[i][name]; 31 | if (typeof value === 'function') return (...args) => { 32 | for (let i = 0; i < $.length; i++) $[i][name](...args); 33 | return proxy; 34 | }; 35 | if (_) return value; 36 | value = [value]; 37 | } 38 | } 39 | return value; 40 | } 41 | } 42 | }, 43 | set({$}, name, value) { 44 | for (let i = 0; i < $.length; i++) $[i][name] = value; 45 | return true; 46 | } 47 | }; 48 | 49 | const query = (target, name, parent = globalThis.document) => 50 | typeof target === 'string' ? parent[name](target) : target.valueOf(); 51 | 52 | const $ = (target, parent) => new Proxy( 53 | {_: 1, $: [query(target, 'querySelector', parent)]}, 54 | handler 55 | ); 56 | exports.$ = $; 57 | 58 | const $$ = (target, parent) => new Proxy( 59 | {_: 0, $: query(target, 'querySelectorAll', parent)}, 60 | handler 61 | ); 62 | exports.$$ = $$; 63 | -------------------------------------------------------------------------------- /cjs/package.json: -------------------------------------------------------------------------------- 1 | {"type":"commonjs"} -------------------------------------------------------------------------------- /es.js: -------------------------------------------------------------------------------- 1 | /*! (c) Andrea Giammarchi - ISC */ 2 | const{iterator:e}=Symbol,t=new Map,r=(e,t)=>e?t.at(0):t,n={get({_:n,$:l},o,u){if(t.has(o))return t.get(o)(r(n,l),o,u);switch(o){case e:return l[e].bind(l);case"emit":return(e,...t)=>{for(let r=0;rr(n,l);case"on":o="addEventListener";default:{let e;for(let t=0;t{for(let t=0;t"string"==typeof e?r[t](e):e.valueOf(),o=(e,t)=>new Proxy({_:1,$:[l(e,"querySelector",t)]},n),u=(e,t)=>new Proxy({_:0,$:l(e,"querySelectorAll",t)},n);export{o as $,u as $$,t as plugins}; 3 | -------------------------------------------------------------------------------- /esm/index.js: -------------------------------------------------------------------------------- 1 | /*! (c) Andrea Giammarchi - ISC */ 2 | 3 | const {iterator} = Symbol; 4 | 5 | export const plugins = new Map; 6 | 7 | const valueOf = (_, $) => _ ? $.at(0) : $; 8 | 9 | const handler = { 10 | get({_, $}, name, proxy) { 11 | if (plugins.has(name)) 12 | return plugins.get(name)(valueOf(_, $), name, proxy); 13 | switch (name) { 14 | case iterator: return $[iterator].bind($); 15 | case 'emit': return (type, ...args) => { 16 | for (let i = 0; i < $.length; i++) 17 | $[i].dispatchEvent(new Event(type, ...args)); 18 | return proxy; 19 | }; 20 | case 'length': return valueOf(_, $)?.length; 21 | case 'valueOf': return () => valueOf(_, $); 22 | case 'on': name = 'addEventListener'; 23 | default: { 24 | let value; 25 | for (let i = 0; i < $.length; i++) { 26 | if (i) value[i] = $[i][name]; 27 | else { 28 | value = $[i][name]; 29 | if (typeof value === 'function') return (...args) => { 30 | for (let i = 0; i < $.length; i++) $[i][name](...args); 31 | return proxy; 32 | }; 33 | if (_) return value; 34 | value = [value]; 35 | } 36 | } 37 | return value; 38 | } 39 | } 40 | }, 41 | set({$}, name, value) { 42 | for (let i = 0; i < $.length; i++) $[i][name] = value; 43 | return true; 44 | } 45 | }; 46 | 47 | const query = (target, name, parent = globalThis.document) => 48 | typeof target === 'string' ? parent[name](target) : target.valueOf(); 49 | 50 | export const $ = (target, parent) => new Proxy( 51 | {_: 1, $: [query(target, 'querySelector', parent)]}, 52 | handler 53 | ); 54 | 55 | export const $$ = (target, parent) => new Proxy( 56 | {_: 0, $: query(target, 'querySelectorAll', parent)}, 57 | handler 58 | ); 59 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handy-wrap", 3 | "version": "0.2.2", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "handy-wrap", 9 | "version": "0.2.2", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "@rollup/plugin-node-resolve": "^15.0.1", 13 | "@rollup/plugin-terser": "^0.4.0", 14 | "ascjs": "^5.0.1", 15 | "c8": "^7.12.0", 16 | "rollup": "^3.12.1" 17 | } 18 | }, 19 | "node_modules/@babel/parser": { 20 | "version": "7.20.13", 21 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", 22 | "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", 23 | "dev": true, 24 | "bin": { 25 | "parser": "bin/babel-parser.js" 26 | }, 27 | "engines": { 28 | "node": ">=6.0.0" 29 | } 30 | }, 31 | "node_modules/@bcoe/v8-coverage": { 32 | "version": "0.2.3", 33 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 34 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 35 | "dev": true 36 | }, 37 | "node_modules/@istanbuljs/schema": { 38 | "version": "0.1.3", 39 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 40 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 41 | "dev": true, 42 | "engines": { 43 | "node": ">=8" 44 | } 45 | }, 46 | "node_modules/@jridgewell/gen-mapping": { 47 | "version": "0.3.2", 48 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 49 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 50 | "dev": true, 51 | "dependencies": { 52 | "@jridgewell/set-array": "^1.0.1", 53 | "@jridgewell/sourcemap-codec": "^1.4.10", 54 | "@jridgewell/trace-mapping": "^0.3.9" 55 | }, 56 | "engines": { 57 | "node": ">=6.0.0" 58 | } 59 | }, 60 | "node_modules/@jridgewell/resolve-uri": { 61 | "version": "3.1.0", 62 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 63 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 64 | "dev": true, 65 | "engines": { 66 | "node": ">=6.0.0" 67 | } 68 | }, 69 | "node_modules/@jridgewell/set-array": { 70 | "version": "1.1.2", 71 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 72 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 73 | "dev": true, 74 | "engines": { 75 | "node": ">=6.0.0" 76 | } 77 | }, 78 | "node_modules/@jridgewell/source-map": { 79 | "version": "0.3.2", 80 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 81 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 82 | "dev": true, 83 | "dependencies": { 84 | "@jridgewell/gen-mapping": "^0.3.0", 85 | "@jridgewell/trace-mapping": "^0.3.9" 86 | } 87 | }, 88 | "node_modules/@jridgewell/sourcemap-codec": { 89 | "version": "1.4.14", 90 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 91 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 92 | "dev": true 93 | }, 94 | "node_modules/@jridgewell/trace-mapping": { 95 | "version": "0.3.17", 96 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 97 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 98 | "dev": true, 99 | "dependencies": { 100 | "@jridgewell/resolve-uri": "3.1.0", 101 | "@jridgewell/sourcemap-codec": "1.4.14" 102 | } 103 | }, 104 | "node_modules/@rollup/plugin-node-resolve": { 105 | "version": "15.0.1", 106 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", 107 | "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", 108 | "dev": true, 109 | "dependencies": { 110 | "@rollup/pluginutils": "^5.0.1", 111 | "@types/resolve": "1.20.2", 112 | "deepmerge": "^4.2.2", 113 | "is-builtin-module": "^3.2.0", 114 | "is-module": "^1.0.0", 115 | "resolve": "^1.22.1" 116 | }, 117 | "engines": { 118 | "node": ">=14.0.0" 119 | }, 120 | "peerDependencies": { 121 | "rollup": "^2.78.0||^3.0.0" 122 | }, 123 | "peerDependenciesMeta": { 124 | "rollup": { 125 | "optional": true 126 | } 127 | } 128 | }, 129 | "node_modules/@rollup/plugin-terser": { 130 | "version": "0.4.0", 131 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.0.tgz", 132 | "integrity": "sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw==", 133 | "dev": true, 134 | "dependencies": { 135 | "serialize-javascript": "^6.0.0", 136 | "smob": "^0.0.6", 137 | "terser": "^5.15.1" 138 | }, 139 | "engines": { 140 | "node": ">=14.0.0" 141 | }, 142 | "peerDependencies": { 143 | "rollup": "^2.x || ^3.x" 144 | }, 145 | "peerDependenciesMeta": { 146 | "rollup": { 147 | "optional": true 148 | } 149 | } 150 | }, 151 | "node_modules/@rollup/pluginutils": { 152 | "version": "5.0.2", 153 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 154 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 155 | "dev": true, 156 | "dependencies": { 157 | "@types/estree": "^1.0.0", 158 | "estree-walker": "^2.0.2", 159 | "picomatch": "^2.3.1" 160 | }, 161 | "engines": { 162 | "node": ">=14.0.0" 163 | }, 164 | "peerDependencies": { 165 | "rollup": "^1.20.0||^2.0.0||^3.0.0" 166 | }, 167 | "peerDependenciesMeta": { 168 | "rollup": { 169 | "optional": true 170 | } 171 | } 172 | }, 173 | "node_modules/@types/estree": { 174 | "version": "1.0.0", 175 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 176 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 177 | "dev": true 178 | }, 179 | "node_modules/@types/istanbul-lib-coverage": { 180 | "version": "2.0.4", 181 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 182 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", 183 | "dev": true 184 | }, 185 | "node_modules/@types/resolve": { 186 | "version": "1.20.2", 187 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 188 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 189 | "dev": true 190 | }, 191 | "node_modules/acorn": { 192 | "version": "8.8.2", 193 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 194 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 195 | "dev": true, 196 | "bin": { 197 | "acorn": "bin/acorn" 198 | }, 199 | "engines": { 200 | "node": ">=0.4.0" 201 | } 202 | }, 203 | "node_modules/ansi-regex": { 204 | "version": "5.0.1", 205 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 206 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 207 | "dev": true, 208 | "engines": { 209 | "node": ">=8" 210 | } 211 | }, 212 | "node_modules/ansi-styles": { 213 | "version": "4.3.0", 214 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 215 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 216 | "dev": true, 217 | "dependencies": { 218 | "color-convert": "^2.0.1" 219 | }, 220 | "engines": { 221 | "node": ">=8" 222 | }, 223 | "funding": { 224 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 225 | } 226 | }, 227 | "node_modules/ascjs": { 228 | "version": "5.0.1", 229 | "resolved": "https://registry.npmjs.org/ascjs/-/ascjs-5.0.1.tgz", 230 | "integrity": "sha512-1d/QdICzpywXiP53/Zz3fMdaC0/BB1ybLf+fK+QrqY8iyXNnWUHUrpmrowueXeswo+O+meJWm43TJSg2ClP3Sg==", 231 | "dev": true, 232 | "dependencies": { 233 | "@babel/parser": "^7.12.5" 234 | }, 235 | "bin": { 236 | "ascjs": "bin.js" 237 | } 238 | }, 239 | "node_modules/balanced-match": { 240 | "version": "1.0.2", 241 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 242 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 243 | "dev": true 244 | }, 245 | "node_modules/brace-expansion": { 246 | "version": "1.1.11", 247 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 248 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 249 | "dev": true, 250 | "dependencies": { 251 | "balanced-match": "^1.0.0", 252 | "concat-map": "0.0.1" 253 | } 254 | }, 255 | "node_modules/buffer-from": { 256 | "version": "1.1.2", 257 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 258 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 259 | "dev": true 260 | }, 261 | "node_modules/builtin-modules": { 262 | "version": "3.3.0", 263 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 264 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 265 | "dev": true, 266 | "engines": { 267 | "node": ">=6" 268 | }, 269 | "funding": { 270 | "url": "https://github.com/sponsors/sindresorhus" 271 | } 272 | }, 273 | "node_modules/c8": { 274 | "version": "7.12.0", 275 | "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", 276 | "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", 277 | "dev": true, 278 | "dependencies": { 279 | "@bcoe/v8-coverage": "^0.2.3", 280 | "@istanbuljs/schema": "^0.1.3", 281 | "find-up": "^5.0.0", 282 | "foreground-child": "^2.0.0", 283 | "istanbul-lib-coverage": "^3.2.0", 284 | "istanbul-lib-report": "^3.0.0", 285 | "istanbul-reports": "^3.1.4", 286 | "rimraf": "^3.0.2", 287 | "test-exclude": "^6.0.0", 288 | "v8-to-istanbul": "^9.0.0", 289 | "yargs": "^16.2.0", 290 | "yargs-parser": "^20.2.9" 291 | }, 292 | "bin": { 293 | "c8": "bin/c8.js" 294 | }, 295 | "engines": { 296 | "node": ">=10.12.0" 297 | } 298 | }, 299 | "node_modules/cliui": { 300 | "version": "7.0.4", 301 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 302 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 303 | "dev": true, 304 | "dependencies": { 305 | "string-width": "^4.2.0", 306 | "strip-ansi": "^6.0.0", 307 | "wrap-ansi": "^7.0.0" 308 | } 309 | }, 310 | "node_modules/color-convert": { 311 | "version": "2.0.1", 312 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 313 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 314 | "dev": true, 315 | "dependencies": { 316 | "color-name": "~1.1.4" 317 | }, 318 | "engines": { 319 | "node": ">=7.0.0" 320 | } 321 | }, 322 | "node_modules/color-name": { 323 | "version": "1.1.4", 324 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 325 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 326 | "dev": true 327 | }, 328 | "node_modules/commander": { 329 | "version": "2.20.3", 330 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 331 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 332 | "dev": true 333 | }, 334 | "node_modules/concat-map": { 335 | "version": "0.0.1", 336 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 337 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 338 | "dev": true 339 | }, 340 | "node_modules/convert-source-map": { 341 | "version": "1.9.0", 342 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 343 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 344 | "dev": true 345 | }, 346 | "node_modules/cross-spawn": { 347 | "version": "7.0.3", 348 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 349 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 350 | "dev": true, 351 | "dependencies": { 352 | "path-key": "^3.1.0", 353 | "shebang-command": "^2.0.0", 354 | "which": "^2.0.1" 355 | }, 356 | "engines": { 357 | "node": ">= 8" 358 | } 359 | }, 360 | "node_modules/deepmerge": { 361 | "version": "4.3.0", 362 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", 363 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", 364 | "dev": true, 365 | "engines": { 366 | "node": ">=0.10.0" 367 | } 368 | }, 369 | "node_modules/emoji-regex": { 370 | "version": "8.0.0", 371 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 372 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 373 | "dev": true 374 | }, 375 | "node_modules/escalade": { 376 | "version": "3.1.1", 377 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 378 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 379 | "dev": true, 380 | "engines": { 381 | "node": ">=6" 382 | } 383 | }, 384 | "node_modules/estree-walker": { 385 | "version": "2.0.2", 386 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 387 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 388 | "dev": true 389 | }, 390 | "node_modules/find-up": { 391 | "version": "5.0.0", 392 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 393 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 394 | "dev": true, 395 | "dependencies": { 396 | "locate-path": "^6.0.0", 397 | "path-exists": "^4.0.0" 398 | }, 399 | "engines": { 400 | "node": ">=10" 401 | }, 402 | "funding": { 403 | "url": "https://github.com/sponsors/sindresorhus" 404 | } 405 | }, 406 | "node_modules/foreground-child": { 407 | "version": "2.0.0", 408 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", 409 | "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", 410 | "dev": true, 411 | "dependencies": { 412 | "cross-spawn": "^7.0.0", 413 | "signal-exit": "^3.0.2" 414 | }, 415 | "engines": { 416 | "node": ">=8.0.0" 417 | } 418 | }, 419 | "node_modules/fs.realpath": { 420 | "version": "1.0.0", 421 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 422 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 423 | "dev": true 424 | }, 425 | "node_modules/fsevents": { 426 | "version": "2.3.2", 427 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 428 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 429 | "dev": true, 430 | "hasInstallScript": true, 431 | "optional": true, 432 | "os": [ 433 | "darwin" 434 | ], 435 | "engines": { 436 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 437 | } 438 | }, 439 | "node_modules/function-bind": { 440 | "version": "1.1.1", 441 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 442 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 443 | "dev": true 444 | }, 445 | "node_modules/get-caller-file": { 446 | "version": "2.0.5", 447 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 448 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 449 | "dev": true, 450 | "engines": { 451 | "node": "6.* || 8.* || >= 10.*" 452 | } 453 | }, 454 | "node_modules/glob": { 455 | "version": "7.2.3", 456 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 457 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 458 | "dev": true, 459 | "dependencies": { 460 | "fs.realpath": "^1.0.0", 461 | "inflight": "^1.0.4", 462 | "inherits": "2", 463 | "minimatch": "^3.1.1", 464 | "once": "^1.3.0", 465 | "path-is-absolute": "^1.0.0" 466 | }, 467 | "engines": { 468 | "node": "*" 469 | }, 470 | "funding": { 471 | "url": "https://github.com/sponsors/isaacs" 472 | } 473 | }, 474 | "node_modules/has": { 475 | "version": "1.0.3", 476 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 477 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 478 | "dev": true, 479 | "dependencies": { 480 | "function-bind": "^1.1.1" 481 | }, 482 | "engines": { 483 | "node": ">= 0.4.0" 484 | } 485 | }, 486 | "node_modules/has-flag": { 487 | "version": "4.0.0", 488 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 489 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 490 | "dev": true, 491 | "engines": { 492 | "node": ">=8" 493 | } 494 | }, 495 | "node_modules/html-escaper": { 496 | "version": "2.0.2", 497 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 498 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 499 | "dev": true 500 | }, 501 | "node_modules/inflight": { 502 | "version": "1.0.6", 503 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 504 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 505 | "dev": true, 506 | "dependencies": { 507 | "once": "^1.3.0", 508 | "wrappy": "1" 509 | } 510 | }, 511 | "node_modules/inherits": { 512 | "version": "2.0.4", 513 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 514 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 515 | "dev": true 516 | }, 517 | "node_modules/is-builtin-module": { 518 | "version": "3.2.1", 519 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 520 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 521 | "dev": true, 522 | "dependencies": { 523 | "builtin-modules": "^3.3.0" 524 | }, 525 | "engines": { 526 | "node": ">=6" 527 | }, 528 | "funding": { 529 | "url": "https://github.com/sponsors/sindresorhus" 530 | } 531 | }, 532 | "node_modules/is-core-module": { 533 | "version": "2.11.0", 534 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 535 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 536 | "dev": true, 537 | "dependencies": { 538 | "has": "^1.0.3" 539 | }, 540 | "funding": { 541 | "url": "https://github.com/sponsors/ljharb" 542 | } 543 | }, 544 | "node_modules/is-fullwidth-code-point": { 545 | "version": "3.0.0", 546 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 547 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 548 | "dev": true, 549 | "engines": { 550 | "node": ">=8" 551 | } 552 | }, 553 | "node_modules/is-module": { 554 | "version": "1.0.0", 555 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 556 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 557 | "dev": true 558 | }, 559 | "node_modules/isexe": { 560 | "version": "2.0.0", 561 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 562 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 563 | "dev": true 564 | }, 565 | "node_modules/istanbul-lib-coverage": { 566 | "version": "3.2.0", 567 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", 568 | "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", 569 | "dev": true, 570 | "engines": { 571 | "node": ">=8" 572 | } 573 | }, 574 | "node_modules/istanbul-lib-report": { 575 | "version": "3.0.0", 576 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 577 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 578 | "dev": true, 579 | "dependencies": { 580 | "istanbul-lib-coverage": "^3.0.0", 581 | "make-dir": "^3.0.0", 582 | "supports-color": "^7.1.0" 583 | }, 584 | "engines": { 585 | "node": ">=8" 586 | } 587 | }, 588 | "node_modules/istanbul-reports": { 589 | "version": "3.1.5", 590 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", 591 | "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", 592 | "dev": true, 593 | "dependencies": { 594 | "html-escaper": "^2.0.0", 595 | "istanbul-lib-report": "^3.0.0" 596 | }, 597 | "engines": { 598 | "node": ">=8" 599 | } 600 | }, 601 | "node_modules/locate-path": { 602 | "version": "6.0.0", 603 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 604 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 605 | "dev": true, 606 | "dependencies": { 607 | "p-locate": "^5.0.0" 608 | }, 609 | "engines": { 610 | "node": ">=10" 611 | }, 612 | "funding": { 613 | "url": "https://github.com/sponsors/sindresorhus" 614 | } 615 | }, 616 | "node_modules/make-dir": { 617 | "version": "3.1.0", 618 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 619 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 620 | "dev": true, 621 | "dependencies": { 622 | "semver": "^6.0.0" 623 | }, 624 | "engines": { 625 | "node": ">=8" 626 | }, 627 | "funding": { 628 | "url": "https://github.com/sponsors/sindresorhus" 629 | } 630 | }, 631 | "node_modules/minimatch": { 632 | "version": "3.1.2", 633 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 634 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 635 | "dev": true, 636 | "dependencies": { 637 | "brace-expansion": "^1.1.7" 638 | }, 639 | "engines": { 640 | "node": "*" 641 | } 642 | }, 643 | "node_modules/once": { 644 | "version": "1.4.0", 645 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 646 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 647 | "dev": true, 648 | "dependencies": { 649 | "wrappy": "1" 650 | } 651 | }, 652 | "node_modules/p-limit": { 653 | "version": "3.1.0", 654 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 655 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 656 | "dev": true, 657 | "dependencies": { 658 | "yocto-queue": "^0.1.0" 659 | }, 660 | "engines": { 661 | "node": ">=10" 662 | }, 663 | "funding": { 664 | "url": "https://github.com/sponsors/sindresorhus" 665 | } 666 | }, 667 | "node_modules/p-locate": { 668 | "version": "5.0.0", 669 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 670 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 671 | "dev": true, 672 | "dependencies": { 673 | "p-limit": "^3.0.2" 674 | }, 675 | "engines": { 676 | "node": ">=10" 677 | }, 678 | "funding": { 679 | "url": "https://github.com/sponsors/sindresorhus" 680 | } 681 | }, 682 | "node_modules/path-exists": { 683 | "version": "4.0.0", 684 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 685 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 686 | "dev": true, 687 | "engines": { 688 | "node": ">=8" 689 | } 690 | }, 691 | "node_modules/path-is-absolute": { 692 | "version": "1.0.1", 693 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 694 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 695 | "dev": true, 696 | "engines": { 697 | "node": ">=0.10.0" 698 | } 699 | }, 700 | "node_modules/path-key": { 701 | "version": "3.1.1", 702 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 703 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 704 | "dev": true, 705 | "engines": { 706 | "node": ">=8" 707 | } 708 | }, 709 | "node_modules/path-parse": { 710 | "version": "1.0.7", 711 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 712 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 713 | "dev": true 714 | }, 715 | "node_modules/picomatch": { 716 | "version": "2.3.1", 717 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 718 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 719 | "dev": true, 720 | "engines": { 721 | "node": ">=8.6" 722 | }, 723 | "funding": { 724 | "url": "https://github.com/sponsors/jonschlinkert" 725 | } 726 | }, 727 | "node_modules/randombytes": { 728 | "version": "2.1.0", 729 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 730 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 731 | "dev": true, 732 | "dependencies": { 733 | "safe-buffer": "^5.1.0" 734 | } 735 | }, 736 | "node_modules/require-directory": { 737 | "version": "2.1.1", 738 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 739 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 740 | "dev": true, 741 | "engines": { 742 | "node": ">=0.10.0" 743 | } 744 | }, 745 | "node_modules/resolve": { 746 | "version": "1.22.1", 747 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 748 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 749 | "dev": true, 750 | "dependencies": { 751 | "is-core-module": "^2.9.0", 752 | "path-parse": "^1.0.7", 753 | "supports-preserve-symlinks-flag": "^1.0.0" 754 | }, 755 | "bin": { 756 | "resolve": "bin/resolve" 757 | }, 758 | "funding": { 759 | "url": "https://github.com/sponsors/ljharb" 760 | } 761 | }, 762 | "node_modules/rimraf": { 763 | "version": "3.0.2", 764 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 765 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 766 | "dev": true, 767 | "dependencies": { 768 | "glob": "^7.1.3" 769 | }, 770 | "bin": { 771 | "rimraf": "bin.js" 772 | }, 773 | "funding": { 774 | "url": "https://github.com/sponsors/isaacs" 775 | } 776 | }, 777 | "node_modules/rollup": { 778 | "version": "3.12.1", 779 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.1.tgz", 780 | "integrity": "sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==", 781 | "dev": true, 782 | "bin": { 783 | "rollup": "dist/bin/rollup" 784 | }, 785 | "engines": { 786 | "node": ">=14.18.0", 787 | "npm": ">=8.0.0" 788 | }, 789 | "optionalDependencies": { 790 | "fsevents": "~2.3.2" 791 | } 792 | }, 793 | "node_modules/safe-buffer": { 794 | "version": "5.2.1", 795 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 796 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 797 | "dev": true, 798 | "funding": [ 799 | { 800 | "type": "github", 801 | "url": "https://github.com/sponsors/feross" 802 | }, 803 | { 804 | "type": "patreon", 805 | "url": "https://www.patreon.com/feross" 806 | }, 807 | { 808 | "type": "consulting", 809 | "url": "https://feross.org/support" 810 | } 811 | ] 812 | }, 813 | "node_modules/semver": { 814 | "version": "6.3.0", 815 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 816 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 817 | "dev": true, 818 | "bin": { 819 | "semver": "bin/semver.js" 820 | } 821 | }, 822 | "node_modules/serialize-javascript": { 823 | "version": "6.0.1", 824 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", 825 | "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", 826 | "dev": true, 827 | "dependencies": { 828 | "randombytes": "^2.1.0" 829 | } 830 | }, 831 | "node_modules/shebang-command": { 832 | "version": "2.0.0", 833 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 834 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 835 | "dev": true, 836 | "dependencies": { 837 | "shebang-regex": "^3.0.0" 838 | }, 839 | "engines": { 840 | "node": ">=8" 841 | } 842 | }, 843 | "node_modules/shebang-regex": { 844 | "version": "3.0.0", 845 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 846 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 847 | "dev": true, 848 | "engines": { 849 | "node": ">=8" 850 | } 851 | }, 852 | "node_modules/signal-exit": { 853 | "version": "3.0.7", 854 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 855 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 856 | "dev": true 857 | }, 858 | "node_modules/smob": { 859 | "version": "0.0.6", 860 | "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", 861 | "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", 862 | "dev": true 863 | }, 864 | "node_modules/source-map": { 865 | "version": "0.6.1", 866 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 867 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 868 | "dev": true, 869 | "engines": { 870 | "node": ">=0.10.0" 871 | } 872 | }, 873 | "node_modules/source-map-support": { 874 | "version": "0.5.21", 875 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 876 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 877 | "dev": true, 878 | "dependencies": { 879 | "buffer-from": "^1.0.0", 880 | "source-map": "^0.6.0" 881 | } 882 | }, 883 | "node_modules/string-width": { 884 | "version": "4.2.3", 885 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 886 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 887 | "dev": true, 888 | "dependencies": { 889 | "emoji-regex": "^8.0.0", 890 | "is-fullwidth-code-point": "^3.0.0", 891 | "strip-ansi": "^6.0.1" 892 | }, 893 | "engines": { 894 | "node": ">=8" 895 | } 896 | }, 897 | "node_modules/strip-ansi": { 898 | "version": "6.0.1", 899 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 900 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 901 | "dev": true, 902 | "dependencies": { 903 | "ansi-regex": "^5.0.1" 904 | }, 905 | "engines": { 906 | "node": ">=8" 907 | } 908 | }, 909 | "node_modules/supports-color": { 910 | "version": "7.2.0", 911 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 912 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 913 | "dev": true, 914 | "dependencies": { 915 | "has-flag": "^4.0.0" 916 | }, 917 | "engines": { 918 | "node": ">=8" 919 | } 920 | }, 921 | "node_modules/supports-preserve-symlinks-flag": { 922 | "version": "1.0.0", 923 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 924 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 925 | "dev": true, 926 | "engines": { 927 | "node": ">= 0.4" 928 | }, 929 | "funding": { 930 | "url": "https://github.com/sponsors/ljharb" 931 | } 932 | }, 933 | "node_modules/terser": { 934 | "version": "5.16.2", 935 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.2.tgz", 936 | "integrity": "sha512-JKuM+KvvWVqT7muHVyrwv7FVRPnmHDwF6XwoIxdbF5Witi0vu99RYpxDexpJndXt3jbZZmmWr2/mQa6HvSNdSg==", 937 | "dev": true, 938 | "dependencies": { 939 | "@jridgewell/source-map": "^0.3.2", 940 | "acorn": "^8.5.0", 941 | "commander": "^2.20.0", 942 | "source-map-support": "~0.5.20" 943 | }, 944 | "bin": { 945 | "terser": "bin/terser" 946 | }, 947 | "engines": { 948 | "node": ">=10" 949 | } 950 | }, 951 | "node_modules/test-exclude": { 952 | "version": "6.0.0", 953 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 954 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 955 | "dev": true, 956 | "dependencies": { 957 | "@istanbuljs/schema": "^0.1.2", 958 | "glob": "^7.1.4", 959 | "minimatch": "^3.0.4" 960 | }, 961 | "engines": { 962 | "node": ">=8" 963 | } 964 | }, 965 | "node_modules/v8-to-istanbul": { 966 | "version": "9.0.1", 967 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", 968 | "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", 969 | "dev": true, 970 | "dependencies": { 971 | "@jridgewell/trace-mapping": "^0.3.12", 972 | "@types/istanbul-lib-coverage": "^2.0.1", 973 | "convert-source-map": "^1.6.0" 974 | }, 975 | "engines": { 976 | "node": ">=10.12.0" 977 | } 978 | }, 979 | "node_modules/which": { 980 | "version": "2.0.2", 981 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 982 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 983 | "dev": true, 984 | "dependencies": { 985 | "isexe": "^2.0.0" 986 | }, 987 | "bin": { 988 | "node-which": "bin/node-which" 989 | }, 990 | "engines": { 991 | "node": ">= 8" 992 | } 993 | }, 994 | "node_modules/wrap-ansi": { 995 | "version": "7.0.0", 996 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 997 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 998 | "dev": true, 999 | "dependencies": { 1000 | "ansi-styles": "^4.0.0", 1001 | "string-width": "^4.1.0", 1002 | "strip-ansi": "^6.0.0" 1003 | }, 1004 | "engines": { 1005 | "node": ">=10" 1006 | }, 1007 | "funding": { 1008 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1009 | } 1010 | }, 1011 | "node_modules/wrappy": { 1012 | "version": "1.0.2", 1013 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1014 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1015 | "dev": true 1016 | }, 1017 | "node_modules/y18n": { 1018 | "version": "5.0.8", 1019 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1020 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1021 | "dev": true, 1022 | "engines": { 1023 | "node": ">=10" 1024 | } 1025 | }, 1026 | "node_modules/yargs": { 1027 | "version": "16.2.0", 1028 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1029 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1030 | "dev": true, 1031 | "dependencies": { 1032 | "cliui": "^7.0.2", 1033 | "escalade": "^3.1.1", 1034 | "get-caller-file": "^2.0.5", 1035 | "require-directory": "^2.1.1", 1036 | "string-width": "^4.2.0", 1037 | "y18n": "^5.0.5", 1038 | "yargs-parser": "^20.2.2" 1039 | }, 1040 | "engines": { 1041 | "node": ">=10" 1042 | } 1043 | }, 1044 | "node_modules/yargs-parser": { 1045 | "version": "20.2.9", 1046 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1047 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1048 | "dev": true, 1049 | "engines": { 1050 | "node": ">=10" 1051 | } 1052 | }, 1053 | "node_modules/yocto-queue": { 1054 | "version": "0.1.0", 1055 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1056 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1057 | "dev": true, 1058 | "engines": { 1059 | "node": ">=10" 1060 | }, 1061 | "funding": { 1062 | "url": "https://github.com/sponsors/sindresorhus" 1063 | } 1064 | } 1065 | }, 1066 | "dependencies": { 1067 | "@babel/parser": { 1068 | "version": "7.20.13", 1069 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", 1070 | "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", 1071 | "dev": true 1072 | }, 1073 | "@bcoe/v8-coverage": { 1074 | "version": "0.2.3", 1075 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 1076 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 1077 | "dev": true 1078 | }, 1079 | "@istanbuljs/schema": { 1080 | "version": "0.1.3", 1081 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 1082 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 1083 | "dev": true 1084 | }, 1085 | "@jridgewell/gen-mapping": { 1086 | "version": "0.3.2", 1087 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 1088 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 1089 | "dev": true, 1090 | "requires": { 1091 | "@jridgewell/set-array": "^1.0.1", 1092 | "@jridgewell/sourcemap-codec": "^1.4.10", 1093 | "@jridgewell/trace-mapping": "^0.3.9" 1094 | } 1095 | }, 1096 | "@jridgewell/resolve-uri": { 1097 | "version": "3.1.0", 1098 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1099 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 1100 | "dev": true 1101 | }, 1102 | "@jridgewell/set-array": { 1103 | "version": "1.1.2", 1104 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 1105 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 1106 | "dev": true 1107 | }, 1108 | "@jridgewell/source-map": { 1109 | "version": "0.3.2", 1110 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 1111 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 1112 | "dev": true, 1113 | "requires": { 1114 | "@jridgewell/gen-mapping": "^0.3.0", 1115 | "@jridgewell/trace-mapping": "^0.3.9" 1116 | } 1117 | }, 1118 | "@jridgewell/sourcemap-codec": { 1119 | "version": "1.4.14", 1120 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1121 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1122 | "dev": true 1123 | }, 1124 | "@jridgewell/trace-mapping": { 1125 | "version": "0.3.17", 1126 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 1127 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 1128 | "dev": true, 1129 | "requires": { 1130 | "@jridgewell/resolve-uri": "3.1.0", 1131 | "@jridgewell/sourcemap-codec": "1.4.14" 1132 | } 1133 | }, 1134 | "@rollup/plugin-node-resolve": { 1135 | "version": "15.0.1", 1136 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", 1137 | "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", 1138 | "dev": true, 1139 | "requires": { 1140 | "@rollup/pluginutils": "^5.0.1", 1141 | "@types/resolve": "1.20.2", 1142 | "deepmerge": "^4.2.2", 1143 | "is-builtin-module": "^3.2.0", 1144 | "is-module": "^1.0.0", 1145 | "resolve": "^1.22.1" 1146 | } 1147 | }, 1148 | "@rollup/plugin-terser": { 1149 | "version": "0.4.0", 1150 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.0.tgz", 1151 | "integrity": "sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw==", 1152 | "dev": true, 1153 | "requires": { 1154 | "serialize-javascript": "^6.0.0", 1155 | "smob": "^0.0.6", 1156 | "terser": "^5.15.1" 1157 | } 1158 | }, 1159 | "@rollup/pluginutils": { 1160 | "version": "5.0.2", 1161 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 1162 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 1163 | "dev": true, 1164 | "requires": { 1165 | "@types/estree": "^1.0.0", 1166 | "estree-walker": "^2.0.2", 1167 | "picomatch": "^2.3.1" 1168 | } 1169 | }, 1170 | "@types/estree": { 1171 | "version": "1.0.0", 1172 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 1173 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 1174 | "dev": true 1175 | }, 1176 | "@types/istanbul-lib-coverage": { 1177 | "version": "2.0.4", 1178 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 1179 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", 1180 | "dev": true 1181 | }, 1182 | "@types/resolve": { 1183 | "version": "1.20.2", 1184 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 1185 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 1186 | "dev": true 1187 | }, 1188 | "acorn": { 1189 | "version": "8.8.2", 1190 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 1191 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 1192 | "dev": true 1193 | }, 1194 | "ansi-regex": { 1195 | "version": "5.0.1", 1196 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1197 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1198 | "dev": true 1199 | }, 1200 | "ansi-styles": { 1201 | "version": "4.3.0", 1202 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1203 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1204 | "dev": true, 1205 | "requires": { 1206 | "color-convert": "^2.0.1" 1207 | } 1208 | }, 1209 | "ascjs": { 1210 | "version": "5.0.1", 1211 | "resolved": "https://registry.npmjs.org/ascjs/-/ascjs-5.0.1.tgz", 1212 | "integrity": "sha512-1d/QdICzpywXiP53/Zz3fMdaC0/BB1ybLf+fK+QrqY8iyXNnWUHUrpmrowueXeswo+O+meJWm43TJSg2ClP3Sg==", 1213 | "dev": true, 1214 | "requires": { 1215 | "@babel/parser": "^7.12.5" 1216 | } 1217 | }, 1218 | "balanced-match": { 1219 | "version": "1.0.2", 1220 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1221 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1222 | "dev": true 1223 | }, 1224 | "brace-expansion": { 1225 | "version": "1.1.11", 1226 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1227 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1228 | "dev": true, 1229 | "requires": { 1230 | "balanced-match": "^1.0.0", 1231 | "concat-map": "0.0.1" 1232 | } 1233 | }, 1234 | "buffer-from": { 1235 | "version": "1.1.2", 1236 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1237 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1238 | "dev": true 1239 | }, 1240 | "builtin-modules": { 1241 | "version": "3.3.0", 1242 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 1243 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 1244 | "dev": true 1245 | }, 1246 | "c8": { 1247 | "version": "7.12.0", 1248 | "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", 1249 | "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", 1250 | "dev": true, 1251 | "requires": { 1252 | "@bcoe/v8-coverage": "^0.2.3", 1253 | "@istanbuljs/schema": "^0.1.3", 1254 | "find-up": "^5.0.0", 1255 | "foreground-child": "^2.0.0", 1256 | "istanbul-lib-coverage": "^3.2.0", 1257 | "istanbul-lib-report": "^3.0.0", 1258 | "istanbul-reports": "^3.1.4", 1259 | "rimraf": "^3.0.2", 1260 | "test-exclude": "^6.0.0", 1261 | "v8-to-istanbul": "^9.0.0", 1262 | "yargs": "^16.2.0", 1263 | "yargs-parser": "^20.2.9" 1264 | } 1265 | }, 1266 | "cliui": { 1267 | "version": "7.0.4", 1268 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1269 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1270 | "dev": true, 1271 | "requires": { 1272 | "string-width": "^4.2.0", 1273 | "strip-ansi": "^6.0.0", 1274 | "wrap-ansi": "^7.0.0" 1275 | } 1276 | }, 1277 | "color-convert": { 1278 | "version": "2.0.1", 1279 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1280 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1281 | "dev": true, 1282 | "requires": { 1283 | "color-name": "~1.1.4" 1284 | } 1285 | }, 1286 | "color-name": { 1287 | "version": "1.1.4", 1288 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1289 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1290 | "dev": true 1291 | }, 1292 | "commander": { 1293 | "version": "2.20.3", 1294 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1295 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1296 | "dev": true 1297 | }, 1298 | "concat-map": { 1299 | "version": "0.0.1", 1300 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1301 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1302 | "dev": true 1303 | }, 1304 | "convert-source-map": { 1305 | "version": "1.9.0", 1306 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 1307 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 1308 | "dev": true 1309 | }, 1310 | "cross-spawn": { 1311 | "version": "7.0.3", 1312 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1313 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1314 | "dev": true, 1315 | "requires": { 1316 | "path-key": "^3.1.0", 1317 | "shebang-command": "^2.0.0", 1318 | "which": "^2.0.1" 1319 | } 1320 | }, 1321 | "deepmerge": { 1322 | "version": "4.3.0", 1323 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", 1324 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", 1325 | "dev": true 1326 | }, 1327 | "emoji-regex": { 1328 | "version": "8.0.0", 1329 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1330 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1331 | "dev": true 1332 | }, 1333 | "escalade": { 1334 | "version": "3.1.1", 1335 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1336 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1337 | "dev": true 1338 | }, 1339 | "estree-walker": { 1340 | "version": "2.0.2", 1341 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1342 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1343 | "dev": true 1344 | }, 1345 | "find-up": { 1346 | "version": "5.0.0", 1347 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1348 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1349 | "dev": true, 1350 | "requires": { 1351 | "locate-path": "^6.0.0", 1352 | "path-exists": "^4.0.0" 1353 | } 1354 | }, 1355 | "foreground-child": { 1356 | "version": "2.0.0", 1357 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", 1358 | "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", 1359 | "dev": true, 1360 | "requires": { 1361 | "cross-spawn": "^7.0.0", 1362 | "signal-exit": "^3.0.2" 1363 | } 1364 | }, 1365 | "fs.realpath": { 1366 | "version": "1.0.0", 1367 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1368 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1369 | "dev": true 1370 | }, 1371 | "fsevents": { 1372 | "version": "2.3.2", 1373 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1374 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1375 | "dev": true, 1376 | "optional": true 1377 | }, 1378 | "function-bind": { 1379 | "version": "1.1.1", 1380 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1381 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1382 | "dev": true 1383 | }, 1384 | "get-caller-file": { 1385 | "version": "2.0.5", 1386 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1387 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1388 | "dev": true 1389 | }, 1390 | "glob": { 1391 | "version": "7.2.3", 1392 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1393 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1394 | "dev": true, 1395 | "requires": { 1396 | "fs.realpath": "^1.0.0", 1397 | "inflight": "^1.0.4", 1398 | "inherits": "2", 1399 | "minimatch": "^3.1.1", 1400 | "once": "^1.3.0", 1401 | "path-is-absolute": "^1.0.0" 1402 | } 1403 | }, 1404 | "has": { 1405 | "version": "1.0.3", 1406 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1407 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1408 | "dev": true, 1409 | "requires": { 1410 | "function-bind": "^1.1.1" 1411 | } 1412 | }, 1413 | "has-flag": { 1414 | "version": "4.0.0", 1415 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1416 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1417 | "dev": true 1418 | }, 1419 | "html-escaper": { 1420 | "version": "2.0.2", 1421 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1422 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1423 | "dev": true 1424 | }, 1425 | "inflight": { 1426 | "version": "1.0.6", 1427 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1428 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1429 | "dev": true, 1430 | "requires": { 1431 | "once": "^1.3.0", 1432 | "wrappy": "1" 1433 | } 1434 | }, 1435 | "inherits": { 1436 | "version": "2.0.4", 1437 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1438 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1439 | "dev": true 1440 | }, 1441 | "is-builtin-module": { 1442 | "version": "3.2.1", 1443 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 1444 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 1445 | "dev": true, 1446 | "requires": { 1447 | "builtin-modules": "^3.3.0" 1448 | } 1449 | }, 1450 | "is-core-module": { 1451 | "version": "2.11.0", 1452 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1453 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1454 | "dev": true, 1455 | "requires": { 1456 | "has": "^1.0.3" 1457 | } 1458 | }, 1459 | "is-fullwidth-code-point": { 1460 | "version": "3.0.0", 1461 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1462 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1463 | "dev": true 1464 | }, 1465 | "is-module": { 1466 | "version": "1.0.0", 1467 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1468 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 1469 | "dev": true 1470 | }, 1471 | "isexe": { 1472 | "version": "2.0.0", 1473 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1474 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1475 | "dev": true 1476 | }, 1477 | "istanbul-lib-coverage": { 1478 | "version": "3.2.0", 1479 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", 1480 | "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", 1481 | "dev": true 1482 | }, 1483 | "istanbul-lib-report": { 1484 | "version": "3.0.0", 1485 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 1486 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 1487 | "dev": true, 1488 | "requires": { 1489 | "istanbul-lib-coverage": "^3.0.0", 1490 | "make-dir": "^3.0.0", 1491 | "supports-color": "^7.1.0" 1492 | } 1493 | }, 1494 | "istanbul-reports": { 1495 | "version": "3.1.5", 1496 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", 1497 | "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", 1498 | "dev": true, 1499 | "requires": { 1500 | "html-escaper": "^2.0.0", 1501 | "istanbul-lib-report": "^3.0.0" 1502 | } 1503 | }, 1504 | "locate-path": { 1505 | "version": "6.0.0", 1506 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1507 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1508 | "dev": true, 1509 | "requires": { 1510 | "p-locate": "^5.0.0" 1511 | } 1512 | }, 1513 | "make-dir": { 1514 | "version": "3.1.0", 1515 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1516 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1517 | "dev": true, 1518 | "requires": { 1519 | "semver": "^6.0.0" 1520 | } 1521 | }, 1522 | "minimatch": { 1523 | "version": "3.1.2", 1524 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1525 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1526 | "dev": true, 1527 | "requires": { 1528 | "brace-expansion": "^1.1.7" 1529 | } 1530 | }, 1531 | "once": { 1532 | "version": "1.4.0", 1533 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1534 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1535 | "dev": true, 1536 | "requires": { 1537 | "wrappy": "1" 1538 | } 1539 | }, 1540 | "p-limit": { 1541 | "version": "3.1.0", 1542 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1543 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1544 | "dev": true, 1545 | "requires": { 1546 | "yocto-queue": "^0.1.0" 1547 | } 1548 | }, 1549 | "p-locate": { 1550 | "version": "5.0.0", 1551 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1552 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1553 | "dev": true, 1554 | "requires": { 1555 | "p-limit": "^3.0.2" 1556 | } 1557 | }, 1558 | "path-exists": { 1559 | "version": "4.0.0", 1560 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1561 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1562 | "dev": true 1563 | }, 1564 | "path-is-absolute": { 1565 | "version": "1.0.1", 1566 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1567 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1568 | "dev": true 1569 | }, 1570 | "path-key": { 1571 | "version": "3.1.1", 1572 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1573 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1574 | "dev": true 1575 | }, 1576 | "path-parse": { 1577 | "version": "1.0.7", 1578 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1579 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1580 | "dev": true 1581 | }, 1582 | "picomatch": { 1583 | "version": "2.3.1", 1584 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1585 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1586 | "dev": true 1587 | }, 1588 | "randombytes": { 1589 | "version": "2.1.0", 1590 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1591 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1592 | "dev": true, 1593 | "requires": { 1594 | "safe-buffer": "^5.1.0" 1595 | } 1596 | }, 1597 | "require-directory": { 1598 | "version": "2.1.1", 1599 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1600 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1601 | "dev": true 1602 | }, 1603 | "resolve": { 1604 | "version": "1.22.1", 1605 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1606 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1607 | "dev": true, 1608 | "requires": { 1609 | "is-core-module": "^2.9.0", 1610 | "path-parse": "^1.0.7", 1611 | "supports-preserve-symlinks-flag": "^1.0.0" 1612 | } 1613 | }, 1614 | "rimraf": { 1615 | "version": "3.0.2", 1616 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1617 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1618 | "dev": true, 1619 | "requires": { 1620 | "glob": "^7.1.3" 1621 | } 1622 | }, 1623 | "rollup": { 1624 | "version": "3.12.1", 1625 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.1.tgz", 1626 | "integrity": "sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==", 1627 | "dev": true, 1628 | "requires": { 1629 | "fsevents": "~2.3.2" 1630 | } 1631 | }, 1632 | "safe-buffer": { 1633 | "version": "5.2.1", 1634 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1635 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1636 | "dev": true 1637 | }, 1638 | "semver": { 1639 | "version": "6.3.0", 1640 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1641 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1642 | "dev": true 1643 | }, 1644 | "serialize-javascript": { 1645 | "version": "6.0.1", 1646 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", 1647 | "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", 1648 | "dev": true, 1649 | "requires": { 1650 | "randombytes": "^2.1.0" 1651 | } 1652 | }, 1653 | "shebang-command": { 1654 | "version": "2.0.0", 1655 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1656 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1657 | "dev": true, 1658 | "requires": { 1659 | "shebang-regex": "^3.0.0" 1660 | } 1661 | }, 1662 | "shebang-regex": { 1663 | "version": "3.0.0", 1664 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1665 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1666 | "dev": true 1667 | }, 1668 | "signal-exit": { 1669 | "version": "3.0.7", 1670 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1671 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1672 | "dev": true 1673 | }, 1674 | "smob": { 1675 | "version": "0.0.6", 1676 | "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", 1677 | "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", 1678 | "dev": true 1679 | }, 1680 | "source-map": { 1681 | "version": "0.6.1", 1682 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1683 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1684 | "dev": true 1685 | }, 1686 | "source-map-support": { 1687 | "version": "0.5.21", 1688 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1689 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1690 | "dev": true, 1691 | "requires": { 1692 | "buffer-from": "^1.0.0", 1693 | "source-map": "^0.6.0" 1694 | } 1695 | }, 1696 | "string-width": { 1697 | "version": "4.2.3", 1698 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1699 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1700 | "dev": true, 1701 | "requires": { 1702 | "emoji-regex": "^8.0.0", 1703 | "is-fullwidth-code-point": "^3.0.0", 1704 | "strip-ansi": "^6.0.1" 1705 | } 1706 | }, 1707 | "strip-ansi": { 1708 | "version": "6.0.1", 1709 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1710 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1711 | "dev": true, 1712 | "requires": { 1713 | "ansi-regex": "^5.0.1" 1714 | } 1715 | }, 1716 | "supports-color": { 1717 | "version": "7.2.0", 1718 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1719 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1720 | "dev": true, 1721 | "requires": { 1722 | "has-flag": "^4.0.0" 1723 | } 1724 | }, 1725 | "supports-preserve-symlinks-flag": { 1726 | "version": "1.0.0", 1727 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1728 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1729 | "dev": true 1730 | }, 1731 | "terser": { 1732 | "version": "5.16.2", 1733 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.2.tgz", 1734 | "integrity": "sha512-JKuM+KvvWVqT7muHVyrwv7FVRPnmHDwF6XwoIxdbF5Witi0vu99RYpxDexpJndXt3jbZZmmWr2/mQa6HvSNdSg==", 1735 | "dev": true, 1736 | "requires": { 1737 | "@jridgewell/source-map": "^0.3.2", 1738 | "acorn": "^8.5.0", 1739 | "commander": "^2.20.0", 1740 | "source-map-support": "~0.5.20" 1741 | } 1742 | }, 1743 | "test-exclude": { 1744 | "version": "6.0.0", 1745 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 1746 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 1747 | "dev": true, 1748 | "requires": { 1749 | "@istanbuljs/schema": "^0.1.2", 1750 | "glob": "^7.1.4", 1751 | "minimatch": "^3.0.4" 1752 | } 1753 | }, 1754 | "v8-to-istanbul": { 1755 | "version": "9.0.1", 1756 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", 1757 | "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", 1758 | "dev": true, 1759 | "requires": { 1760 | "@jridgewell/trace-mapping": "^0.3.12", 1761 | "@types/istanbul-lib-coverage": "^2.0.1", 1762 | "convert-source-map": "^1.6.0" 1763 | } 1764 | }, 1765 | "which": { 1766 | "version": "2.0.2", 1767 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1768 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1769 | "dev": true, 1770 | "requires": { 1771 | "isexe": "^2.0.0" 1772 | } 1773 | }, 1774 | "wrap-ansi": { 1775 | "version": "7.0.0", 1776 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1777 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1778 | "dev": true, 1779 | "requires": { 1780 | "ansi-styles": "^4.0.0", 1781 | "string-width": "^4.1.0", 1782 | "strip-ansi": "^6.0.0" 1783 | } 1784 | }, 1785 | "wrappy": { 1786 | "version": "1.0.2", 1787 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1788 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1789 | "dev": true 1790 | }, 1791 | "y18n": { 1792 | "version": "5.0.8", 1793 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1794 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1795 | "dev": true 1796 | }, 1797 | "yargs": { 1798 | "version": "16.2.0", 1799 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1800 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1801 | "dev": true, 1802 | "requires": { 1803 | "cliui": "^7.0.2", 1804 | "escalade": "^3.1.1", 1805 | "get-caller-file": "^2.0.5", 1806 | "require-directory": "^2.1.1", 1807 | "string-width": "^4.2.0", 1808 | "y18n": "^5.0.5", 1809 | "yargs-parser": "^20.2.2" 1810 | } 1811 | }, 1812 | "yargs-parser": { 1813 | "version": "20.2.9", 1814 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1815 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1816 | "dev": true 1817 | }, 1818 | "yocto-queue": { 1819 | "version": "0.1.0", 1820 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1821 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1822 | "dev": true 1823 | } 1824 | } 1825 | } 1826 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "handy-wrap", 3 | "version": "0.2.2", 4 | "description": "A generic EventTarget Proxy wrapper to chain and/or group common operations", 5 | "main": "./cjs/index.js", 6 | "scripts": { 7 | "build": "npm run cjs && npm run rollup:es && npm run test && npm run size", 8 | "cjs": "ascjs esm cjs", 9 | "rollup:es": "rollup --config rollup/es.config.js", 10 | "test": "c8 node test/index.js", 11 | "coverage": "mkdir -p ./coverage; c8 report --reporter=text-lcov > ./coverage/lcov.info", 12 | "size": "echo -e \"\\x1b[1mhandy-wrap\\x1b[0m: $(cat es.js | brotli | wc -c) bytes (brotli)\"" 13 | }, 14 | "keywords": [ 15 | "proxy", 16 | "jQuery", 17 | "EventTarget" 18 | ], 19 | "author": "Andrea Giammarchi", 20 | "license": "ISC", 21 | "types": "./types/index.d.ts", 22 | "devDependencies": { 23 | "@rollup/plugin-node-resolve": "^15.0.1", 24 | "@rollup/plugin-terser": "^0.4.0", 25 | "ascjs": "^5.0.1", 26 | "c8": "^7.12.0", 27 | "rollup": "^3.12.1" 28 | }, 29 | "module": "./esm/index.js", 30 | "type": "module", 31 | "exports": { 32 | ".": { 33 | "import": "./esm/index.js", 34 | "default": "./cjs/index.js" 35 | }, 36 | "./package.json": "./package.json" 37 | }, 38 | "unpkg": "es.js", 39 | "repository": { 40 | "type": "git", 41 | "url": "git+https://github.com/WebReflection/handy-wrap.git" 42 | }, 43 | "bugs": { 44 | "url": "https://github.com/WebReflection/handy-wrap/issues" 45 | }, 46 | "homepage": "https://github.com/WebReflection/handy-wrap#readme" 47 | } 48 | -------------------------------------------------------------------------------- /rollup/es.config.js: -------------------------------------------------------------------------------- 1 | import {nodeResolve} from '@rollup/plugin-node-resolve'; 2 | import terser from '@rollup/plugin-terser'; 3 | 4 | export default { 5 | input: './esm/index.js', 6 | plugins: [ 7 | nodeResolve(), 8 | terser() 9 | ], 10 | output: { 11 | esModule: true, 12 | file: './es.js', 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | handy-wrap 7 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | import {$, $$, plugins} from '../esm/index.js'; 2 | const assert = (current, expected) => { 3 | if (current !== expected) { 4 | console.error('got', current, 'expected', expected); 5 | process.exit(1); 6 | } 7 | }; 8 | 9 | class ET extends EventTarget { 10 | constructor() { 11 | super().test = Math.random(); 12 | this.length = -1; 13 | } 14 | } 15 | 16 | globalThis.document = { 17 | querySelector: () => new ET, 18 | querySelectorAll: () => [new ET, new ET] 19 | }; 20 | 21 | const o = $('object').on('test', Object); 22 | const oo = $$('object').on('test', Object); 23 | 24 | assert($(o).valueOf(), o.valueOf()); 25 | assert($$(oo).valueOf(), oo.valueOf()); 26 | 27 | o.emit('test'); 28 | oo.emit('test'); 29 | 30 | assert([o.test].join('') !== oo.test.join(''), true); 31 | 32 | o.test = 1; 33 | oo.test = 2; 34 | assert(o.test, 1); 35 | assert([...oo][0].test, 2); 36 | assert(o.length, -1); 37 | assert(oo.length, 2); 38 | 39 | delete globalThis.document; 40 | 41 | plugins.set('random', (value, name, proxy) => { 42 | assert(value, Array); 43 | assert(name, 'random'); 44 | assert(proxy.valueOf(), value); 45 | return Math.random(); 46 | }); 47 | 48 | assert(typeof $(Array).random, 'number'); 49 | -------------------------------------------------------------------------------- /types/index.d.ts: -------------------------------------------------------------------------------- 1 | type Wrap = EventTarget & T & { 2 | emit(type: string, options?: object): Wrap; 3 | on(type: string, handler: Function | EventListener, options?: object): Wrap; 4 | valueOf():T; 5 | }; 6 | 7 | /** 8 | * Exposes handy utilities to a single `Element`. 9 | * @param css the *CSS* selector to query. 10 | */ 11 | declare function $(css: string): Wrap; 12 | 13 | /** 14 | * Exposes handy utilities to a single `Element`. 15 | * @param css the *CSS* selector to query. 16 | * @param parent the `parentNode` to query. 17 | */ 18 | declare function $(css: string, parent: Document | Element): Wrap; 19 | 20 | /** 21 | * Exposes handy utilities to a single `EventTarget` entry. 22 | * @param target the signle `EventTarget` entry to wrap. 23 | */ 24 | declare function $(target: T): Wrap; 25 | 26 | /** 27 | * Exposes handy utilities to a list of `EventTarget` entries. 28 | * @param css the *CSS* selector to query all. 29 | */ 30 | declare function $$(css: string): Wrap; 31 | 32 | /** 33 | * Exposes handy utilities to a list of `EventTarget` entries. 34 | * @param css the *CSS* selector to query all. 35 | * @param parent the `parentNode` to query. 36 | */ 37 | declare function $$(css: string, parent: Document | Element): Wrap; 38 | 39 | 40 | /** 41 | * Exposes handy utilities to a list of `EventTarget` entries. 42 | * @param target the list of `EventTarget` entries to wrap. 43 | */ 44 | declare function $$(target: T): Wrap; 45 | 46 | export const plugins:Map< 47 | string, 48 | ( 49 | wrapped: object | NodeList, 50 | name: string, 51 | proxy: ProxyHandler 52 | ) => object 53 | >; 54 | 55 | export {$, $$}; 56 | --------------------------------------------------------------------------------