├── .github └── dependabot.yml ├── .gitignore ├── .husky └── pre-commit ├── .npmignore ├── .prettierignore ├── LICENSE ├── README.md ├── dist ├── panix.cjs.js ├── panix.cjs.min.js ├── panix.es.js ├── panix.es.min.js ├── panix.umd.js └── panix.umd.min.js ├── minifier.js ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── error.js └── index.js └── tests ├── SpecRunner.html ├── lib └── jasmine-4.3.0 │ ├── boot0.js │ ├── boot1.js │ ├── jasmine-html.js │ ├── jasmine.css │ ├── jasmine.js │ └── jasmine_favicon.png └── spec ├── createElement.spec.js ├── node.spec.js ├── render.spec.js └── update.spec.js /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "npm" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "daily" 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | *.log 3 | syntax/ 4 | *example* -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npm run prepare 5 | git add . -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | *.html 3 | *.css 4 | *.log 5 | syntax/ 6 | *example* 7 | .husky/ 8 | .github/ 9 | tests/ 10 | docs/ 11 | .prettierignore -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.json 3 | *.min.js 4 | *.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | copyright 2021-2022 panixjs 2 | Permission is hereby granted that everybody can use , copy , change and publish this software with accepting following conditions : 3 | 1- Although you can publish this software , you cannot sell and trade this software . 4 | 2- every software that is copying from this software (even one line) , must use this license . 5 | 3- This software is provided without any kind of Warranty . 6 | 4- The Authors or copyright holders are not liable for any damages or any kind of liability. 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Panix.js 2 | ![panix js](https://user-images.githubusercontent.com/74927578/130037083-3b841304-4108-4452-8ee5-dd35570d210c.gif) 3 | 4 | ![](https://img.shields.io/codefactor/grade/github/mehanalavimajd/panix?label=Code%20Quality) ![npm](https://img.shields.io/npm/dw/panix) ![GitHub file size in bytes](https://img.shields.io/github/size/mehanalavimajd/panix/dist/panix.es.min.js) ![](https://img.shields.io/depfu/mehanalavimajd/panix) ![](https://img.shields.io/github/last-commit/mehanalavimajd/panix) 5 | 6 | Panix is a tiny weight Virtual Dom library .
7 | Today's Virtual Doms have easy syntax but they are heavy , **very heavy** .
8 | Panix is one of the most lightweight (~1kb) virtual DOM implementations, and is a learning resource more than a tool you should actually use in production. 9 | 10 | ## Installation 11 | Or if you want to use npm : 12 | ``` 13 | npm i panix 14 | ``` 15 | and simply 16 | ```js 17 | import {node, createElement, update} from "panix" 18 | ``` 19 | **Note** : always add `type="module"` to your script when you are importing 20 | ## Hello World 21 | 22 | let's make a simple example in panix : 23 | ```js 24 | let el = createElement(node("h1", { id: "hello" },"Hello World")); 25 | render(el, document.body); // render the element to the body 26 | let newNode= node("h1", { id: "hello" },"Bye World"); 27 | let el = update(el, newNode); // update the element 28 | render(el, document.body) // re-render 29 | ``` 30 | ## Timer 31 | ```js 32 | let timer = 0 33 | let el = createElement(node("p",{id:"time"},"hello world")) 34 | render(el, document.body); 35 | setInterval(() => { 36 | timer++; 37 | document.body.removeChild(el) 38 | let newNode = node("p",{id:"time"},`${timer}`) 39 | el =update(newNode,el) 40 | render(el,document.body) 41 | }, 1000); 42 | ``` 43 | ## API 44 | 45 | `node(tagName:[String],props:[object,null],Children:[array,string])`: 46 | makes a Panix node object and returns it. 47 | 48 | `createElement(node:[Panix node])`: 49 | Creates a DOM element and returns it. If children is an array would make a element in parent element 50 | 51 | `render(container:[element],el:[element])`: 52 | Add el to container 53 | 54 | `update(newNode:[Panix Node], oldElement:[element])`: 55 | Checks all diffrences between this two, Then return a element that is new one. It doesn't just replace them, It checks for each props,children to be same or not. 56 | 57 | #### Thank you 58 | 59 | Thanks to all of the people who starred panix : 60 | 61 | [![Stargazers repo roster for @mehanalavimajd/panix](https://reporoster.com/stars/notext/mehanalavimajd/panix)](https://github.com/mehanalavimajd/panix/stargazers) 62 | 63 | 64 | ### License 65 | 66 | See license in [LICENSE](LICENSE) file 67 | -------------------------------------------------------------------------------- /dist/panix.cjs.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, '__esModule', { value: true }); 4 | 5 | const error = (text) => { 6 | throw new Error("Panix.js has made a problem: " + text); 7 | }; 8 | 9 | let node = (tag, props, children) => { 10 | return { 11 | tag, 12 | props: !props ? {} : props, 13 | children, 14 | }; 15 | }; 16 | let createElement = (node) => { 17 | let el = document.createElement(node.tag); 18 | for (const key in node.props) { 19 | if (node.props.hasOwnProperty(key)) { 20 | el.setAttribute(key, node.props[key]); 21 | } 22 | } 23 | if (Array.isArray(node.children)) { 24 | node.children.forEach((child) => { 25 | el.appendChild(createElement(child)); 26 | }); 27 | } else if (typeof node.children == "string") { 28 | el.innerHTML = node.children; 29 | } else { 30 | error("The children argument of node should be either an array or String"); 31 | } 32 | return el; 33 | }; 34 | let update = (newnode, oldel) => { 35 | if (newnode.tag.toLowerCase !== oldel.tagName.toLowerCase) { 36 | oldel = createElement(newnode); 37 | } else { 38 | // props 39 | if (newnode.props.length === oldel.attributes.length) { 40 | oldel.attributes.forEach((item) => { 41 | item.key; 42 | item.value; 43 | for (const [key, value] in newnode.props) { 44 | } 45 | }); 46 | } else { 47 | oldel = createElement(newnode); 48 | } 49 | // children 50 | if (Array.isArray(newnode.children)) { 51 | if (newnode.children.length === oldel.children.length) { 52 | let i = 0; 53 | newnode.forEach((child) => { 54 | if (newnode.children[i] !== oldel.children[i]) { 55 | oldel.children[i] = newnode.children[i]; 56 | } 57 | i++; 58 | }); 59 | } else { 60 | oldel = createElement(newnode); 61 | } 62 | } else if (typeof newnode.children == "string") { 63 | if (newnode.children !== oldel.textContent) { 64 | oldel.textContent = newnode.children; 65 | } 66 | } 67 | } 68 | return oldel; 69 | }; 70 | let render = (el, cont) => { 71 | cont.appendChild(el); 72 | }; 73 | 74 | exports.createElement = createElement; 75 | exports.node = node; 76 | exports.render = render; 77 | exports.update = update; 78 | -------------------------------------------------------------------------------- /dist/panix.cjs.min.js: -------------------------------------------------------------------------------- 1 | "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const error=e=>{throw new Error("Panix.js has made a problem: "+e)};let node=(e,r,t)=>({tag:e,props:r||{},children:t}),createElement=e=>{let r=document.createElement(e.tag);for(const t in e.props)e.props.hasOwnProperty(t)&&r.setAttribute(t,e.props[t]);return Array.isArray(e.children)?e.children.forEach(e=>{r.appendChild(createElement(e))}):"string"==typeof e.children?r.innerHTML=e.children:error("The children argument of node should be either an array or String"),r},update=(n,t)=>{if(n.tag.toLowerCase!==t.tagName.toLowerCase)t=createElement(n);else if(n.props.length===t.attributes.length?t.attributes.forEach(e=>{for(var[r,t]in e.key,e.value,n.props);}):t=createElement(n),Array.isArray(n.children))if(n.children.length===t.children.length){let r=0;n.forEach(e=>{n.children[r]!==t.children[r]&&(t.children[r]=n.children[r]),r++})}else t=createElement(n);else"string"==typeof n.children&&n.children!==t.textContent&&(t.textContent=n.children);return t},render=(e,r)=>{r.appendChild(e)};exports.createElement=createElement,exports.node=node,exports.render=render,exports.update=update; -------------------------------------------------------------------------------- /dist/panix.es.js: -------------------------------------------------------------------------------- 1 | const error = (text) => { 2 | throw new Error("Panix.js has made a problem: " + text); 3 | }; 4 | 5 | let node = (tag, props, children) => { 6 | return { 7 | tag, 8 | props: !props ? {} : props, 9 | children, 10 | }; 11 | }; 12 | let createElement = (node) => { 13 | let el = document.createElement(node.tag); 14 | for (const key in node.props) { 15 | if (node.props.hasOwnProperty(key)) { 16 | el.setAttribute(key, node.props[key]); 17 | } 18 | } 19 | if (Array.isArray(node.children)) { 20 | node.children.forEach((child) => { 21 | el.appendChild(createElement(child)); 22 | }); 23 | } else if (typeof node.children == "string") { 24 | el.innerHTML = node.children; 25 | } else { 26 | error("The children argument of node should be either an array or String"); 27 | } 28 | return el; 29 | }; 30 | let update = (newnode, oldel) => { 31 | if (newnode.tag.toLowerCase !== oldel.tagName.toLowerCase) { 32 | oldel = createElement(newnode); 33 | } else { 34 | // props 35 | if (newnode.props.length === oldel.attributes.length) { 36 | oldel.attributes.forEach((item) => { 37 | item.key; 38 | item.value; 39 | for (const [key, value] in newnode.props) { 40 | } 41 | }); 42 | } else { 43 | oldel = createElement(newnode); 44 | } 45 | // children 46 | if (Array.isArray(newnode.children)) { 47 | if (newnode.children.length === oldel.children.length) { 48 | let i = 0; 49 | newnode.forEach((child) => { 50 | if (newnode.children[i] !== oldel.children[i]) { 51 | oldel.children[i] = newnode.children[i]; 52 | } 53 | i++; 54 | }); 55 | } else { 56 | oldel = createElement(newnode); 57 | } 58 | } else if (typeof newnode.children == "string") { 59 | if (newnode.children !== oldel.textContent) { 60 | oldel.textContent = newnode.children; 61 | } 62 | } 63 | } 64 | return oldel; 65 | }; 66 | let render = (el, cont) => { 67 | cont.appendChild(el); 68 | }; 69 | 70 | export { createElement, node, render, update }; 71 | -------------------------------------------------------------------------------- /dist/panix.es.min.js: -------------------------------------------------------------------------------- 1 | const error=e=>{throw new Error("Panix.js has made a problem: "+e)};let node=(e,r,t)=>({tag:e,props:r||{},children:t}),createElement=e=>{let r=document.createElement(e.tag);for(const t in e.props)e.props.hasOwnProperty(t)&&r.setAttribute(t,e.props[t]);return Array.isArray(e.children)?e.children.forEach(e=>{r.appendChild(createElement(e))}):"string"==typeof e.children?r.innerHTML=e.children:error("The children argument of node should be either an array or String"),r},update=(n,t)=>{if(n.tag.toLowerCase!==t.tagName.toLowerCase)t=createElement(n);else if(n.props.length===t.attributes.length?t.attributes.forEach(e=>{for(var[r,t]in e.key,e.value,n.props);}):t=createElement(n),Array.isArray(n.children))if(n.children.length===t.children.length){let r=0;n.forEach(e=>{n.children[r]!==t.children[r]&&(t.children[r]=n.children[r]),r++})}else t=createElement(n);else"string"==typeof n.children&&n.children!==t.textContent&&(t.textContent=n.children);return t},render=(e,r)=>{r.appendChild(e)};export{createElement,node,render,update}; -------------------------------------------------------------------------------- /dist/panix.umd.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 3 | typeof define === 'function' && define.amd ? define(['exports'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.panix = {})); 5 | })(this, (function (exports) { 'use strict'; 6 | 7 | const error = (text) => { 8 | throw new Error("Panix.js has made a problem: " + text); 9 | }; 10 | 11 | let node = (tag, props, children) => { 12 | return { 13 | tag, 14 | props: !props ? {} : props, 15 | children, 16 | }; 17 | }; 18 | let createElement = (node) => { 19 | let el = document.createElement(node.tag); 20 | for (const key in node.props) { 21 | if (node.props.hasOwnProperty(key)) { 22 | el.setAttribute(key, node.props[key]); 23 | } 24 | } 25 | if (Array.isArray(node.children)) { 26 | node.children.forEach((child) => { 27 | el.appendChild(createElement(child)); 28 | }); 29 | } else if (typeof node.children == "string") { 30 | el.innerHTML = node.children; 31 | } else { 32 | error("The children argument of node should be either an array or String"); 33 | } 34 | return el; 35 | }; 36 | let update = (newnode, oldel) => { 37 | if (newnode.tag.toLowerCase !== oldel.tagName.toLowerCase) { 38 | oldel = createElement(newnode); 39 | } else { 40 | // props 41 | if (newnode.props.length === oldel.attributes.length) { 42 | oldel.attributes.forEach((item) => { 43 | item.key; 44 | item.value; 45 | for (const [key, value] in newnode.props) { 46 | } 47 | }); 48 | } else { 49 | oldel = createElement(newnode); 50 | } 51 | // children 52 | if (Array.isArray(newnode.children)) { 53 | if (newnode.children.length === oldel.children.length) { 54 | let i = 0; 55 | newnode.forEach((child) => { 56 | if (newnode.children[i] !== oldel.children[i]) { 57 | oldel.children[i] = newnode.children[i]; 58 | } 59 | i++; 60 | }); 61 | } else { 62 | oldel = createElement(newnode); 63 | } 64 | } else if (typeof newnode.children == "string") { 65 | if (newnode.children !== oldel.textContent) { 66 | oldel.textContent = newnode.children; 67 | } 68 | } 69 | } 70 | return oldel; 71 | }; 72 | let render = (el, cont) => { 73 | cont.appendChild(el); 74 | }; 75 | 76 | exports.createElement = createElement; 77 | exports.node = node; 78 | exports.render = render; 79 | exports.update = update; 80 | 81 | Object.defineProperty(exports, '__esModule', { value: true }); 82 | 83 | })); 84 | -------------------------------------------------------------------------------- /dist/panix.umd.min.js: -------------------------------------------------------------------------------- 1 | !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).panix={})}(this,function(e){"use strict";let i=e=>{let r=document.createElement(e.tag);for(const t in e.props)e.props.hasOwnProperty(t)&&r.setAttribute(t,e.props[t]);if(Array.isArray(e.children))e.children.forEach(e=>{r.appendChild(i(e))});else{if("string"!=typeof e.children)throw new Error("Panix.js has made a problem: "+"The children argument of node should be either an array or String");r.innerHTML=e.children}return r};e.createElement=i,e.node=(e,r,t)=>({tag:e,props:r||{},children:t}),e.render=(e,r)=>{r.appendChild(e)},e.update=(n,t)=>{if(n.tag.toLowerCase!==t.tagName.toLowerCase)t=i(n);else if(n.props.length===t.attributes.length?t.attributes.forEach(e=>{for(var[r,t]in e.key,e.value,n.props);}):t=i(n),Array.isArray(n.children))if(n.children.length===t.children.length){let r=0;n.forEach(e=>{n.children[r]!==t.children[r]&&(t.children[r]=n.children[r]),r++})}else t=i(n);else"string"==typeof n.children&&n.children!==t.textContent&&(t.textContent=n.children);return t},Object.defineProperty(e,"__esModule",{value:!0})}); -------------------------------------------------------------------------------- /minifier.js: -------------------------------------------------------------------------------- 1 | let fs = require("fs"); 2 | const uglify = require("uglify-js"); 3 | 4 | function minify(filein, fileout) { 5 | fs.writeFileSync( 6 | fileout, 7 | uglify.minify(fs.readFileSync(filein).toString()).code 8 | ); 9 | } 10 | minify("./dist/panix.cjs.js", "./dist/panix.cjs.min.js"); 11 | minify("./dist/panix.es.js", "./dist/panix.es.min.js"); 12 | minify("./dist/panix.umd.js", "./dist/panix.umd.min.js"); 13 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "panix", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "panix", 9 | "version": "1.0.0", 10 | "license": "see License in LICENSE", 11 | "dependencies": { 12 | "@testing-library/dom": "^8.17.1", 13 | "@testing-library/jest-dom": "^5.16.5", 14 | "jsdom": "^20.0.0", 15 | "uglify-js": "^3.17.0" 16 | }, 17 | "devDependencies": { 18 | "husky": "^8.0.1", 19 | "prettier": "^2.3.2", 20 | "rollup": "^2.58.0" 21 | } 22 | }, 23 | "node_modules/@adobe/css-tools": { 24 | "version": "4.0.1", 25 | "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", 26 | "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==" 27 | }, 28 | "node_modules/@babel/code-frame": { 29 | "version": "7.18.6", 30 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 31 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 32 | "dependencies": { 33 | "@babel/highlight": "^7.18.6" 34 | }, 35 | "engines": { 36 | "node": ">=6.9.0" 37 | } 38 | }, 39 | "node_modules/@babel/helper-validator-identifier": { 40 | "version": "7.18.6", 41 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 42 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 43 | "engines": { 44 | "node": ">=6.9.0" 45 | } 46 | }, 47 | "node_modules/@babel/highlight": { 48 | "version": "7.18.6", 49 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 50 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 51 | "dependencies": { 52 | "@babel/helper-validator-identifier": "^7.18.6", 53 | "chalk": "^2.0.0", 54 | "js-tokens": "^4.0.0" 55 | }, 56 | "engines": { 57 | "node": ">=6.9.0" 58 | } 59 | }, 60 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 61 | "version": "3.2.1", 62 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 63 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 64 | "dependencies": { 65 | "color-convert": "^1.9.0" 66 | }, 67 | "engines": { 68 | "node": ">=4" 69 | } 70 | }, 71 | "node_modules/@babel/highlight/node_modules/chalk": { 72 | "version": "2.4.2", 73 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 74 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 75 | "dependencies": { 76 | "ansi-styles": "^3.2.1", 77 | "escape-string-regexp": "^1.0.5", 78 | "supports-color": "^5.3.0" 79 | }, 80 | "engines": { 81 | "node": ">=4" 82 | } 83 | }, 84 | "node_modules/@babel/highlight/node_modules/color-convert": { 85 | "version": "1.9.3", 86 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 87 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 88 | "dependencies": { 89 | "color-name": "1.1.3" 90 | } 91 | }, 92 | "node_modules/@babel/highlight/node_modules/color-name": { 93 | "version": "1.1.3", 94 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 95 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 96 | }, 97 | "node_modules/@babel/highlight/node_modules/escape-string-regexp": { 98 | "version": "1.0.5", 99 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 100 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 101 | "engines": { 102 | "node": ">=0.8.0" 103 | } 104 | }, 105 | "node_modules/@babel/highlight/node_modules/has-flag": { 106 | "version": "3.0.0", 107 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 108 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 109 | "engines": { 110 | "node": ">=4" 111 | } 112 | }, 113 | "node_modules/@babel/highlight/node_modules/supports-color": { 114 | "version": "5.5.0", 115 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 116 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 117 | "dependencies": { 118 | "has-flag": "^3.0.0" 119 | }, 120 | "engines": { 121 | "node": ">=4" 122 | } 123 | }, 124 | "node_modules/@babel/runtime": { 125 | "version": "7.18.9", 126 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", 127 | "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", 128 | "dependencies": { 129 | "regenerator-runtime": "^0.13.4" 130 | }, 131 | "engines": { 132 | "node": ">=6.9.0" 133 | } 134 | }, 135 | "node_modules/@jest/expect-utils": { 136 | "version": "28.1.3", 137 | "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", 138 | "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", 139 | "dependencies": { 140 | "jest-get-type": "^28.0.2" 141 | }, 142 | "engines": { 143 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 144 | } 145 | }, 146 | "node_modules/@jest/schemas": { 147 | "version": "28.1.3", 148 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", 149 | "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", 150 | "dependencies": { 151 | "@sinclair/typebox": "^0.24.1" 152 | }, 153 | "engines": { 154 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 155 | } 156 | }, 157 | "node_modules/@jest/types": { 158 | "version": "28.1.3", 159 | "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", 160 | "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", 161 | "dependencies": { 162 | "@jest/schemas": "^28.1.3", 163 | "@types/istanbul-lib-coverage": "^2.0.0", 164 | "@types/istanbul-reports": "^3.0.0", 165 | "@types/node": "*", 166 | "@types/yargs": "^17.0.8", 167 | "chalk": "^4.0.0" 168 | }, 169 | "engines": { 170 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 171 | } 172 | }, 173 | "node_modules/@sinclair/typebox": { 174 | "version": "0.24.28", 175 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.28.tgz", 176 | "integrity": "sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow==" 177 | }, 178 | "node_modules/@testing-library/dom": { 179 | "version": "8.17.1", 180 | "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.17.1.tgz", 181 | "integrity": "sha512-KnH2MnJUzmFNPW6RIKfd+zf2Wue8mEKX0M3cpX6aKl5ZXrJM1/c/Pc8c2xDNYQCnJO48Sm5ITbMXgqTr3h4jxQ==", 182 | "dependencies": { 183 | "@babel/code-frame": "^7.10.4", 184 | "@babel/runtime": "^7.12.5", 185 | "@types/aria-query": "^4.2.0", 186 | "aria-query": "^5.0.0", 187 | "chalk": "^4.1.0", 188 | "dom-accessibility-api": "^0.5.9", 189 | "lz-string": "^1.4.4", 190 | "pretty-format": "^27.0.2" 191 | }, 192 | "engines": { 193 | "node": ">=12" 194 | } 195 | }, 196 | "node_modules/@testing-library/dom/node_modules/ansi-styles": { 197 | "version": "5.2.0", 198 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 199 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 200 | "engines": { 201 | "node": ">=10" 202 | }, 203 | "funding": { 204 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 205 | } 206 | }, 207 | "node_modules/@testing-library/dom/node_modules/pretty-format": { 208 | "version": "27.5.1", 209 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", 210 | "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", 211 | "dependencies": { 212 | "ansi-regex": "^5.0.1", 213 | "ansi-styles": "^5.0.0", 214 | "react-is": "^17.0.1" 215 | }, 216 | "engines": { 217 | "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" 218 | } 219 | }, 220 | "node_modules/@testing-library/dom/node_modules/react-is": { 221 | "version": "17.0.2", 222 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", 223 | "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" 224 | }, 225 | "node_modules/@testing-library/jest-dom": { 226 | "version": "5.16.5", 227 | "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", 228 | "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", 229 | "dependencies": { 230 | "@adobe/css-tools": "^4.0.1", 231 | "@babel/runtime": "^7.9.2", 232 | "@types/testing-library__jest-dom": "^5.9.1", 233 | "aria-query": "^5.0.0", 234 | "chalk": "^3.0.0", 235 | "css.escape": "^1.5.1", 236 | "dom-accessibility-api": "^0.5.6", 237 | "lodash": "^4.17.15", 238 | "redent": "^3.0.0" 239 | }, 240 | "engines": { 241 | "node": ">=8", 242 | "npm": ">=6", 243 | "yarn": ">=1" 244 | } 245 | }, 246 | "node_modules/@testing-library/jest-dom/node_modules/chalk": { 247 | "version": "3.0.0", 248 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 249 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 250 | "dependencies": { 251 | "ansi-styles": "^4.1.0", 252 | "supports-color": "^7.1.0" 253 | }, 254 | "engines": { 255 | "node": ">=8" 256 | } 257 | }, 258 | "node_modules/@tootallnate/once": { 259 | "version": "2.0.0", 260 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 261 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", 262 | "engines": { 263 | "node": ">= 10" 264 | } 265 | }, 266 | "node_modules/@types/aria-query": { 267 | "version": "4.2.2", 268 | "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", 269 | "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" 270 | }, 271 | "node_modules/@types/istanbul-lib-coverage": { 272 | "version": "2.0.4", 273 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 274 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" 275 | }, 276 | "node_modules/@types/istanbul-lib-report": { 277 | "version": "3.0.0", 278 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 279 | "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", 280 | "dependencies": { 281 | "@types/istanbul-lib-coverage": "*" 282 | } 283 | }, 284 | "node_modules/@types/istanbul-reports": { 285 | "version": "3.0.1", 286 | "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", 287 | "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", 288 | "dependencies": { 289 | "@types/istanbul-lib-report": "*" 290 | } 291 | }, 292 | "node_modules/@types/jest": { 293 | "version": "28.1.7", 294 | "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.7.tgz", 295 | "integrity": "sha512-acDN4VHD40V24tgu0iC44jchXavRNVFXQ/E6Z5XNsswgoSO/4NgsXoEYmPUGookKldlZQyIpmrEXsHI9cA3ZTA==", 296 | "dependencies": { 297 | "expect": "^28.0.0", 298 | "pretty-format": "^28.0.0" 299 | } 300 | }, 301 | "node_modules/@types/node": { 302 | "version": "18.7.11", 303 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.11.tgz", 304 | "integrity": "sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==" 305 | }, 306 | "node_modules/@types/stack-utils": { 307 | "version": "2.0.1", 308 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", 309 | "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" 310 | }, 311 | "node_modules/@types/testing-library__jest-dom": { 312 | "version": "5.14.5", 313 | "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", 314 | "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", 315 | "dependencies": { 316 | "@types/jest": "*" 317 | } 318 | }, 319 | "node_modules/@types/yargs": { 320 | "version": "17.0.11", 321 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.11.tgz", 322 | "integrity": "sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA==", 323 | "dependencies": { 324 | "@types/yargs-parser": "*" 325 | } 326 | }, 327 | "node_modules/@types/yargs-parser": { 328 | "version": "21.0.0", 329 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", 330 | "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" 331 | }, 332 | "node_modules/abab": { 333 | "version": "2.0.6", 334 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", 335 | "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" 336 | }, 337 | "node_modules/acorn": { 338 | "version": "8.8.0", 339 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 340 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 341 | "bin": { 342 | "acorn": "bin/acorn" 343 | }, 344 | "engines": { 345 | "node": ">=0.4.0" 346 | } 347 | }, 348 | "node_modules/acorn-globals": { 349 | "version": "6.0.0", 350 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", 351 | "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", 352 | "dependencies": { 353 | "acorn": "^7.1.1", 354 | "acorn-walk": "^7.1.1" 355 | } 356 | }, 357 | "node_modules/acorn-globals/node_modules/acorn": { 358 | "version": "7.4.1", 359 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 360 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 361 | "bin": { 362 | "acorn": "bin/acorn" 363 | }, 364 | "engines": { 365 | "node": ">=0.4.0" 366 | } 367 | }, 368 | "node_modules/acorn-walk": { 369 | "version": "7.2.0", 370 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 371 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 372 | "engines": { 373 | "node": ">=0.4.0" 374 | } 375 | }, 376 | "node_modules/agent-base": { 377 | "version": "6.0.2", 378 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 379 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 380 | "dependencies": { 381 | "debug": "4" 382 | }, 383 | "engines": { 384 | "node": ">= 6.0.0" 385 | } 386 | }, 387 | "node_modules/ansi-regex": { 388 | "version": "5.0.1", 389 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 390 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 391 | "engines": { 392 | "node": ">=8" 393 | } 394 | }, 395 | "node_modules/ansi-styles": { 396 | "version": "4.3.0", 397 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 398 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 399 | "dependencies": { 400 | "color-convert": "^2.0.1" 401 | }, 402 | "engines": { 403 | "node": ">=8" 404 | }, 405 | "funding": { 406 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 407 | } 408 | }, 409 | "node_modules/aria-query": { 410 | "version": "5.0.0", 411 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", 412 | "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", 413 | "engines": { 414 | "node": ">=6.0" 415 | } 416 | }, 417 | "node_modules/asynckit": { 418 | "version": "0.4.0", 419 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 420 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 421 | }, 422 | "node_modules/braces": { 423 | "version": "3.0.2", 424 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 425 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 426 | "dependencies": { 427 | "fill-range": "^7.0.1" 428 | }, 429 | "engines": { 430 | "node": ">=8" 431 | } 432 | }, 433 | "node_modules/browser-process-hrtime": { 434 | "version": "1.0.0", 435 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 436 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" 437 | }, 438 | "node_modules/chalk": { 439 | "version": "4.1.2", 440 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 441 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 442 | "dependencies": { 443 | "ansi-styles": "^4.1.0", 444 | "supports-color": "^7.1.0" 445 | }, 446 | "engines": { 447 | "node": ">=10" 448 | }, 449 | "funding": { 450 | "url": "https://github.com/chalk/chalk?sponsor=1" 451 | } 452 | }, 453 | "node_modules/ci-info": { 454 | "version": "3.3.2", 455 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", 456 | "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" 457 | }, 458 | "node_modules/color-convert": { 459 | "version": "2.0.1", 460 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 461 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 462 | "dependencies": { 463 | "color-name": "~1.1.4" 464 | }, 465 | "engines": { 466 | "node": ">=7.0.0" 467 | } 468 | }, 469 | "node_modules/color-name": { 470 | "version": "1.1.4", 471 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 472 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 473 | }, 474 | "node_modules/combined-stream": { 475 | "version": "1.0.8", 476 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 477 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 478 | "dependencies": { 479 | "delayed-stream": "~1.0.0" 480 | }, 481 | "engines": { 482 | "node": ">= 0.8" 483 | } 484 | }, 485 | "node_modules/css.escape": { 486 | "version": "1.5.1", 487 | "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", 488 | "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" 489 | }, 490 | "node_modules/cssom": { 491 | "version": "0.5.0", 492 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", 493 | "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" 494 | }, 495 | "node_modules/cssstyle": { 496 | "version": "2.3.0", 497 | "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", 498 | "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", 499 | "dependencies": { 500 | "cssom": "~0.3.6" 501 | }, 502 | "engines": { 503 | "node": ">=8" 504 | } 505 | }, 506 | "node_modules/cssstyle/node_modules/cssom": { 507 | "version": "0.3.8", 508 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", 509 | "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" 510 | }, 511 | "node_modules/data-urls": { 512 | "version": "3.0.2", 513 | "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", 514 | "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", 515 | "dependencies": { 516 | "abab": "^2.0.6", 517 | "whatwg-mimetype": "^3.0.0", 518 | "whatwg-url": "^11.0.0" 519 | }, 520 | "engines": { 521 | "node": ">=12" 522 | } 523 | }, 524 | "node_modules/debug": { 525 | "version": "4.3.4", 526 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 527 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 528 | "dependencies": { 529 | "ms": "2.1.2" 530 | }, 531 | "engines": { 532 | "node": ">=6.0" 533 | }, 534 | "peerDependenciesMeta": { 535 | "supports-color": { 536 | "optional": true 537 | } 538 | } 539 | }, 540 | "node_modules/decimal.js": { 541 | "version": "10.4.0", 542 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", 543 | "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==" 544 | }, 545 | "node_modules/deep-is": { 546 | "version": "0.1.4", 547 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 548 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 549 | }, 550 | "node_modules/delayed-stream": { 551 | "version": "1.0.0", 552 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 553 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 554 | "engines": { 555 | "node": ">=0.4.0" 556 | } 557 | }, 558 | "node_modules/diff-sequences": { 559 | "version": "28.1.1", 560 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", 561 | "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", 562 | "engines": { 563 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 564 | } 565 | }, 566 | "node_modules/dom-accessibility-api": { 567 | "version": "0.5.14", 568 | "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", 569 | "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" 570 | }, 571 | "node_modules/domexception": { 572 | "version": "4.0.0", 573 | "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", 574 | "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", 575 | "dependencies": { 576 | "webidl-conversions": "^7.0.0" 577 | }, 578 | "engines": { 579 | "node": ">=12" 580 | } 581 | }, 582 | "node_modules/entities": { 583 | "version": "4.3.1", 584 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", 585 | "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", 586 | "engines": { 587 | "node": ">=0.12" 588 | }, 589 | "funding": { 590 | "url": "https://github.com/fb55/entities?sponsor=1" 591 | } 592 | }, 593 | "node_modules/escape-string-regexp": { 594 | "version": "2.0.0", 595 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 596 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 597 | "engines": { 598 | "node": ">=8" 599 | } 600 | }, 601 | "node_modules/escodegen": { 602 | "version": "2.0.0", 603 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", 604 | "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", 605 | "dependencies": { 606 | "esprima": "^4.0.1", 607 | "estraverse": "^5.2.0", 608 | "esutils": "^2.0.2", 609 | "optionator": "^0.8.1" 610 | }, 611 | "bin": { 612 | "escodegen": "bin/escodegen.js", 613 | "esgenerate": "bin/esgenerate.js" 614 | }, 615 | "engines": { 616 | "node": ">=6.0" 617 | }, 618 | "optionalDependencies": { 619 | "source-map": "~0.6.1" 620 | } 621 | }, 622 | "node_modules/esprima": { 623 | "version": "4.0.1", 624 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 625 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 626 | "bin": { 627 | "esparse": "bin/esparse.js", 628 | "esvalidate": "bin/esvalidate.js" 629 | }, 630 | "engines": { 631 | "node": ">=4" 632 | } 633 | }, 634 | "node_modules/estraverse": { 635 | "version": "5.3.0", 636 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 637 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 638 | "engines": { 639 | "node": ">=4.0" 640 | } 641 | }, 642 | "node_modules/esutils": { 643 | "version": "2.0.3", 644 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 645 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 646 | "engines": { 647 | "node": ">=0.10.0" 648 | } 649 | }, 650 | "node_modules/expect": { 651 | "version": "28.1.3", 652 | "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", 653 | "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", 654 | "dependencies": { 655 | "@jest/expect-utils": "^28.1.3", 656 | "jest-get-type": "^28.0.2", 657 | "jest-matcher-utils": "^28.1.3", 658 | "jest-message-util": "^28.1.3", 659 | "jest-util": "^28.1.3" 660 | }, 661 | "engines": { 662 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 663 | } 664 | }, 665 | "node_modules/fast-levenshtein": { 666 | "version": "2.0.6", 667 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 668 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 669 | }, 670 | "node_modules/fill-range": { 671 | "version": "7.0.1", 672 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 673 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 674 | "dependencies": { 675 | "to-regex-range": "^5.0.1" 676 | }, 677 | "engines": { 678 | "node": ">=8" 679 | } 680 | }, 681 | "node_modules/form-data": { 682 | "version": "4.0.0", 683 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 684 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 685 | "dependencies": { 686 | "asynckit": "^0.4.0", 687 | "combined-stream": "^1.0.8", 688 | "mime-types": "^2.1.12" 689 | }, 690 | "engines": { 691 | "node": ">= 6" 692 | } 693 | }, 694 | "node_modules/fsevents": { 695 | "version": "2.3.2", 696 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 697 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 698 | "dev": true, 699 | "hasInstallScript": true, 700 | "optional": true, 701 | "os": [ 702 | "darwin" 703 | ], 704 | "engines": { 705 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 706 | } 707 | }, 708 | "node_modules/graceful-fs": { 709 | "version": "4.2.10", 710 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 711 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 712 | }, 713 | "node_modules/has-flag": { 714 | "version": "4.0.0", 715 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 716 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 717 | "engines": { 718 | "node": ">=8" 719 | } 720 | }, 721 | "node_modules/html-encoding-sniffer": { 722 | "version": "3.0.0", 723 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 724 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 725 | "dependencies": { 726 | "whatwg-encoding": "^2.0.0" 727 | }, 728 | "engines": { 729 | "node": ">=12" 730 | } 731 | }, 732 | "node_modules/http-proxy-agent": { 733 | "version": "5.0.0", 734 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 735 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 736 | "dependencies": { 737 | "@tootallnate/once": "2", 738 | "agent-base": "6", 739 | "debug": "4" 740 | }, 741 | "engines": { 742 | "node": ">= 6" 743 | } 744 | }, 745 | "node_modules/https-proxy-agent": { 746 | "version": "5.0.1", 747 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 748 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 749 | "dependencies": { 750 | "agent-base": "6", 751 | "debug": "4" 752 | }, 753 | "engines": { 754 | "node": ">= 6" 755 | } 756 | }, 757 | "node_modules/husky": { 758 | "version": "8.0.1", 759 | "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", 760 | "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", 761 | "dev": true, 762 | "bin": { 763 | "husky": "lib/bin.js" 764 | }, 765 | "engines": { 766 | "node": ">=14" 767 | }, 768 | "funding": { 769 | "url": "https://github.com/sponsors/typicode" 770 | } 771 | }, 772 | "node_modules/iconv-lite": { 773 | "version": "0.6.3", 774 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 775 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 776 | "dependencies": { 777 | "safer-buffer": ">= 2.1.2 < 3.0.0" 778 | }, 779 | "engines": { 780 | "node": ">=0.10.0" 781 | } 782 | }, 783 | "node_modules/indent-string": { 784 | "version": "4.0.0", 785 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 786 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 787 | "engines": { 788 | "node": ">=8" 789 | } 790 | }, 791 | "node_modules/is-number": { 792 | "version": "7.0.0", 793 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 794 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 795 | "engines": { 796 | "node": ">=0.12.0" 797 | } 798 | }, 799 | "node_modules/is-potential-custom-element-name": { 800 | "version": "1.0.1", 801 | "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", 802 | "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" 803 | }, 804 | "node_modules/jest-diff": { 805 | "version": "28.1.3", 806 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", 807 | "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", 808 | "dependencies": { 809 | "chalk": "^4.0.0", 810 | "diff-sequences": "^28.1.1", 811 | "jest-get-type": "^28.0.2", 812 | "pretty-format": "^28.1.3" 813 | }, 814 | "engines": { 815 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 816 | } 817 | }, 818 | "node_modules/jest-get-type": { 819 | "version": "28.0.2", 820 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", 821 | "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", 822 | "engines": { 823 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 824 | } 825 | }, 826 | "node_modules/jest-matcher-utils": { 827 | "version": "28.1.3", 828 | "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", 829 | "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", 830 | "dependencies": { 831 | "chalk": "^4.0.0", 832 | "jest-diff": "^28.1.3", 833 | "jest-get-type": "^28.0.2", 834 | "pretty-format": "^28.1.3" 835 | }, 836 | "engines": { 837 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 838 | } 839 | }, 840 | "node_modules/jest-message-util": { 841 | "version": "28.1.3", 842 | "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", 843 | "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", 844 | "dependencies": { 845 | "@babel/code-frame": "^7.12.13", 846 | "@jest/types": "^28.1.3", 847 | "@types/stack-utils": "^2.0.0", 848 | "chalk": "^4.0.0", 849 | "graceful-fs": "^4.2.9", 850 | "micromatch": "^4.0.4", 851 | "pretty-format": "^28.1.3", 852 | "slash": "^3.0.0", 853 | "stack-utils": "^2.0.3" 854 | }, 855 | "engines": { 856 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 857 | } 858 | }, 859 | "node_modules/jest-util": { 860 | "version": "28.1.3", 861 | "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", 862 | "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", 863 | "dependencies": { 864 | "@jest/types": "^28.1.3", 865 | "@types/node": "*", 866 | "chalk": "^4.0.0", 867 | "ci-info": "^3.2.0", 868 | "graceful-fs": "^4.2.9", 869 | "picomatch": "^2.2.3" 870 | }, 871 | "engines": { 872 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 873 | } 874 | }, 875 | "node_modules/js-tokens": { 876 | "version": "4.0.0", 877 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 878 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 879 | }, 880 | "node_modules/jsdom": { 881 | "version": "20.0.0", 882 | "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz", 883 | "integrity": "sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==", 884 | "dependencies": { 885 | "abab": "^2.0.6", 886 | "acorn": "^8.7.1", 887 | "acorn-globals": "^6.0.0", 888 | "cssom": "^0.5.0", 889 | "cssstyle": "^2.3.0", 890 | "data-urls": "^3.0.2", 891 | "decimal.js": "^10.3.1", 892 | "domexception": "^4.0.0", 893 | "escodegen": "^2.0.0", 894 | "form-data": "^4.0.0", 895 | "html-encoding-sniffer": "^3.0.0", 896 | "http-proxy-agent": "^5.0.0", 897 | "https-proxy-agent": "^5.0.1", 898 | "is-potential-custom-element-name": "^1.0.1", 899 | "nwsapi": "^2.2.0", 900 | "parse5": "^7.0.0", 901 | "saxes": "^6.0.0", 902 | "symbol-tree": "^3.2.4", 903 | "tough-cookie": "^4.0.0", 904 | "w3c-hr-time": "^1.0.2", 905 | "w3c-xmlserializer": "^3.0.0", 906 | "webidl-conversions": "^7.0.0", 907 | "whatwg-encoding": "^2.0.0", 908 | "whatwg-mimetype": "^3.0.0", 909 | "whatwg-url": "^11.0.0", 910 | "ws": "^8.8.0", 911 | "xml-name-validator": "^4.0.0" 912 | }, 913 | "engines": { 914 | "node": ">=14" 915 | }, 916 | "peerDependencies": { 917 | "canvas": "^2.5.0" 918 | }, 919 | "peerDependenciesMeta": { 920 | "canvas": { 921 | "optional": true 922 | } 923 | } 924 | }, 925 | "node_modules/levn": { 926 | "version": "0.3.0", 927 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 928 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 929 | "dependencies": { 930 | "prelude-ls": "~1.1.2", 931 | "type-check": "~0.3.2" 932 | }, 933 | "engines": { 934 | "node": ">= 0.8.0" 935 | } 936 | }, 937 | "node_modules/lodash": { 938 | "version": "4.17.21", 939 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 940 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 941 | }, 942 | "node_modules/lz-string": { 943 | "version": "1.4.4", 944 | "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", 945 | "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", 946 | "bin": { 947 | "lz-string": "bin/bin.js" 948 | } 949 | }, 950 | "node_modules/micromatch": { 951 | "version": "4.0.5", 952 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 953 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 954 | "dependencies": { 955 | "braces": "^3.0.2", 956 | "picomatch": "^2.3.1" 957 | }, 958 | "engines": { 959 | "node": ">=8.6" 960 | } 961 | }, 962 | "node_modules/mime-db": { 963 | "version": "1.52.0", 964 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 965 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 966 | "engines": { 967 | "node": ">= 0.6" 968 | } 969 | }, 970 | "node_modules/mime-types": { 971 | "version": "2.1.35", 972 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 973 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 974 | "dependencies": { 975 | "mime-db": "1.52.0" 976 | }, 977 | "engines": { 978 | "node": ">= 0.6" 979 | } 980 | }, 981 | "node_modules/min-indent": { 982 | "version": "1.0.1", 983 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 984 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 985 | "engines": { 986 | "node": ">=4" 987 | } 988 | }, 989 | "node_modules/ms": { 990 | "version": "2.1.2", 991 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 992 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 993 | }, 994 | "node_modules/nwsapi": { 995 | "version": "2.2.1", 996 | "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", 997 | "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" 998 | }, 999 | "node_modules/optionator": { 1000 | "version": "0.8.3", 1001 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1002 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1003 | "dependencies": { 1004 | "deep-is": "~0.1.3", 1005 | "fast-levenshtein": "~2.0.6", 1006 | "levn": "~0.3.0", 1007 | "prelude-ls": "~1.1.2", 1008 | "type-check": "~0.3.2", 1009 | "word-wrap": "~1.2.3" 1010 | }, 1011 | "engines": { 1012 | "node": ">= 0.8.0" 1013 | } 1014 | }, 1015 | "node_modules/parse5": { 1016 | "version": "7.0.0", 1017 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", 1018 | "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", 1019 | "dependencies": { 1020 | "entities": "^4.3.0" 1021 | }, 1022 | "funding": { 1023 | "url": "https://github.com/inikulin/parse5?sponsor=1" 1024 | } 1025 | }, 1026 | "node_modules/picomatch": { 1027 | "version": "2.3.1", 1028 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1029 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1030 | "engines": { 1031 | "node": ">=8.6" 1032 | }, 1033 | "funding": { 1034 | "url": "https://github.com/sponsors/jonschlinkert" 1035 | } 1036 | }, 1037 | "node_modules/prelude-ls": { 1038 | "version": "1.1.2", 1039 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1040 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", 1041 | "engines": { 1042 | "node": ">= 0.8.0" 1043 | } 1044 | }, 1045 | "node_modules/prettier": { 1046 | "version": "2.6.2", 1047 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", 1048 | "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", 1049 | "dev": true, 1050 | "bin": { 1051 | "prettier": "bin-prettier.js" 1052 | }, 1053 | "engines": { 1054 | "node": ">=10.13.0" 1055 | }, 1056 | "funding": { 1057 | "url": "https://github.com/prettier/prettier?sponsor=1" 1058 | } 1059 | }, 1060 | "node_modules/pretty-format": { 1061 | "version": "28.1.3", 1062 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", 1063 | "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", 1064 | "dependencies": { 1065 | "@jest/schemas": "^28.1.3", 1066 | "ansi-regex": "^5.0.1", 1067 | "ansi-styles": "^5.0.0", 1068 | "react-is": "^18.0.0" 1069 | }, 1070 | "engines": { 1071 | "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" 1072 | } 1073 | }, 1074 | "node_modules/pretty-format/node_modules/ansi-styles": { 1075 | "version": "5.2.0", 1076 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 1077 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 1078 | "engines": { 1079 | "node": ">=10" 1080 | }, 1081 | "funding": { 1082 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1083 | } 1084 | }, 1085 | "node_modules/psl": { 1086 | "version": "1.9.0", 1087 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 1088 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 1089 | }, 1090 | "node_modules/punycode": { 1091 | "version": "2.1.1", 1092 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1093 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1094 | "engines": { 1095 | "node": ">=6" 1096 | } 1097 | }, 1098 | "node_modules/querystringify": { 1099 | "version": "2.2.0", 1100 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 1101 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 1102 | }, 1103 | "node_modules/react-is": { 1104 | "version": "18.2.0", 1105 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", 1106 | "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" 1107 | }, 1108 | "node_modules/redent": { 1109 | "version": "3.0.0", 1110 | "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", 1111 | "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", 1112 | "dependencies": { 1113 | "indent-string": "^4.0.0", 1114 | "strip-indent": "^3.0.0" 1115 | }, 1116 | "engines": { 1117 | "node": ">=8" 1118 | } 1119 | }, 1120 | "node_modules/regenerator-runtime": { 1121 | "version": "0.13.9", 1122 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 1123 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 1124 | }, 1125 | "node_modules/requires-port": { 1126 | "version": "1.0.0", 1127 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1128 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 1129 | }, 1130 | "node_modules/rollup": { 1131 | "version": "2.78.1", 1132 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", 1133 | "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", 1134 | "dev": true, 1135 | "bin": { 1136 | "rollup": "dist/bin/rollup" 1137 | }, 1138 | "engines": { 1139 | "node": ">=10.0.0" 1140 | }, 1141 | "optionalDependencies": { 1142 | "fsevents": "~2.3.2" 1143 | } 1144 | }, 1145 | "node_modules/safer-buffer": { 1146 | "version": "2.1.2", 1147 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1148 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1149 | }, 1150 | "node_modules/saxes": { 1151 | "version": "6.0.0", 1152 | "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", 1153 | "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", 1154 | "dependencies": { 1155 | "xmlchars": "^2.2.0" 1156 | }, 1157 | "engines": { 1158 | "node": ">=v12.22.7" 1159 | } 1160 | }, 1161 | "node_modules/slash": { 1162 | "version": "3.0.0", 1163 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1164 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1165 | "engines": { 1166 | "node": ">=8" 1167 | } 1168 | }, 1169 | "node_modules/source-map": { 1170 | "version": "0.6.1", 1171 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1172 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1173 | "optional": true, 1174 | "engines": { 1175 | "node": ">=0.10.0" 1176 | } 1177 | }, 1178 | "node_modules/stack-utils": { 1179 | "version": "2.0.5", 1180 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", 1181 | "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", 1182 | "dependencies": { 1183 | "escape-string-regexp": "^2.0.0" 1184 | }, 1185 | "engines": { 1186 | "node": ">=10" 1187 | } 1188 | }, 1189 | "node_modules/strip-indent": { 1190 | "version": "3.0.0", 1191 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 1192 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 1193 | "dependencies": { 1194 | "min-indent": "^1.0.0" 1195 | }, 1196 | "engines": { 1197 | "node": ">=8" 1198 | } 1199 | }, 1200 | "node_modules/supports-color": { 1201 | "version": "7.2.0", 1202 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1203 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1204 | "dependencies": { 1205 | "has-flag": "^4.0.0" 1206 | }, 1207 | "engines": { 1208 | "node": ">=8" 1209 | } 1210 | }, 1211 | "node_modules/symbol-tree": { 1212 | "version": "3.2.4", 1213 | "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", 1214 | "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" 1215 | }, 1216 | "node_modules/to-regex-range": { 1217 | "version": "5.0.1", 1218 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1219 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1220 | "dependencies": { 1221 | "is-number": "^7.0.0" 1222 | }, 1223 | "engines": { 1224 | "node": ">=8.0" 1225 | } 1226 | }, 1227 | "node_modules/tough-cookie": { 1228 | "version": "4.1.0", 1229 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.0.tgz", 1230 | "integrity": "sha512-IVX6AagLelGwl6F0E+hoRpXzuD192cZhAcmT7/eoLr0PnsB1wv2E5c+A2O+V8xth9FlL2p0OstFsWn0bZpVn4w==", 1231 | "dependencies": { 1232 | "psl": "^1.1.33", 1233 | "punycode": "^2.1.1", 1234 | "universalify": "^0.2.0", 1235 | "url-parse": "^1.5.3" 1236 | }, 1237 | "engines": { 1238 | "node": ">=6" 1239 | } 1240 | }, 1241 | "node_modules/tr46": { 1242 | "version": "3.0.0", 1243 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 1244 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 1245 | "dependencies": { 1246 | "punycode": "^2.1.1" 1247 | }, 1248 | "engines": { 1249 | "node": ">=12" 1250 | } 1251 | }, 1252 | "node_modules/type-check": { 1253 | "version": "0.3.2", 1254 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1255 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 1256 | "dependencies": { 1257 | "prelude-ls": "~1.1.2" 1258 | }, 1259 | "engines": { 1260 | "node": ">= 0.8.0" 1261 | } 1262 | }, 1263 | "node_modules/uglify-js": { 1264 | "version": "3.17.0", 1265 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", 1266 | "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", 1267 | "bin": { 1268 | "uglifyjs": "bin/uglifyjs" 1269 | }, 1270 | "engines": { 1271 | "node": ">=0.8.0" 1272 | } 1273 | }, 1274 | "node_modules/universalify": { 1275 | "version": "0.2.0", 1276 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 1277 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", 1278 | "engines": { 1279 | "node": ">= 4.0.0" 1280 | } 1281 | }, 1282 | "node_modules/url-parse": { 1283 | "version": "1.5.10", 1284 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 1285 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 1286 | "dependencies": { 1287 | "querystringify": "^2.1.1", 1288 | "requires-port": "^1.0.0" 1289 | } 1290 | }, 1291 | "node_modules/w3c-hr-time": { 1292 | "version": "1.0.2", 1293 | "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", 1294 | "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", 1295 | "dependencies": { 1296 | "browser-process-hrtime": "^1.0.0" 1297 | } 1298 | }, 1299 | "node_modules/w3c-xmlserializer": { 1300 | "version": "3.0.0", 1301 | "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", 1302 | "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", 1303 | "dependencies": { 1304 | "xml-name-validator": "^4.0.0" 1305 | }, 1306 | "engines": { 1307 | "node": ">=12" 1308 | } 1309 | }, 1310 | "node_modules/webidl-conversions": { 1311 | "version": "7.0.0", 1312 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 1313 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", 1314 | "engines": { 1315 | "node": ">=12" 1316 | } 1317 | }, 1318 | "node_modules/whatwg-encoding": { 1319 | "version": "2.0.0", 1320 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 1321 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 1322 | "dependencies": { 1323 | "iconv-lite": "0.6.3" 1324 | }, 1325 | "engines": { 1326 | "node": ">=12" 1327 | } 1328 | }, 1329 | "node_modules/whatwg-mimetype": { 1330 | "version": "3.0.0", 1331 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", 1332 | "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", 1333 | "engines": { 1334 | "node": ">=12" 1335 | } 1336 | }, 1337 | "node_modules/whatwg-url": { 1338 | "version": "11.0.0", 1339 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 1340 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 1341 | "dependencies": { 1342 | "tr46": "^3.0.0", 1343 | "webidl-conversions": "^7.0.0" 1344 | }, 1345 | "engines": { 1346 | "node": ">=12" 1347 | } 1348 | }, 1349 | "node_modules/word-wrap": { 1350 | "version": "1.2.3", 1351 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1352 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1353 | "engines": { 1354 | "node": ">=0.10.0" 1355 | } 1356 | }, 1357 | "node_modules/ws": { 1358 | "version": "8.8.1", 1359 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", 1360 | "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", 1361 | "engines": { 1362 | "node": ">=10.0.0" 1363 | }, 1364 | "peerDependencies": { 1365 | "bufferutil": "^4.0.1", 1366 | "utf-8-validate": "^5.0.2" 1367 | }, 1368 | "peerDependenciesMeta": { 1369 | "bufferutil": { 1370 | "optional": true 1371 | }, 1372 | "utf-8-validate": { 1373 | "optional": true 1374 | } 1375 | } 1376 | }, 1377 | "node_modules/xml-name-validator": { 1378 | "version": "4.0.0", 1379 | "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", 1380 | "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", 1381 | "engines": { 1382 | "node": ">=12" 1383 | } 1384 | }, 1385 | "node_modules/xmlchars": { 1386 | "version": "2.2.0", 1387 | "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", 1388 | "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" 1389 | } 1390 | }, 1391 | "dependencies": { 1392 | "@adobe/css-tools": { 1393 | "version": "4.0.1", 1394 | "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", 1395 | "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==" 1396 | }, 1397 | "@babel/code-frame": { 1398 | "version": "7.18.6", 1399 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 1400 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 1401 | "requires": { 1402 | "@babel/highlight": "^7.18.6" 1403 | } 1404 | }, 1405 | "@babel/helper-validator-identifier": { 1406 | "version": "7.18.6", 1407 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 1408 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" 1409 | }, 1410 | "@babel/highlight": { 1411 | "version": "7.18.6", 1412 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1413 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1414 | "requires": { 1415 | "@babel/helper-validator-identifier": "^7.18.6", 1416 | "chalk": "^2.0.0", 1417 | "js-tokens": "^4.0.0" 1418 | }, 1419 | "dependencies": { 1420 | "ansi-styles": { 1421 | "version": "3.2.1", 1422 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1423 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1424 | "requires": { 1425 | "color-convert": "^1.9.0" 1426 | } 1427 | }, 1428 | "chalk": { 1429 | "version": "2.4.2", 1430 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1431 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1432 | "requires": { 1433 | "ansi-styles": "^3.2.1", 1434 | "escape-string-regexp": "^1.0.5", 1435 | "supports-color": "^5.3.0" 1436 | } 1437 | }, 1438 | "color-convert": { 1439 | "version": "1.9.3", 1440 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1441 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1442 | "requires": { 1443 | "color-name": "1.1.3" 1444 | } 1445 | }, 1446 | "color-name": { 1447 | "version": "1.1.3", 1448 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1449 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 1450 | }, 1451 | "escape-string-regexp": { 1452 | "version": "1.0.5", 1453 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1454 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 1455 | }, 1456 | "has-flag": { 1457 | "version": "3.0.0", 1458 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1459 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1460 | }, 1461 | "supports-color": { 1462 | "version": "5.5.0", 1463 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1464 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1465 | "requires": { 1466 | "has-flag": "^3.0.0" 1467 | } 1468 | } 1469 | } 1470 | }, 1471 | "@babel/runtime": { 1472 | "version": "7.18.9", 1473 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", 1474 | "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", 1475 | "requires": { 1476 | "regenerator-runtime": "^0.13.4" 1477 | } 1478 | }, 1479 | "@jest/expect-utils": { 1480 | "version": "28.1.3", 1481 | "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", 1482 | "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", 1483 | "requires": { 1484 | "jest-get-type": "^28.0.2" 1485 | } 1486 | }, 1487 | "@jest/schemas": { 1488 | "version": "28.1.3", 1489 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", 1490 | "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", 1491 | "requires": { 1492 | "@sinclair/typebox": "^0.24.1" 1493 | } 1494 | }, 1495 | "@jest/types": { 1496 | "version": "28.1.3", 1497 | "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", 1498 | "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", 1499 | "requires": { 1500 | "@jest/schemas": "^28.1.3", 1501 | "@types/istanbul-lib-coverage": "^2.0.0", 1502 | "@types/istanbul-reports": "^3.0.0", 1503 | "@types/node": "*", 1504 | "@types/yargs": "^17.0.8", 1505 | "chalk": "^4.0.0" 1506 | } 1507 | }, 1508 | "@sinclair/typebox": { 1509 | "version": "0.24.28", 1510 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.28.tgz", 1511 | "integrity": "sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow==" 1512 | }, 1513 | "@testing-library/dom": { 1514 | "version": "8.17.1", 1515 | "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.17.1.tgz", 1516 | "integrity": "sha512-KnH2MnJUzmFNPW6RIKfd+zf2Wue8mEKX0M3cpX6aKl5ZXrJM1/c/Pc8c2xDNYQCnJO48Sm5ITbMXgqTr3h4jxQ==", 1517 | "requires": { 1518 | "@babel/code-frame": "^7.10.4", 1519 | "@babel/runtime": "^7.12.5", 1520 | "@types/aria-query": "^4.2.0", 1521 | "aria-query": "^5.0.0", 1522 | "chalk": "^4.1.0", 1523 | "dom-accessibility-api": "^0.5.9", 1524 | "lz-string": "^1.4.4", 1525 | "pretty-format": "^27.0.2" 1526 | }, 1527 | "dependencies": { 1528 | "ansi-styles": { 1529 | "version": "5.2.0", 1530 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 1531 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" 1532 | }, 1533 | "pretty-format": { 1534 | "version": "27.5.1", 1535 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", 1536 | "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", 1537 | "requires": { 1538 | "ansi-regex": "^5.0.1", 1539 | "ansi-styles": "^5.0.0", 1540 | "react-is": "^17.0.1" 1541 | } 1542 | }, 1543 | "react-is": { 1544 | "version": "17.0.2", 1545 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", 1546 | "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" 1547 | } 1548 | } 1549 | }, 1550 | "@testing-library/jest-dom": { 1551 | "version": "5.16.5", 1552 | "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", 1553 | "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", 1554 | "requires": { 1555 | "@adobe/css-tools": "^4.0.1", 1556 | "@babel/runtime": "^7.9.2", 1557 | "@types/testing-library__jest-dom": "^5.9.1", 1558 | "aria-query": "^5.0.0", 1559 | "chalk": "^3.0.0", 1560 | "css.escape": "^1.5.1", 1561 | "dom-accessibility-api": "^0.5.6", 1562 | "lodash": "^4.17.15", 1563 | "redent": "^3.0.0" 1564 | }, 1565 | "dependencies": { 1566 | "chalk": { 1567 | "version": "3.0.0", 1568 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 1569 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 1570 | "requires": { 1571 | "ansi-styles": "^4.1.0", 1572 | "supports-color": "^7.1.0" 1573 | } 1574 | } 1575 | } 1576 | }, 1577 | "@tootallnate/once": { 1578 | "version": "2.0.0", 1579 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 1580 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" 1581 | }, 1582 | "@types/aria-query": { 1583 | "version": "4.2.2", 1584 | "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", 1585 | "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" 1586 | }, 1587 | "@types/istanbul-lib-coverage": { 1588 | "version": "2.0.4", 1589 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 1590 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" 1591 | }, 1592 | "@types/istanbul-lib-report": { 1593 | "version": "3.0.0", 1594 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 1595 | "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", 1596 | "requires": { 1597 | "@types/istanbul-lib-coverage": "*" 1598 | } 1599 | }, 1600 | "@types/istanbul-reports": { 1601 | "version": "3.0.1", 1602 | "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", 1603 | "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", 1604 | "requires": { 1605 | "@types/istanbul-lib-report": "*" 1606 | } 1607 | }, 1608 | "@types/jest": { 1609 | "version": "28.1.7", 1610 | "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.7.tgz", 1611 | "integrity": "sha512-acDN4VHD40V24tgu0iC44jchXavRNVFXQ/E6Z5XNsswgoSO/4NgsXoEYmPUGookKldlZQyIpmrEXsHI9cA3ZTA==", 1612 | "requires": { 1613 | "expect": "^28.0.0", 1614 | "pretty-format": "^28.0.0" 1615 | } 1616 | }, 1617 | "@types/node": { 1618 | "version": "18.7.11", 1619 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.11.tgz", 1620 | "integrity": "sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==" 1621 | }, 1622 | "@types/stack-utils": { 1623 | "version": "2.0.1", 1624 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", 1625 | "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" 1626 | }, 1627 | "@types/testing-library__jest-dom": { 1628 | "version": "5.14.5", 1629 | "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", 1630 | "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", 1631 | "requires": { 1632 | "@types/jest": "*" 1633 | } 1634 | }, 1635 | "@types/yargs": { 1636 | "version": "17.0.11", 1637 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.11.tgz", 1638 | "integrity": "sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA==", 1639 | "requires": { 1640 | "@types/yargs-parser": "*" 1641 | } 1642 | }, 1643 | "@types/yargs-parser": { 1644 | "version": "21.0.0", 1645 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", 1646 | "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" 1647 | }, 1648 | "abab": { 1649 | "version": "2.0.6", 1650 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", 1651 | "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" 1652 | }, 1653 | "acorn": { 1654 | "version": "8.8.0", 1655 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 1656 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" 1657 | }, 1658 | "acorn-globals": { 1659 | "version": "6.0.0", 1660 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", 1661 | "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", 1662 | "requires": { 1663 | "acorn": "^7.1.1", 1664 | "acorn-walk": "^7.1.1" 1665 | }, 1666 | "dependencies": { 1667 | "acorn": { 1668 | "version": "7.4.1", 1669 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 1670 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 1671 | } 1672 | } 1673 | }, 1674 | "acorn-walk": { 1675 | "version": "7.2.0", 1676 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 1677 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 1678 | }, 1679 | "agent-base": { 1680 | "version": "6.0.2", 1681 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1682 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1683 | "requires": { 1684 | "debug": "4" 1685 | } 1686 | }, 1687 | "ansi-regex": { 1688 | "version": "5.0.1", 1689 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1690 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1691 | }, 1692 | "ansi-styles": { 1693 | "version": "4.3.0", 1694 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1695 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1696 | "requires": { 1697 | "color-convert": "^2.0.1" 1698 | } 1699 | }, 1700 | "aria-query": { 1701 | "version": "5.0.0", 1702 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", 1703 | "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==" 1704 | }, 1705 | "asynckit": { 1706 | "version": "0.4.0", 1707 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1708 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 1709 | }, 1710 | "braces": { 1711 | "version": "3.0.2", 1712 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1713 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1714 | "requires": { 1715 | "fill-range": "^7.0.1" 1716 | } 1717 | }, 1718 | "browser-process-hrtime": { 1719 | "version": "1.0.0", 1720 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 1721 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" 1722 | }, 1723 | "chalk": { 1724 | "version": "4.1.2", 1725 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1726 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1727 | "requires": { 1728 | "ansi-styles": "^4.1.0", 1729 | "supports-color": "^7.1.0" 1730 | } 1731 | }, 1732 | "ci-info": { 1733 | "version": "3.3.2", 1734 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", 1735 | "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" 1736 | }, 1737 | "color-convert": { 1738 | "version": "2.0.1", 1739 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1740 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1741 | "requires": { 1742 | "color-name": "~1.1.4" 1743 | } 1744 | }, 1745 | "color-name": { 1746 | "version": "1.1.4", 1747 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1748 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1749 | }, 1750 | "combined-stream": { 1751 | "version": "1.0.8", 1752 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1753 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1754 | "requires": { 1755 | "delayed-stream": "~1.0.0" 1756 | } 1757 | }, 1758 | "css.escape": { 1759 | "version": "1.5.1", 1760 | "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", 1761 | "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" 1762 | }, 1763 | "cssom": { 1764 | "version": "0.5.0", 1765 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", 1766 | "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" 1767 | }, 1768 | "cssstyle": { 1769 | "version": "2.3.0", 1770 | "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", 1771 | "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", 1772 | "requires": { 1773 | "cssom": "~0.3.6" 1774 | }, 1775 | "dependencies": { 1776 | "cssom": { 1777 | "version": "0.3.8", 1778 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", 1779 | "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" 1780 | } 1781 | } 1782 | }, 1783 | "data-urls": { 1784 | "version": "3.0.2", 1785 | "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", 1786 | "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", 1787 | "requires": { 1788 | "abab": "^2.0.6", 1789 | "whatwg-mimetype": "^3.0.0", 1790 | "whatwg-url": "^11.0.0" 1791 | } 1792 | }, 1793 | "debug": { 1794 | "version": "4.3.4", 1795 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1796 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1797 | "requires": { 1798 | "ms": "2.1.2" 1799 | } 1800 | }, 1801 | "decimal.js": { 1802 | "version": "10.4.0", 1803 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", 1804 | "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==" 1805 | }, 1806 | "deep-is": { 1807 | "version": "0.1.4", 1808 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1809 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 1810 | }, 1811 | "delayed-stream": { 1812 | "version": "1.0.0", 1813 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1814 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 1815 | }, 1816 | "diff-sequences": { 1817 | "version": "28.1.1", 1818 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", 1819 | "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==" 1820 | }, 1821 | "dom-accessibility-api": { 1822 | "version": "0.5.14", 1823 | "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", 1824 | "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" 1825 | }, 1826 | "domexception": { 1827 | "version": "4.0.0", 1828 | "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", 1829 | "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", 1830 | "requires": { 1831 | "webidl-conversions": "^7.0.0" 1832 | } 1833 | }, 1834 | "entities": { 1835 | "version": "4.3.1", 1836 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", 1837 | "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==" 1838 | }, 1839 | "escape-string-regexp": { 1840 | "version": "2.0.0", 1841 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 1842 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" 1843 | }, 1844 | "escodegen": { 1845 | "version": "2.0.0", 1846 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", 1847 | "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", 1848 | "requires": { 1849 | "esprima": "^4.0.1", 1850 | "estraverse": "^5.2.0", 1851 | "esutils": "^2.0.2", 1852 | "optionator": "^0.8.1", 1853 | "source-map": "~0.6.1" 1854 | } 1855 | }, 1856 | "esprima": { 1857 | "version": "4.0.1", 1858 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1859 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1860 | }, 1861 | "estraverse": { 1862 | "version": "5.3.0", 1863 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1864 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" 1865 | }, 1866 | "esutils": { 1867 | "version": "2.0.3", 1868 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1869 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1870 | }, 1871 | "expect": { 1872 | "version": "28.1.3", 1873 | "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", 1874 | "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", 1875 | "requires": { 1876 | "@jest/expect-utils": "^28.1.3", 1877 | "jest-get-type": "^28.0.2", 1878 | "jest-matcher-utils": "^28.1.3", 1879 | "jest-message-util": "^28.1.3", 1880 | "jest-util": "^28.1.3" 1881 | } 1882 | }, 1883 | "fast-levenshtein": { 1884 | "version": "2.0.6", 1885 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1886 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 1887 | }, 1888 | "fill-range": { 1889 | "version": "7.0.1", 1890 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1891 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1892 | "requires": { 1893 | "to-regex-range": "^5.0.1" 1894 | } 1895 | }, 1896 | "form-data": { 1897 | "version": "4.0.0", 1898 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1899 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1900 | "requires": { 1901 | "asynckit": "^0.4.0", 1902 | "combined-stream": "^1.0.8", 1903 | "mime-types": "^2.1.12" 1904 | } 1905 | }, 1906 | "fsevents": { 1907 | "version": "2.3.2", 1908 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1909 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1910 | "dev": true, 1911 | "optional": true 1912 | }, 1913 | "graceful-fs": { 1914 | "version": "4.2.10", 1915 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1916 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 1917 | }, 1918 | "has-flag": { 1919 | "version": "4.0.0", 1920 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1921 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1922 | }, 1923 | "html-encoding-sniffer": { 1924 | "version": "3.0.0", 1925 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 1926 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 1927 | "requires": { 1928 | "whatwg-encoding": "^2.0.0" 1929 | } 1930 | }, 1931 | "http-proxy-agent": { 1932 | "version": "5.0.0", 1933 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 1934 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 1935 | "requires": { 1936 | "@tootallnate/once": "2", 1937 | "agent-base": "6", 1938 | "debug": "4" 1939 | } 1940 | }, 1941 | "https-proxy-agent": { 1942 | "version": "5.0.1", 1943 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1944 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1945 | "requires": { 1946 | "agent-base": "6", 1947 | "debug": "4" 1948 | } 1949 | }, 1950 | "husky": { 1951 | "version": "8.0.1", 1952 | "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", 1953 | "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", 1954 | "dev": true 1955 | }, 1956 | "iconv-lite": { 1957 | "version": "0.6.3", 1958 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1959 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1960 | "requires": { 1961 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1962 | } 1963 | }, 1964 | "indent-string": { 1965 | "version": "4.0.0", 1966 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1967 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" 1968 | }, 1969 | "is-number": { 1970 | "version": "7.0.0", 1971 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1972 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1973 | }, 1974 | "is-potential-custom-element-name": { 1975 | "version": "1.0.1", 1976 | "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", 1977 | "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" 1978 | }, 1979 | "jest-diff": { 1980 | "version": "28.1.3", 1981 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", 1982 | "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", 1983 | "requires": { 1984 | "chalk": "^4.0.0", 1985 | "diff-sequences": "^28.1.1", 1986 | "jest-get-type": "^28.0.2", 1987 | "pretty-format": "^28.1.3" 1988 | } 1989 | }, 1990 | "jest-get-type": { 1991 | "version": "28.0.2", 1992 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", 1993 | "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==" 1994 | }, 1995 | "jest-matcher-utils": { 1996 | "version": "28.1.3", 1997 | "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", 1998 | "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", 1999 | "requires": { 2000 | "chalk": "^4.0.0", 2001 | "jest-diff": "^28.1.3", 2002 | "jest-get-type": "^28.0.2", 2003 | "pretty-format": "^28.1.3" 2004 | } 2005 | }, 2006 | "jest-message-util": { 2007 | "version": "28.1.3", 2008 | "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", 2009 | "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", 2010 | "requires": { 2011 | "@babel/code-frame": "^7.12.13", 2012 | "@jest/types": "^28.1.3", 2013 | "@types/stack-utils": "^2.0.0", 2014 | "chalk": "^4.0.0", 2015 | "graceful-fs": "^4.2.9", 2016 | "micromatch": "^4.0.4", 2017 | "pretty-format": "^28.1.3", 2018 | "slash": "^3.0.0", 2019 | "stack-utils": "^2.0.3" 2020 | } 2021 | }, 2022 | "jest-util": { 2023 | "version": "28.1.3", 2024 | "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", 2025 | "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", 2026 | "requires": { 2027 | "@jest/types": "^28.1.3", 2028 | "@types/node": "*", 2029 | "chalk": "^4.0.0", 2030 | "ci-info": "^3.2.0", 2031 | "graceful-fs": "^4.2.9", 2032 | "picomatch": "^2.2.3" 2033 | } 2034 | }, 2035 | "js-tokens": { 2036 | "version": "4.0.0", 2037 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2038 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2039 | }, 2040 | "jsdom": { 2041 | "version": "20.0.0", 2042 | "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz", 2043 | "integrity": "sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==", 2044 | "requires": { 2045 | "abab": "^2.0.6", 2046 | "acorn": "^8.7.1", 2047 | "acorn-globals": "^6.0.0", 2048 | "cssom": "^0.5.0", 2049 | "cssstyle": "^2.3.0", 2050 | "data-urls": "^3.0.2", 2051 | "decimal.js": "^10.3.1", 2052 | "domexception": "^4.0.0", 2053 | "escodegen": "^2.0.0", 2054 | "form-data": "^4.0.0", 2055 | "html-encoding-sniffer": "^3.0.0", 2056 | "http-proxy-agent": "^5.0.0", 2057 | "https-proxy-agent": "^5.0.1", 2058 | "is-potential-custom-element-name": "^1.0.1", 2059 | "nwsapi": "^2.2.0", 2060 | "parse5": "^7.0.0", 2061 | "saxes": "^6.0.0", 2062 | "symbol-tree": "^3.2.4", 2063 | "tough-cookie": "^4.0.0", 2064 | "w3c-hr-time": "^1.0.2", 2065 | "w3c-xmlserializer": "^3.0.0", 2066 | "webidl-conversions": "^7.0.0", 2067 | "whatwg-encoding": "^2.0.0", 2068 | "whatwg-mimetype": "^3.0.0", 2069 | "whatwg-url": "^11.0.0", 2070 | "ws": "^8.8.0", 2071 | "xml-name-validator": "^4.0.0" 2072 | } 2073 | }, 2074 | "levn": { 2075 | "version": "0.3.0", 2076 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2077 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 2078 | "requires": { 2079 | "prelude-ls": "~1.1.2", 2080 | "type-check": "~0.3.2" 2081 | } 2082 | }, 2083 | "lodash": { 2084 | "version": "4.17.21", 2085 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2086 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2087 | }, 2088 | "lz-string": { 2089 | "version": "1.4.4", 2090 | "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", 2091 | "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" 2092 | }, 2093 | "micromatch": { 2094 | "version": "4.0.5", 2095 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2096 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2097 | "requires": { 2098 | "braces": "^3.0.2", 2099 | "picomatch": "^2.3.1" 2100 | } 2101 | }, 2102 | "mime-db": { 2103 | "version": "1.52.0", 2104 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2105 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 2106 | }, 2107 | "mime-types": { 2108 | "version": "2.1.35", 2109 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2110 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2111 | "requires": { 2112 | "mime-db": "1.52.0" 2113 | } 2114 | }, 2115 | "min-indent": { 2116 | "version": "1.0.1", 2117 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 2118 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" 2119 | }, 2120 | "ms": { 2121 | "version": "2.1.2", 2122 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2123 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2124 | }, 2125 | "nwsapi": { 2126 | "version": "2.2.1", 2127 | "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", 2128 | "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" 2129 | }, 2130 | "optionator": { 2131 | "version": "0.8.3", 2132 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2133 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2134 | "requires": { 2135 | "deep-is": "~0.1.3", 2136 | "fast-levenshtein": "~2.0.6", 2137 | "levn": "~0.3.0", 2138 | "prelude-ls": "~1.1.2", 2139 | "type-check": "~0.3.2", 2140 | "word-wrap": "~1.2.3" 2141 | } 2142 | }, 2143 | "parse5": { 2144 | "version": "7.0.0", 2145 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", 2146 | "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", 2147 | "requires": { 2148 | "entities": "^4.3.0" 2149 | } 2150 | }, 2151 | "picomatch": { 2152 | "version": "2.3.1", 2153 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2154 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 2155 | }, 2156 | "prelude-ls": { 2157 | "version": "1.1.2", 2158 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2159 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" 2160 | }, 2161 | "prettier": { 2162 | "version": "2.6.2", 2163 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", 2164 | "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", 2165 | "dev": true 2166 | }, 2167 | "pretty-format": { 2168 | "version": "28.1.3", 2169 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", 2170 | "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", 2171 | "requires": { 2172 | "@jest/schemas": "^28.1.3", 2173 | "ansi-regex": "^5.0.1", 2174 | "ansi-styles": "^5.0.0", 2175 | "react-is": "^18.0.0" 2176 | }, 2177 | "dependencies": { 2178 | "ansi-styles": { 2179 | "version": "5.2.0", 2180 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 2181 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" 2182 | } 2183 | } 2184 | }, 2185 | "psl": { 2186 | "version": "1.9.0", 2187 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 2188 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 2189 | }, 2190 | "punycode": { 2191 | "version": "2.1.1", 2192 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2193 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2194 | }, 2195 | "querystringify": { 2196 | "version": "2.2.0", 2197 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2198 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 2199 | }, 2200 | "react-is": { 2201 | "version": "18.2.0", 2202 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", 2203 | "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" 2204 | }, 2205 | "redent": { 2206 | "version": "3.0.0", 2207 | "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", 2208 | "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", 2209 | "requires": { 2210 | "indent-string": "^4.0.0", 2211 | "strip-indent": "^3.0.0" 2212 | } 2213 | }, 2214 | "regenerator-runtime": { 2215 | "version": "0.13.9", 2216 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 2217 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 2218 | }, 2219 | "requires-port": { 2220 | "version": "1.0.0", 2221 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2222 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 2223 | }, 2224 | "rollup": { 2225 | "version": "2.78.1", 2226 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", 2227 | "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", 2228 | "dev": true, 2229 | "requires": { 2230 | "fsevents": "~2.3.2" 2231 | } 2232 | }, 2233 | "safer-buffer": { 2234 | "version": "2.1.2", 2235 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2236 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2237 | }, 2238 | "saxes": { 2239 | "version": "6.0.0", 2240 | "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", 2241 | "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", 2242 | "requires": { 2243 | "xmlchars": "^2.2.0" 2244 | } 2245 | }, 2246 | "slash": { 2247 | "version": "3.0.0", 2248 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2249 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" 2250 | }, 2251 | "source-map": { 2252 | "version": "0.6.1", 2253 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2254 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2255 | "optional": true 2256 | }, 2257 | "stack-utils": { 2258 | "version": "2.0.5", 2259 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", 2260 | "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", 2261 | "requires": { 2262 | "escape-string-regexp": "^2.0.0" 2263 | } 2264 | }, 2265 | "strip-indent": { 2266 | "version": "3.0.0", 2267 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 2268 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 2269 | "requires": { 2270 | "min-indent": "^1.0.0" 2271 | } 2272 | }, 2273 | "supports-color": { 2274 | "version": "7.2.0", 2275 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2276 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2277 | "requires": { 2278 | "has-flag": "^4.0.0" 2279 | } 2280 | }, 2281 | "symbol-tree": { 2282 | "version": "3.2.4", 2283 | "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", 2284 | "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" 2285 | }, 2286 | "to-regex-range": { 2287 | "version": "5.0.1", 2288 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2289 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2290 | "requires": { 2291 | "is-number": "^7.0.0" 2292 | } 2293 | }, 2294 | "tough-cookie": { 2295 | "version": "4.1.0", 2296 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.0.tgz", 2297 | "integrity": "sha512-IVX6AagLelGwl6F0E+hoRpXzuD192cZhAcmT7/eoLr0PnsB1wv2E5c+A2O+V8xth9FlL2p0OstFsWn0bZpVn4w==", 2298 | "requires": { 2299 | "psl": "^1.1.33", 2300 | "punycode": "^2.1.1", 2301 | "universalify": "^0.2.0", 2302 | "url-parse": "^1.5.3" 2303 | } 2304 | }, 2305 | "tr46": { 2306 | "version": "3.0.0", 2307 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 2308 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 2309 | "requires": { 2310 | "punycode": "^2.1.1" 2311 | } 2312 | }, 2313 | "type-check": { 2314 | "version": "0.3.2", 2315 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2316 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 2317 | "requires": { 2318 | "prelude-ls": "~1.1.2" 2319 | } 2320 | }, 2321 | "uglify-js": { 2322 | "version": "3.17.0", 2323 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", 2324 | "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==" 2325 | }, 2326 | "universalify": { 2327 | "version": "0.2.0", 2328 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 2329 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" 2330 | }, 2331 | "url-parse": { 2332 | "version": "1.5.10", 2333 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 2334 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 2335 | "requires": { 2336 | "querystringify": "^2.1.1", 2337 | "requires-port": "^1.0.0" 2338 | } 2339 | }, 2340 | "w3c-hr-time": { 2341 | "version": "1.0.2", 2342 | "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", 2343 | "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", 2344 | "requires": { 2345 | "browser-process-hrtime": "^1.0.0" 2346 | } 2347 | }, 2348 | "w3c-xmlserializer": { 2349 | "version": "3.0.0", 2350 | "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", 2351 | "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", 2352 | "requires": { 2353 | "xml-name-validator": "^4.0.0" 2354 | } 2355 | }, 2356 | "webidl-conversions": { 2357 | "version": "7.0.0", 2358 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 2359 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" 2360 | }, 2361 | "whatwg-encoding": { 2362 | "version": "2.0.0", 2363 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 2364 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 2365 | "requires": { 2366 | "iconv-lite": "0.6.3" 2367 | } 2368 | }, 2369 | "whatwg-mimetype": { 2370 | "version": "3.0.0", 2371 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", 2372 | "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" 2373 | }, 2374 | "whatwg-url": { 2375 | "version": "11.0.0", 2376 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 2377 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 2378 | "requires": { 2379 | "tr46": "^3.0.0", 2380 | "webidl-conversions": "^7.0.0" 2381 | } 2382 | }, 2383 | "word-wrap": { 2384 | "version": "1.2.3", 2385 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2386 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 2387 | }, 2388 | "ws": { 2389 | "version": "8.8.1", 2390 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", 2391 | "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", 2392 | "requires": {} 2393 | }, 2394 | "xml-name-validator": { 2395 | "version": "4.0.0", 2396 | "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", 2397 | "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" 2398 | }, 2399 | "xmlchars": { 2400 | "version": "2.2.0", 2401 | "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", 2402 | "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" 2403 | } 2404 | } 2405 | } 2406 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "panix", 3 | "version": "1.0.0", 4 | "description": "Lightweight Virtual Dom library", 5 | "main": "./dist/panix.umd.js", 6 | "module": "./dist/panix.es.js", 7 | "unpkg": "./dist/panix.es.min.js", 8 | "jsdelivr": "./dist/panix.es.min.js", 9 | "scripts": { 10 | "test": "firefox ./tests/SpecRunner.html", 11 | "pretty": "npx prettier --write .", 12 | "minify": "node .minify.js", 13 | "prepare": "npx prettier --write . && npx rollup -c && node ./minifier.js && husky install" 14 | }, 15 | "author": "Mehan alavimajd", 16 | "license": "see License in LICENSE", 17 | "devDependencies": { 18 | "husky": "^8.0.1", 19 | "prettier": "^2.3.2", 20 | "rollup": "^2.58.0" 21 | }, 22 | "dependencies": { 23 | "@testing-library/dom": "^8.17.1", 24 | "@testing-library/jest-dom": "^5.16.5", 25 | "jsdom": "^20.0.0", 26 | "uglify-js": "^3.17.0" 27 | }, 28 | "repository": { 29 | "type": "git", 30 | "directory": "https://github.com/mehanalavimajd/panix" 31 | }, 32 | "homepage": "https://github.com/mehanalavimajd/panix", 33 | "bugs": "https://github.com/mehanalavimajd/panix/issues", 34 | "keywords": [ 35 | "front-end", 36 | "virtual-dom" 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | input: "./src/index.js", 3 | output: [ 4 | { 5 | format: "es", 6 | file: "dist/panix.es.js", 7 | }, 8 | { 9 | format: "es", 10 | file: "dist/panix.es.min.js", 11 | }, 12 | { 13 | format: "umd", 14 | file: "dist/panix.umd.js", 15 | name: "panix", 16 | }, 17 | { 18 | format: "umd", 19 | file: "dist/panix.umd.min.js", 20 | name: "panix", 21 | }, 22 | { 23 | format: "cjs", 24 | file: "dist/panix.cjs.js", 25 | name: "panix", 26 | }, 27 | { 28 | format: "cjs", 29 | file: "dist/panix.cjs.min.js", 30 | name: "panix", 31 | }, 32 | ], 33 | }; 34 | -------------------------------------------------------------------------------- /src/error.js: -------------------------------------------------------------------------------- 1 | const error = (text) => { 2 | throw new Error("Panix.js has made a problem: " + text); 3 | }; 4 | export default error; 5 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import error from "./error.js"; 2 | let node = (tag, props, children) => { 3 | return { 4 | tag, 5 | props: !props ? {} : props, 6 | children, 7 | }; 8 | }; 9 | let createElement = (node) => { 10 | let el = document.createElement(node.tag); 11 | for (const key in node.props) { 12 | if (node.props.hasOwnProperty(key)) { 13 | el.setAttribute(key, node.props[key]); 14 | } 15 | } 16 | if (Array.isArray(node.children)) { 17 | node.children.forEach((child) => { 18 | el.appendChild(createElement(child)); 19 | }); 20 | } else if (typeof node.children == "string") { 21 | el.innerHTML = node.children; 22 | } else { 23 | error("The children argument of node should be either an array or String"); 24 | } 25 | return el; 26 | }; 27 | let update = (newnode, oldel) => { 28 | if (newnode.tag.toLowerCase !== oldel.tagName.toLowerCase) { 29 | oldel = createElement(newnode); 30 | } else { 31 | // props 32 | if (newnode.props.length === oldel.attributes.length) { 33 | oldel.attributes.forEach((item) => { 34 | var oldKey = item.key; 35 | var oldValue = item.value; 36 | for (const [key, value] in newnode.props) { 37 | var newKey = key; 38 | var newValue = value; 39 | } 40 | if (newKey !== oldKey) { 41 | oldKey = newKey; 42 | } 43 | if (newValue !== oldValue) { 44 | oldValue = newValue; 45 | } 46 | }); 47 | } else { 48 | oldel = createElement(newnode); 49 | } 50 | // children 51 | if (Array.isArray(newnode.children)) { 52 | if (newnode.children.length === oldel.children.length) { 53 | let i = 0; 54 | newnode.forEach((child) => { 55 | if (newnode.children[i] !== oldel.children[i]) { 56 | oldel.children[i] = newnode.children[i]; 57 | } 58 | i++; 59 | }); 60 | } else { 61 | oldel = createElement(newnode); 62 | } 63 | } else if (typeof newnode.children == "string") { 64 | if (newnode.children !== oldel.textContent) { 65 | oldel.textContent = newnode.children; 66 | } 67 | } 68 | } 69 | return oldel; 70 | }; 71 | let render = (el, cont) => { 72 | cont.appendChild(el); 73 | }; 74 | export { node, createElement, update, render }; 75 | -------------------------------------------------------------------------------- /tests/SpecRunner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Jasmine Spec Runner v4.3.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/lib/jasmine-4.3.0/boot0.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2008-2022 Pivotal Labs 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | */ 23 | /** 24 | This file starts the process of "booting" Jasmine. It initializes Jasmine, 25 | makes its globals available, and creates the env. This file should be loaded 26 | after `jasmine.js` and `jasmine_html.js`, but before `boot1.js` or any project 27 | source files or spec files are loaded. 28 | */ 29 | (function () { 30 | const jasmineRequire = window.jasmineRequire || require("./jasmine.js"); 31 | 32 | /** 33 | * ## Require & Instantiate 34 | * 35 | * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. 36 | */ 37 | const jasmine = jasmineRequire.core(jasmineRequire), 38 | global = jasmine.getGlobal(); 39 | global.jasmine = jasmine; 40 | 41 | /** 42 | * Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference. 43 | */ 44 | jasmineRequire.html(jasmine); 45 | 46 | /** 47 | * Create the Jasmine environment. This is used to run all specs in a project. 48 | */ 49 | const env = jasmine.getEnv(); 50 | 51 | /** 52 | * ## The Global Interface 53 | * 54 | * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. 55 | */ 56 | const jasmineInterface = jasmineRequire.interface(jasmine, env); 57 | 58 | /** 59 | * Add all of the Jasmine global/public interface to the global scope, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. 60 | */ 61 | for (const property in jasmineInterface) { 62 | global[property] = jasmineInterface[property]; 63 | } 64 | })(); 65 | -------------------------------------------------------------------------------- /tests/lib/jasmine-4.3.0/boot1.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2008-2022 Pivotal Labs 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | */ 23 | /** 24 | This file finishes 'booting' Jasmine, performing all of the necessary 25 | initialization before executing the loaded environment and all of a project's 26 | specs. This file should be loaded after `boot0.js` but before any project 27 | source files or spec files are loaded. Thus this file can also be used to 28 | customize Jasmine for a project. 29 | 30 | If a project is using Jasmine via the standalone distribution, this file can 31 | be customized directly. If you only wish to configure the Jasmine env, you 32 | can load another file that calls `jasmine.getEnv().configure({...})` 33 | after `boot0.js` is loaded and before this file is loaded. 34 | */ 35 | 36 | (function () { 37 | const env = jasmine.getEnv(); 38 | 39 | /** 40 | * ## Runner Parameters 41 | * 42 | * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. 43 | */ 44 | 45 | const queryString = new jasmine.QueryString({ 46 | getWindowLocation: function () { 47 | return window.location; 48 | }, 49 | }); 50 | 51 | const filterSpecs = !!queryString.getParam("spec"); 52 | 53 | const config = { 54 | stopOnSpecFailure: queryString.getParam("stopOnSpecFailure"), 55 | stopSpecOnExpectationFailure: queryString.getParam( 56 | "stopSpecOnExpectationFailure" 57 | ), 58 | hideDisabled: queryString.getParam("hideDisabled"), 59 | }; 60 | 61 | const random = queryString.getParam("random"); 62 | 63 | if (random !== undefined && random !== "") { 64 | config.random = random; 65 | } 66 | 67 | const seed = queryString.getParam("seed"); 68 | if (seed) { 69 | config.seed = seed; 70 | } 71 | 72 | /** 73 | * ## Reporters 74 | * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). 75 | */ 76 | const htmlReporter = new jasmine.HtmlReporter({ 77 | env: env, 78 | navigateWithNewParam: function (key, value) { 79 | return queryString.navigateWithNewParam(key, value); 80 | }, 81 | addToExistingQueryString: function (key, value) { 82 | return queryString.fullStringWithNewParam(key, value); 83 | }, 84 | getContainer: function () { 85 | return document.body; 86 | }, 87 | createElement: function () { 88 | return document.createElement.apply(document, arguments); 89 | }, 90 | createTextNode: function () { 91 | return document.createTextNode.apply(document, arguments); 92 | }, 93 | timer: new jasmine.Timer(), 94 | filterSpecs: filterSpecs, 95 | }); 96 | 97 | /** 98 | * The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript. 99 | */ 100 | env.addReporter(jsApiReporter); 101 | env.addReporter(htmlReporter); 102 | 103 | /** 104 | * Filter which specs will be run by matching the start of the full name against the `spec` query param. 105 | */ 106 | const specFilter = new jasmine.HtmlSpecFilter({ 107 | filterString: function () { 108 | return queryString.getParam("spec"); 109 | }, 110 | }); 111 | 112 | config.specFilter = function (spec) { 113 | return specFilter.matches(spec.getFullName()); 114 | }; 115 | 116 | env.configure(config); 117 | 118 | /** 119 | * ## Execution 120 | * 121 | * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. 122 | */ 123 | const currentWindowOnload = window.onload; 124 | 125 | window.onload = function () { 126 | if (currentWindowOnload) { 127 | currentWindowOnload(); 128 | } 129 | htmlReporter.initialize(); 130 | env.execute(); 131 | }; 132 | })(); 133 | -------------------------------------------------------------------------------- /tests/lib/jasmine-4.3.0/jasmine-html.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2008-2022 Pivotal Labs 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | */ 23 | // eslint-disable-next-line no-var 24 | var jasmineRequire = window.jasmineRequire || require("./jasmine.js"); 25 | 26 | jasmineRequire.html = function (j$) { 27 | j$.ResultsNode = jasmineRequire.ResultsNode(); 28 | j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); 29 | j$.QueryString = jasmineRequire.QueryString(); 30 | j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); 31 | }; 32 | 33 | jasmineRequire.HtmlReporter = function (j$) { 34 | function ResultsStateBuilder() { 35 | this.topResults = new j$.ResultsNode({}, "", null); 36 | this.currentParent = this.topResults; 37 | this.specsExecuted = 0; 38 | this.failureCount = 0; 39 | this.pendingSpecCount = 0; 40 | } 41 | 42 | ResultsStateBuilder.prototype.suiteStarted = function (result) { 43 | this.currentParent.addChild(result, "suite"); 44 | this.currentParent = this.currentParent.last(); 45 | }; 46 | 47 | ResultsStateBuilder.prototype.suiteDone = function (result) { 48 | this.currentParent.updateResult(result); 49 | if (this.currentParent !== this.topResults) { 50 | this.currentParent = this.currentParent.parent; 51 | } 52 | 53 | if (result.status === "failed") { 54 | this.failureCount++; 55 | } 56 | }; 57 | 58 | ResultsStateBuilder.prototype.specStarted = function (result) {}; 59 | 60 | ResultsStateBuilder.prototype.specDone = function (result) { 61 | this.currentParent.addChild(result, "spec"); 62 | 63 | if (result.status !== "excluded") { 64 | this.specsExecuted++; 65 | } 66 | 67 | if (result.status === "failed") { 68 | this.failureCount++; 69 | } 70 | 71 | if (result.status == "pending") { 72 | this.pendingSpecCount++; 73 | } 74 | }; 75 | 76 | ResultsStateBuilder.prototype.jasmineDone = function (result) { 77 | if (result.failedExpectations) { 78 | this.failureCount += result.failedExpectations.length; 79 | } 80 | }; 81 | 82 | function HtmlReporter(options) { 83 | function config() { 84 | return (options.env && options.env.configuration()) || {}; 85 | } 86 | 87 | const getContainer = options.getContainer; 88 | const createElement = options.createElement; 89 | const createTextNode = options.createTextNode; 90 | const navigateWithNewParam = options.navigateWithNewParam || function () {}; 91 | const addToExistingQueryString = 92 | options.addToExistingQueryString || defaultQueryString; 93 | const filterSpecs = options.filterSpecs; 94 | let htmlReporterMain; 95 | let symbols; 96 | const deprecationWarnings = []; 97 | const failures = []; 98 | 99 | this.initialize = function () { 100 | clearPrior(); 101 | htmlReporterMain = createDom( 102 | "div", 103 | { className: "jasmine_html-reporter" }, 104 | createDom( 105 | "div", 106 | { className: "jasmine-banner" }, 107 | createDom("a", { 108 | className: "jasmine-title", 109 | href: "http://jasmine.github.io/", 110 | target: "_blank", 111 | }), 112 | createDom("span", { className: "jasmine-version" }, j$.version) 113 | ), 114 | createDom("ul", { className: "jasmine-symbol-summary" }), 115 | createDom("div", { className: "jasmine-alert" }), 116 | createDom( 117 | "div", 118 | { className: "jasmine-results" }, 119 | createDom("div", { className: "jasmine-failures" }) 120 | ) 121 | ); 122 | getContainer().appendChild(htmlReporterMain); 123 | }; 124 | 125 | let totalSpecsDefined; 126 | this.jasmineStarted = function (options) { 127 | totalSpecsDefined = options.totalSpecsDefined || 0; 128 | }; 129 | 130 | const summary = createDom("div", { className: "jasmine-summary" }); 131 | 132 | const stateBuilder = new ResultsStateBuilder(); 133 | 134 | this.suiteStarted = function (result) { 135 | stateBuilder.suiteStarted(result); 136 | }; 137 | 138 | this.suiteDone = function (result) { 139 | stateBuilder.suiteDone(result); 140 | 141 | if (result.status === "failed") { 142 | failures.push(failureDom(result)); 143 | } 144 | addDeprecationWarnings(result, "suite"); 145 | }; 146 | 147 | this.specStarted = function (result) { 148 | stateBuilder.specStarted(result); 149 | }; 150 | 151 | this.specDone = function (result) { 152 | stateBuilder.specDone(result); 153 | 154 | if (noExpectations(result)) { 155 | const noSpecMsg = "Spec '" + result.fullName + "' has no expectations."; 156 | if (result.status === "failed") { 157 | console.error(noSpecMsg); 158 | } else { 159 | console.warn(noSpecMsg); 160 | } 161 | } 162 | 163 | if (!symbols) { 164 | symbols = find(".jasmine-symbol-summary"); 165 | } 166 | 167 | symbols.appendChild( 168 | createDom("li", { 169 | className: this.displaySpecInCorrectFormat(result), 170 | id: "spec_" + result.id, 171 | title: result.fullName, 172 | }) 173 | ); 174 | 175 | if (result.status === "failed") { 176 | failures.push(failureDom(result)); 177 | } 178 | 179 | addDeprecationWarnings(result, "spec"); 180 | }; 181 | 182 | this.displaySpecInCorrectFormat = function (result) { 183 | return noExpectations(result) && result.status === "passed" 184 | ? "jasmine-empty" 185 | : this.resultStatus(result.status); 186 | }; 187 | 188 | this.resultStatus = function (status) { 189 | if (status === "excluded") { 190 | return config().hideDisabled 191 | ? "jasmine-excluded-no-display" 192 | : "jasmine-excluded"; 193 | } 194 | return "jasmine-" + status; 195 | }; 196 | 197 | this.jasmineDone = function (doneResult) { 198 | stateBuilder.jasmineDone(doneResult); 199 | const banner = find(".jasmine-banner"); 200 | const alert = find(".jasmine-alert"); 201 | const order = doneResult && doneResult.order; 202 | 203 | alert.appendChild( 204 | createDom( 205 | "span", 206 | { className: "jasmine-duration" }, 207 | "finished in " + doneResult.totalTime / 1000 + "s" 208 | ) 209 | ); 210 | 211 | banner.appendChild(optionsMenu(config())); 212 | 213 | if (stateBuilder.specsExecuted < totalSpecsDefined) { 214 | const skippedMessage = 215 | "Ran " + 216 | stateBuilder.specsExecuted + 217 | " of " + 218 | totalSpecsDefined + 219 | " specs - run all"; 220 | // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906 221 | const skippedLink = 222 | (window.location.pathname || "") + 223 | addToExistingQueryString("spec", ""); 224 | alert.appendChild( 225 | createDom( 226 | "span", 227 | { className: "jasmine-bar jasmine-skipped" }, 228 | createDom( 229 | "a", 230 | { href: skippedLink, title: "Run all specs" }, 231 | skippedMessage 232 | ) 233 | ) 234 | ); 235 | } 236 | let statusBarMessage = ""; 237 | let statusBarClassName = "jasmine-overall-result jasmine-bar "; 238 | const globalFailures = 239 | (doneResult && doneResult.failedExpectations) || []; 240 | const failed = stateBuilder.failureCount + globalFailures.length > 0; 241 | 242 | if (totalSpecsDefined > 0 || failed) { 243 | statusBarMessage += 244 | pluralize("spec", stateBuilder.specsExecuted) + 245 | ", " + 246 | pluralize("failure", stateBuilder.failureCount); 247 | if (stateBuilder.pendingSpecCount) { 248 | statusBarMessage += 249 | ", " + pluralize("pending spec", stateBuilder.pendingSpecCount); 250 | } 251 | } 252 | 253 | if (doneResult.overallStatus === "passed") { 254 | statusBarClassName += " jasmine-passed "; 255 | } else if (doneResult.overallStatus === "incomplete") { 256 | statusBarClassName += " jasmine-incomplete "; 257 | statusBarMessage = 258 | "Incomplete: " + 259 | doneResult.incompleteReason + 260 | ", " + 261 | statusBarMessage; 262 | } else { 263 | statusBarClassName += " jasmine-failed "; 264 | } 265 | 266 | let seedBar; 267 | if (order && order.random) { 268 | seedBar = createDom( 269 | "span", 270 | { className: "jasmine-seed-bar" }, 271 | ", randomized with seed ", 272 | createDom( 273 | "a", 274 | { 275 | title: "randomized with seed " + order.seed, 276 | href: seedHref(order.seed), 277 | }, 278 | order.seed 279 | ) 280 | ); 281 | } 282 | 283 | alert.appendChild( 284 | createDom( 285 | "span", 286 | { className: statusBarClassName }, 287 | statusBarMessage, 288 | seedBar 289 | ) 290 | ); 291 | 292 | const errorBarClassName = "jasmine-bar jasmine-errored"; 293 | const afterAllMessagePrefix = "AfterAll "; 294 | 295 | for (let i = 0; i < globalFailures.length; i++) { 296 | alert.appendChild( 297 | createDom( 298 | "span", 299 | { className: errorBarClassName }, 300 | globalFailureMessage(globalFailures[i]) 301 | ) 302 | ); 303 | } 304 | 305 | function globalFailureMessage(failure) { 306 | if (failure.globalErrorType === "load") { 307 | const prefix = "Error during loading: " + failure.message; 308 | 309 | if (failure.filename) { 310 | return ( 311 | prefix + " in " + failure.filename + " line " + failure.lineno 312 | ); 313 | } else { 314 | return prefix; 315 | } 316 | } else if (failure.globalErrorType === "afterAll") { 317 | return afterAllMessagePrefix + failure.message; 318 | } else { 319 | return failure.message; 320 | } 321 | } 322 | 323 | addDeprecationWarnings(doneResult); 324 | 325 | for (let i = 0; i < deprecationWarnings.length; i++) { 326 | const children = []; 327 | let context; 328 | 329 | switch (deprecationWarnings[i].runnableType) { 330 | case "spec": 331 | context = "(in spec: " + deprecationWarnings[i].runnableName + ")"; 332 | break; 333 | case "suite": 334 | context = "(in suite: " + deprecationWarnings[i].runnableName + ")"; 335 | break; 336 | default: 337 | context = ""; 338 | } 339 | 340 | deprecationWarnings[i].message.split("\n").forEach(function (line) { 341 | children.push(line); 342 | children.push(createDom("br")); 343 | }); 344 | 345 | children[0] = "DEPRECATION: " + children[0]; 346 | children.push(context); 347 | 348 | if (deprecationWarnings[i].stack) { 349 | children.push(createExpander(deprecationWarnings[i].stack)); 350 | } 351 | 352 | alert.appendChild( 353 | createDom( 354 | "span", 355 | { className: "jasmine-bar jasmine-warning" }, 356 | children 357 | ) 358 | ); 359 | } 360 | 361 | const results = find(".jasmine-results"); 362 | results.appendChild(summary); 363 | 364 | summaryList(stateBuilder.topResults, summary); 365 | 366 | if (failures.length) { 367 | alert.appendChild( 368 | createDom( 369 | "span", 370 | { className: "jasmine-menu jasmine-bar jasmine-spec-list" }, 371 | createDom("span", {}, "Spec List | "), 372 | createDom( 373 | "a", 374 | { className: "jasmine-failures-menu", href: "#" }, 375 | "Failures" 376 | ) 377 | ) 378 | ); 379 | alert.appendChild( 380 | createDom( 381 | "span", 382 | { className: "jasmine-menu jasmine-bar jasmine-failure-list" }, 383 | createDom( 384 | "a", 385 | { className: "jasmine-spec-list-menu", href: "#" }, 386 | "Spec List" 387 | ), 388 | createDom("span", {}, " | Failures ") 389 | ) 390 | ); 391 | 392 | find(".jasmine-failures-menu").onclick = function () { 393 | setMenuModeTo("jasmine-failure-list"); 394 | return false; 395 | }; 396 | find(".jasmine-spec-list-menu").onclick = function () { 397 | setMenuModeTo("jasmine-spec-list"); 398 | return false; 399 | }; 400 | 401 | setMenuModeTo("jasmine-failure-list"); 402 | 403 | const failureNode = find(".jasmine-failures"); 404 | for (let i = 0; i < failures.length; i++) { 405 | failureNode.appendChild(failures[i]); 406 | } 407 | } 408 | }; 409 | 410 | return this; 411 | 412 | function failureDom(result) { 413 | const failure = createDom( 414 | "div", 415 | { className: "jasmine-spec-detail jasmine-failed" }, 416 | failureDescription(result, stateBuilder.currentParent), 417 | createDom("div", { className: "jasmine-messages" }) 418 | ); 419 | const messages = failure.childNodes[1]; 420 | 421 | for (let i = 0; i < result.failedExpectations.length; i++) { 422 | const expectation = result.failedExpectations[i]; 423 | messages.appendChild( 424 | createDom( 425 | "div", 426 | { className: "jasmine-result-message" }, 427 | expectation.message 428 | ) 429 | ); 430 | messages.appendChild( 431 | createDom( 432 | "div", 433 | { className: "jasmine-stack-trace" }, 434 | expectation.stack 435 | ) 436 | ); 437 | } 438 | 439 | if (result.failedExpectations.length === 0) { 440 | messages.appendChild( 441 | createDom( 442 | "div", 443 | { className: "jasmine-result-message" }, 444 | "Spec has no expectations" 445 | ) 446 | ); 447 | } 448 | 449 | if (result.debugLogs) { 450 | messages.appendChild(debugLogTable(result.debugLogs)); 451 | } 452 | 453 | return failure; 454 | } 455 | 456 | function debugLogTable(debugLogs) { 457 | const tbody = createDom("tbody"); 458 | 459 | debugLogs.forEach(function (entry) { 460 | tbody.appendChild( 461 | createDom( 462 | "tr", 463 | {}, 464 | createDom("td", {}, entry.timestamp.toString()), 465 | createDom("td", {}, entry.message) 466 | ) 467 | ); 468 | }); 469 | 470 | return createDom( 471 | "div", 472 | { className: "jasmine-debug-log" }, 473 | createDom( 474 | "div", 475 | { className: "jasmine-debug-log-header" }, 476 | "Debug logs" 477 | ), 478 | createDom( 479 | "table", 480 | {}, 481 | createDom( 482 | "thead", 483 | {}, 484 | createDom( 485 | "tr", 486 | {}, 487 | createDom("th", {}, "Time (ms)"), 488 | createDom("th", {}, "Message") 489 | ) 490 | ), 491 | tbody 492 | ) 493 | ); 494 | } 495 | 496 | function summaryList(resultsTree, domParent) { 497 | let specListNode; 498 | for (let i = 0; i < resultsTree.children.length; i++) { 499 | const resultNode = resultsTree.children[i]; 500 | if (filterSpecs && !hasActiveSpec(resultNode)) { 501 | continue; 502 | } 503 | if (resultNode.type === "suite") { 504 | const suiteListNode = createDom( 505 | "ul", 506 | { className: "jasmine-suite", id: "suite-" + resultNode.result.id }, 507 | createDom( 508 | "li", 509 | { 510 | className: 511 | "jasmine-suite-detail jasmine-" + resultNode.result.status, 512 | }, 513 | createDom( 514 | "a", 515 | { href: specHref(resultNode.result) }, 516 | resultNode.result.description 517 | ) 518 | ) 519 | ); 520 | 521 | summaryList(resultNode, suiteListNode); 522 | domParent.appendChild(suiteListNode); 523 | } 524 | if (resultNode.type === "spec") { 525 | if (domParent.getAttribute("class") !== "jasmine-specs") { 526 | specListNode = createDom("ul", { className: "jasmine-specs" }); 527 | domParent.appendChild(specListNode); 528 | } 529 | let specDescription = resultNode.result.description; 530 | if (noExpectations(resultNode.result)) { 531 | specDescription = "SPEC HAS NO EXPECTATIONS " + specDescription; 532 | } 533 | if ( 534 | resultNode.result.status === "pending" && 535 | resultNode.result.pendingReason !== "" 536 | ) { 537 | specDescription = 538 | specDescription + 539 | " PENDING WITH MESSAGE: " + 540 | resultNode.result.pendingReason; 541 | } 542 | specListNode.appendChild( 543 | createDom( 544 | "li", 545 | { 546 | className: "jasmine-" + resultNode.result.status, 547 | id: "spec-" + resultNode.result.id, 548 | }, 549 | createDom( 550 | "a", 551 | { href: specHref(resultNode.result) }, 552 | specDescription 553 | ) 554 | ) 555 | ); 556 | } 557 | } 558 | } 559 | 560 | function optionsMenu(config) { 561 | const optionsMenuDom = createDom( 562 | "div", 563 | { className: "jasmine-run-options" }, 564 | createDom("span", { className: "jasmine-trigger" }, "Options"), 565 | createDom( 566 | "div", 567 | { className: "jasmine-payload" }, 568 | createDom( 569 | "div", 570 | { className: "jasmine-stop-on-failure" }, 571 | createDom("input", { 572 | className: "jasmine-fail-fast", 573 | id: "jasmine-fail-fast", 574 | type: "checkbox", 575 | }), 576 | createDom( 577 | "label", 578 | { className: "jasmine-label", for: "jasmine-fail-fast" }, 579 | "stop execution on spec failure" 580 | ) 581 | ), 582 | createDom( 583 | "div", 584 | { className: "jasmine-throw-failures" }, 585 | createDom("input", { 586 | className: "jasmine-throw", 587 | id: "jasmine-throw-failures", 588 | type: "checkbox", 589 | }), 590 | createDom( 591 | "label", 592 | { className: "jasmine-label", for: "jasmine-throw-failures" }, 593 | "stop spec on expectation failure" 594 | ) 595 | ), 596 | createDom( 597 | "div", 598 | { className: "jasmine-random-order" }, 599 | createDom("input", { 600 | className: "jasmine-random", 601 | id: "jasmine-random-order", 602 | type: "checkbox", 603 | }), 604 | createDom( 605 | "label", 606 | { className: "jasmine-label", for: "jasmine-random-order" }, 607 | "run tests in random order" 608 | ) 609 | ), 610 | createDom( 611 | "div", 612 | { className: "jasmine-hide-disabled" }, 613 | createDom("input", { 614 | className: "jasmine-disabled", 615 | id: "jasmine-hide-disabled", 616 | type: "checkbox", 617 | }), 618 | createDom( 619 | "label", 620 | { className: "jasmine-label", for: "jasmine-hide-disabled" }, 621 | "hide disabled tests" 622 | ) 623 | ) 624 | ) 625 | ); 626 | 627 | const failFastCheckbox = 628 | optionsMenuDom.querySelector("#jasmine-fail-fast"); 629 | failFastCheckbox.checked = config.stopOnSpecFailure; 630 | failFastCheckbox.onclick = function () { 631 | navigateWithNewParam("stopOnSpecFailure", !config.stopOnSpecFailure); 632 | }; 633 | 634 | const throwCheckbox = optionsMenuDom.querySelector( 635 | "#jasmine-throw-failures" 636 | ); 637 | throwCheckbox.checked = config.stopSpecOnExpectationFailure; 638 | throwCheckbox.onclick = function () { 639 | navigateWithNewParam( 640 | "stopSpecOnExpectationFailure", 641 | !config.stopSpecOnExpectationFailure 642 | ); 643 | }; 644 | 645 | const randomCheckbox = optionsMenuDom.querySelector( 646 | "#jasmine-random-order" 647 | ); 648 | randomCheckbox.checked = config.random; 649 | randomCheckbox.onclick = function () { 650 | navigateWithNewParam("random", !config.random); 651 | }; 652 | 653 | const hideDisabled = optionsMenuDom.querySelector( 654 | "#jasmine-hide-disabled" 655 | ); 656 | hideDisabled.checked = config.hideDisabled; 657 | hideDisabled.onclick = function () { 658 | navigateWithNewParam("hideDisabled", !config.hideDisabled); 659 | }; 660 | 661 | const optionsTrigger = optionsMenuDom.querySelector(".jasmine-trigger"), 662 | optionsPayload = optionsMenuDom.querySelector(".jasmine-payload"), 663 | isOpen = /\bjasmine-open\b/; 664 | 665 | optionsTrigger.onclick = function () { 666 | if (isOpen.test(optionsPayload.className)) { 667 | optionsPayload.className = optionsPayload.className.replace( 668 | isOpen, 669 | "" 670 | ); 671 | } else { 672 | optionsPayload.className += " jasmine-open"; 673 | } 674 | }; 675 | 676 | return optionsMenuDom; 677 | } 678 | 679 | function failureDescription(result, suite) { 680 | const wrapper = createDom( 681 | "div", 682 | { className: "jasmine-description" }, 683 | createDom( 684 | "a", 685 | { title: result.description, href: specHref(result) }, 686 | result.description 687 | ) 688 | ); 689 | let suiteLink; 690 | 691 | while (suite && suite.parent) { 692 | wrapper.insertBefore(createTextNode(" > "), wrapper.firstChild); 693 | suiteLink = createDom( 694 | "a", 695 | { href: suiteHref(suite) }, 696 | suite.result.description 697 | ); 698 | wrapper.insertBefore(suiteLink, wrapper.firstChild); 699 | 700 | suite = suite.parent; 701 | } 702 | 703 | return wrapper; 704 | } 705 | 706 | function suiteHref(suite) { 707 | const els = []; 708 | 709 | while (suite && suite.parent) { 710 | els.unshift(suite.result.description); 711 | suite = suite.parent; 712 | } 713 | 714 | // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906 715 | return ( 716 | (window.location.pathname || "") + 717 | addToExistingQueryString("spec", els.join(" ")) 718 | ); 719 | } 720 | 721 | function addDeprecationWarnings(result, runnableType) { 722 | if (result && result.deprecationWarnings) { 723 | for (let i = 0; i < result.deprecationWarnings.length; i++) { 724 | const warning = result.deprecationWarnings[i].message; 725 | deprecationWarnings.push({ 726 | message: warning, 727 | stack: result.deprecationWarnings[i].stack, 728 | runnableName: result.fullName, 729 | runnableType: runnableType, 730 | }); 731 | } 732 | } 733 | } 734 | 735 | function createExpander(stackTrace) { 736 | const expandLink = createDom("a", { href: "#" }, "Show stack trace"); 737 | const root = createDom( 738 | "div", 739 | { className: "jasmine-expander" }, 740 | expandLink, 741 | createDom( 742 | "div", 743 | { className: "jasmine-expander-contents jasmine-stack-trace" }, 744 | stackTrace 745 | ) 746 | ); 747 | 748 | expandLink.addEventListener("click", function (e) { 749 | e.preventDefault(); 750 | 751 | if (root.classList.contains("jasmine-expanded")) { 752 | root.classList.remove("jasmine-expanded"); 753 | expandLink.textContent = "Show stack trace"; 754 | } else { 755 | root.classList.add("jasmine-expanded"); 756 | expandLink.textContent = "Hide stack trace"; 757 | } 758 | }); 759 | 760 | return root; 761 | } 762 | 763 | function find(selector) { 764 | return getContainer().querySelector(".jasmine_html-reporter " + selector); 765 | } 766 | 767 | function clearPrior() { 768 | const oldReporter = find(""); 769 | 770 | if (oldReporter) { 771 | getContainer().removeChild(oldReporter); 772 | } 773 | } 774 | 775 | function createDom(type, attrs, childrenArrayOrVarArgs) { 776 | const el = createElement(type); 777 | let children; 778 | 779 | if (j$.isArray_(childrenArrayOrVarArgs)) { 780 | children = childrenArrayOrVarArgs; 781 | } else { 782 | children = []; 783 | 784 | for (let i = 2; i < arguments.length; i++) { 785 | children.push(arguments[i]); 786 | } 787 | } 788 | 789 | for (let i = 0; i < children.length; i++) { 790 | const child = children[i]; 791 | 792 | if (typeof child === "string") { 793 | el.appendChild(createTextNode(child)); 794 | } else { 795 | if (child) { 796 | el.appendChild(child); 797 | } 798 | } 799 | } 800 | 801 | for (const attr in attrs) { 802 | if (attr == "className") { 803 | el[attr] = attrs[attr]; 804 | } else { 805 | el.setAttribute(attr, attrs[attr]); 806 | } 807 | } 808 | 809 | return el; 810 | } 811 | 812 | function pluralize(singular, count) { 813 | const word = count == 1 ? singular : singular + "s"; 814 | 815 | return "" + count + " " + word; 816 | } 817 | 818 | function specHref(result) { 819 | // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906 820 | return ( 821 | (window.location.pathname || "") + 822 | addToExistingQueryString("spec", result.fullName) 823 | ); 824 | } 825 | 826 | function seedHref(seed) { 827 | // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906 828 | return ( 829 | (window.location.pathname || "") + 830 | addToExistingQueryString("seed", seed) 831 | ); 832 | } 833 | 834 | function defaultQueryString(key, value) { 835 | return "?" + key + "=" + value; 836 | } 837 | 838 | function setMenuModeTo(mode) { 839 | htmlReporterMain.setAttribute("class", "jasmine_html-reporter " + mode); 840 | } 841 | 842 | function noExpectations(result) { 843 | const allExpectations = 844 | result.failedExpectations.length + result.passedExpectations.length; 845 | 846 | return ( 847 | allExpectations === 0 && 848 | (result.status === "passed" || result.status === "failed") 849 | ); 850 | } 851 | 852 | function hasActiveSpec(resultNode) { 853 | if (resultNode.type == "spec" && resultNode.result.status != "excluded") { 854 | return true; 855 | } 856 | 857 | if (resultNode.type == "suite") { 858 | for (let i = 0, j = resultNode.children.length; i < j; i++) { 859 | if (hasActiveSpec(resultNode.children[i])) { 860 | return true; 861 | } 862 | } 863 | } 864 | } 865 | } 866 | 867 | return HtmlReporter; 868 | }; 869 | 870 | jasmineRequire.HtmlSpecFilter = function () { 871 | function HtmlSpecFilter(options) { 872 | const filterString = 873 | options && 874 | options.filterString() && 875 | options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 876 | const filterPattern = new RegExp(filterString); 877 | 878 | this.matches = function (specName) { 879 | return filterPattern.test(specName); 880 | }; 881 | } 882 | 883 | return HtmlSpecFilter; 884 | }; 885 | 886 | jasmineRequire.ResultsNode = function () { 887 | function ResultsNode(result, type, parent) { 888 | this.result = result; 889 | this.type = type; 890 | this.parent = parent; 891 | 892 | this.children = []; 893 | 894 | this.addChild = function (result, type) { 895 | this.children.push(new ResultsNode(result, type, this)); 896 | }; 897 | 898 | this.last = function () { 899 | return this.children[this.children.length - 1]; 900 | }; 901 | 902 | this.updateResult = function (result) { 903 | this.result = result; 904 | }; 905 | } 906 | 907 | return ResultsNode; 908 | }; 909 | 910 | jasmineRequire.QueryString = function () { 911 | function QueryString(options) { 912 | this.navigateWithNewParam = function (key, value) { 913 | options.getWindowLocation().search = this.fullStringWithNewParam( 914 | key, 915 | value 916 | ); 917 | }; 918 | 919 | this.fullStringWithNewParam = function (key, value) { 920 | const paramMap = queryStringToParamMap(); 921 | paramMap[key] = value; 922 | return toQueryString(paramMap); 923 | }; 924 | 925 | this.getParam = function (key) { 926 | return queryStringToParamMap()[key]; 927 | }; 928 | 929 | return this; 930 | 931 | function toQueryString(paramMap) { 932 | const qStrPairs = []; 933 | for (const prop in paramMap) { 934 | qStrPairs.push( 935 | encodeURIComponent(prop) + "=" + encodeURIComponent(paramMap[prop]) 936 | ); 937 | } 938 | return "?" + qStrPairs.join("&"); 939 | } 940 | 941 | function queryStringToParamMap() { 942 | const paramStr = options.getWindowLocation().search.substring(1); 943 | let params = []; 944 | const paramMap = {}; 945 | 946 | if (paramStr.length > 0) { 947 | params = paramStr.split("&"); 948 | for (let i = 0; i < params.length; i++) { 949 | const p = params[i].split("="); 950 | let value = decodeURIComponent(p[1]); 951 | if (value === "true" || value === "false") { 952 | value = JSON.parse(value); 953 | } 954 | paramMap[decodeURIComponent(p[0])] = value; 955 | } 956 | } 957 | 958 | return paramMap; 959 | } 960 | } 961 | 962 | return QueryString; 963 | }; 964 | -------------------------------------------------------------------------------- /tests/lib/jasmine-4.3.0/jasmine.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | body { 3 | overflow-y: scroll; 4 | } 5 | 6 | .jasmine_html-reporter { 7 | width: 100%; 8 | background-color: #eee; 9 | padding: 5px; 10 | margin: -8px; 11 | font-size: 11px; 12 | font-family: Monaco, "Lucida Console", monospace; 13 | line-height: 14px; 14 | color: #333; 15 | } 16 | .jasmine_html-reporter a { 17 | text-decoration: none; 18 | } 19 | .jasmine_html-reporter a:hover { 20 | text-decoration: underline; 21 | } 22 | .jasmine_html-reporter p, 23 | .jasmine_html-reporter h1, 24 | .jasmine_html-reporter h2, 25 | .jasmine_html-reporter h3, 26 | .jasmine_html-reporter h4, 27 | .jasmine_html-reporter h5, 28 | .jasmine_html-reporter h6 { 29 | margin: 0; 30 | line-height: 14px; 31 | } 32 | .jasmine_html-reporter .jasmine-banner, 33 | .jasmine_html-reporter .jasmine-symbol-summary, 34 | .jasmine_html-reporter .jasmine-summary, 35 | .jasmine_html-reporter .jasmine-result-message, 36 | .jasmine_html-reporter .jasmine-spec .jasmine-description, 37 | .jasmine_html-reporter .jasmine-spec-detail .jasmine-description, 38 | .jasmine_html-reporter .jasmine-alert .jasmine-bar, 39 | .jasmine_html-reporter .jasmine-stack-trace { 40 | padding-left: 9px; 41 | padding-right: 9px; 42 | } 43 | .jasmine_html-reporter .jasmine-banner { 44 | position: relative; 45 | } 46 | .jasmine_html-reporter .jasmine-banner .jasmine-title { 47 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAZCAMAAACGusnyAAACdlBMVEX/////AP+AgICqVaqAQICZM5mAVYCSSZKAQICOOY6ATYCLRouAQICJO4mSSYCIRIiPQICHPIeOR4CGQ4aMQICGPYaLRoCFQ4WKQICPPYWJRYCOQoSJQICNPoSIRICMQoSHQICHRICKQoOHQICKPoOJO4OJQYOMQICMQ4CIQYKLQICIPoKLQ4CKQICNPoKJQISMQ4KJQoSLQYKJQISLQ4KIQoSKQYKIQICIQISMQoSKQYKLQIOLQoOJQYGLQIOKQIOMQoGKQYOLQYGKQIOLQoGJQYOJQIOKQYGJQIOKQoGKQIGLQIKLQ4KKQoGLQYKJQIGKQYKJQIGKQIKJQoGKQYKLQIGKQYKLQIOJQoKKQoOJQYKKQIOJQoKKQoOKQIOLQoKKQYOLQYKJQIOKQoKKQYKKQoKJQYOKQYKLQIOKQoKLQYOKQYKLQIOJQoGKQYKJQYGJQoGKQYKLQoGLQYGKQoGJQYKKQYGJQIKKQoGJQYKLQIKKQYGLQYKKQYGKQYGKQYKJQYOKQoKJQYOKQYKLQYOLQYOKQYKLQYOKQoKKQYKKQYOKQYOJQYKKQYKLQYKKQIKKQoKKQYKKQYKKQoKJQIKKQYKLQYKKQYKKQIKKQYKKQYKKQYKKQIKKQYKJQYGLQYGKQYKKQYKKQYGKQIKKQYGKQYOJQoKKQYOLQYKKQYOKQoKKQYKKQoKKQYKKQYKJQYKLQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKJQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKLQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKmIDpEAAAA0XRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAiIyQlJycoKissLS4wMTQ1Njc4OTo7PDw+P0BCQ0RISUpLTE1OUFNUVVdYWFlaW15fYGFiY2ZnaGlqa2xtb3BxcnN0dnh5ent8fX5/gIGChIWIioyNjo+QkZOUlZaYmZqbnJ2eoKGio6WmqKmsra6vsLGztre4ubq7vL2+wMHDxMjJysvNzs/Q0dLU1tfY2dvc3t/g4eLj5ebn6Onq6+zt7u/w8vP09fb3+Pn6+/z9/vkVQXAAAAMaSURBVHhe5dXxV1N1GMfxz2ABbDgIAm5VDJOyVDIJLUMaVpBWUZUaGbmqoGpZRSiGiRWp6KoZ5AB0ZY50RImZQIlahKkMYXv/R90dBvET/rJfOr3Ouc8v99zPec59zvf56j+vYKlViSf7250X4Mr3O29Tgq08BdGB4DhcekEJ5YkQKFsgWZdtj9JpV+I8xPjLFqkrsEIqO8PHSpis36jWazcqjEsfJjkvRssVU37SdIOu4XCf5vEJPsnwJpnRNU9JmxhMk8l1gehIrq7hTFjzOD+Vf88629qKMJVNltInFeRexRQyJlNeqd1iGDlSzrIUIyXbyFfm3RYprcQRe7lqtWyGYbfc6dT0R2vmdOOkX3u55C1rP37ftiH+tDby4r/RBT0w8TyEkr+epB9XgPDmSYYWbrhCuFYaIyw3fDQAXTnSkh+ANofiHmWf9l+FY1I90FdQTetstO00o23novzVsJ7uB3/C5TkbjRwZ5JerwV4iRWq9HFbFMaK/d0TYqayRiQPuIxxS3Bu8JWU90/60tKi7vkhaznez0a/TbVOKj5CaOZh6fWG6/Lyv9B/ZLR1gw/S/fpbeVD3MCW1li6SvWDOn65tr99/uvWtBS0XDm4s1t+sOHpG0kpBKx/l77wOSnxLpcx6TXmXLTPQOKYOf9Q1dfr8/SJ2mFdCvl1Yl93DiHUZvXeLJbGSzYu5gVJ2slbSakOR8dxCq5adQ2oFLqsE9Ex3L4qQO0eOPeU5x56bypXp4onSEb5OkICX6lDat55TeoztNKQcJaakrz9KCb95oD69IKq+yKW4XPjknaS52V0TZqE2cTtXjcHSCRmUO88e+85hj3EP74i9p8pylw7lxgMDyyl6OV7ZejnjNMfatu87LxRbH0IS35gt2a4ZjmGpVBdKK3Wr6INk8jWWSGqbA55CKgjBRC6E9w78ydTg3ABS3AFV1QN0Y4Aa2pgEjWnQURj9L0ayK6R2ysEqxHUKzYnLvvyU+i9KM2JHJzE4vyZOyDcOwOsySajeLPc8sNvPJkFlyJd20wpqAzZeAfZ3oWybxd+P/3j+SG3uSBdf2VQAAAABJRU5ErkJggg==") 48 | no-repeat; 49 | background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=") 50 | no-repeat, 51 | none; 52 | background-size: 100%; 53 | display: block; 54 | float: left; 55 | width: 90px; 56 | height: 25px; 57 | } 58 | .jasmine_html-reporter .jasmine-banner .jasmine-version { 59 | margin-left: 14px; 60 | position: relative; 61 | top: 6px; 62 | } 63 | .jasmine_html-reporter #jasmine_content { 64 | position: fixed; 65 | right: 100%; 66 | } 67 | .jasmine_html-reporter .jasmine-version { 68 | color: #aaa; 69 | } 70 | .jasmine_html-reporter .jasmine-banner { 71 | margin-top: 14px; 72 | } 73 | .jasmine_html-reporter .jasmine-duration { 74 | color: #fff; 75 | float: right; 76 | line-height: 28px; 77 | padding-right: 9px; 78 | } 79 | .jasmine_html-reporter .jasmine-symbol-summary { 80 | overflow: hidden; 81 | margin: 14px 0; 82 | } 83 | .jasmine_html-reporter .jasmine-symbol-summary li { 84 | display: inline-block; 85 | height: 10px; 86 | width: 14px; 87 | font-size: 16px; 88 | } 89 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-passed { 90 | font-size: 14px; 91 | } 92 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-passed:before { 93 | color: #007069; 94 | content: "•"; 95 | } 96 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-failed { 97 | line-height: 9px; 98 | } 99 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-failed:before { 100 | color: #ca3a11; 101 | content: "×"; 102 | font-weight: bold; 103 | margin-left: -1px; 104 | } 105 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded { 106 | font-size: 14px; 107 | } 108 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded:before { 109 | color: #bababa; 110 | content: "•"; 111 | } 112 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded-no-display { 113 | font-size: 14px; 114 | display: none; 115 | } 116 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-pending { 117 | line-height: 17px; 118 | } 119 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-pending:before { 120 | color: #ba9d37; 121 | content: "*"; 122 | } 123 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-empty { 124 | font-size: 14px; 125 | } 126 | .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-empty:before { 127 | color: #ba9d37; 128 | content: "•"; 129 | } 130 | .jasmine_html-reporter .jasmine-run-options { 131 | float: right; 132 | margin-right: 5px; 133 | border: 1px solid #8a4182; 134 | color: #8a4182; 135 | position: relative; 136 | line-height: 20px; 137 | } 138 | .jasmine_html-reporter .jasmine-run-options .jasmine-trigger { 139 | cursor: pointer; 140 | padding: 8px 16px; 141 | } 142 | .jasmine_html-reporter .jasmine-run-options .jasmine-payload { 143 | position: absolute; 144 | display: none; 145 | right: -1px; 146 | border: 1px solid #8a4182; 147 | background-color: #eee; 148 | white-space: nowrap; 149 | padding: 4px 8px; 150 | } 151 | .jasmine_html-reporter .jasmine-run-options .jasmine-payload.jasmine-open { 152 | display: block; 153 | } 154 | .jasmine_html-reporter .jasmine-bar { 155 | line-height: 28px; 156 | font-size: 14px; 157 | display: block; 158 | color: #eee; 159 | } 160 | .jasmine_html-reporter .jasmine-bar.jasmine-failed, 161 | .jasmine_html-reporter .jasmine-bar.jasmine-errored { 162 | background-color: #ca3a11; 163 | border-bottom: 1px solid #eee; 164 | } 165 | .jasmine_html-reporter .jasmine-bar.jasmine-passed { 166 | background-color: #007069; 167 | } 168 | .jasmine_html-reporter .jasmine-bar.jasmine-incomplete { 169 | background-color: #bababa; 170 | } 171 | .jasmine_html-reporter .jasmine-bar.jasmine-skipped { 172 | background-color: #bababa; 173 | } 174 | .jasmine_html-reporter .jasmine-bar.jasmine-warning { 175 | margin-top: 14px; 176 | margin-bottom: 14px; 177 | background-color: #ba9d37; 178 | color: #333; 179 | } 180 | .jasmine_html-reporter .jasmine-bar.jasmine-menu { 181 | background-color: #fff; 182 | color: #aaa; 183 | } 184 | .jasmine_html-reporter .jasmine-bar.jasmine-menu a { 185 | color: #333; 186 | } 187 | .jasmine_html-reporter .jasmine-bar a { 188 | color: white; 189 | } 190 | .jasmine_html-reporter.jasmine-spec-list 191 | .jasmine-bar.jasmine-menu.jasmine-failure-list, 192 | .jasmine_html-reporter.jasmine-spec-list .jasmine-results .jasmine-failures { 193 | display: none; 194 | } 195 | .jasmine_html-reporter.jasmine-failure-list 196 | .jasmine-bar.jasmine-menu.jasmine-spec-list, 197 | .jasmine_html-reporter.jasmine-failure-list .jasmine-summary { 198 | display: none; 199 | } 200 | .jasmine_html-reporter .jasmine-results { 201 | margin-top: 14px; 202 | } 203 | .jasmine_html-reporter .jasmine-summary { 204 | margin-top: 14px; 205 | } 206 | .jasmine_html-reporter .jasmine-summary ul { 207 | list-style-type: none; 208 | margin-left: 14px; 209 | padding-top: 0; 210 | padding-left: 0; 211 | } 212 | .jasmine_html-reporter .jasmine-summary ul.jasmine-suite { 213 | margin-top: 7px; 214 | margin-bottom: 7px; 215 | } 216 | .jasmine_html-reporter .jasmine-summary li.jasmine-passed a { 217 | color: #007069; 218 | } 219 | .jasmine_html-reporter .jasmine-summary li.jasmine-failed a { 220 | color: #ca3a11; 221 | } 222 | .jasmine_html-reporter .jasmine-summary li.jasmine-empty a { 223 | color: #ba9d37; 224 | } 225 | .jasmine_html-reporter .jasmine-summary li.jasmine-pending a { 226 | color: #ba9d37; 227 | } 228 | .jasmine_html-reporter .jasmine-summary li.jasmine-excluded a { 229 | color: #bababa; 230 | } 231 | .jasmine_html-reporter .jasmine-specs li.jasmine-passed a:before { 232 | content: "• "; 233 | } 234 | .jasmine_html-reporter .jasmine-specs li.jasmine-failed a:before { 235 | content: "× "; 236 | } 237 | .jasmine_html-reporter .jasmine-specs li.jasmine-empty a:before { 238 | content: "* "; 239 | } 240 | .jasmine_html-reporter .jasmine-specs li.jasmine-pending a:before { 241 | content: "• "; 242 | } 243 | .jasmine_html-reporter .jasmine-specs li.jasmine-excluded a:before { 244 | content: "• "; 245 | } 246 | .jasmine_html-reporter .jasmine-description + .jasmine-suite { 247 | margin-top: 0; 248 | } 249 | .jasmine_html-reporter .jasmine-suite { 250 | margin-top: 14px; 251 | } 252 | .jasmine_html-reporter .jasmine-suite a { 253 | color: #333; 254 | } 255 | .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail { 256 | margin-bottom: 28px; 257 | } 258 | .jasmine_html-reporter 259 | .jasmine-failures 260 | .jasmine-spec-detail 261 | .jasmine-description { 262 | background-color: #ca3a11; 263 | color: white; 264 | } 265 | .jasmine_html-reporter 266 | .jasmine-failures 267 | .jasmine-spec-detail 268 | .jasmine-description 269 | a { 270 | color: white; 271 | } 272 | .jasmine_html-reporter .jasmine-result-message { 273 | padding-top: 14px; 274 | color: #333; 275 | white-space: pre-wrap; 276 | } 277 | .jasmine_html-reporter .jasmine-result-message span.jasmine-result { 278 | display: block; 279 | } 280 | .jasmine_html-reporter .jasmine-stack-trace { 281 | margin: 5px 0 0 0; 282 | max-height: 224px; 283 | overflow: auto; 284 | line-height: 18px; 285 | color: #666; 286 | border: 1px solid #ddd; 287 | background: white; 288 | white-space: pre; 289 | } 290 | .jasmine_html-reporter .jasmine-expander a { 291 | display: block; 292 | margin-left: 14px; 293 | color: blue; 294 | text-decoration: underline; 295 | } 296 | .jasmine_html-reporter .jasmine-expander-contents { 297 | display: none; 298 | } 299 | .jasmine_html-reporter .jasmine-expanded { 300 | padding-bottom: 10px; 301 | } 302 | .jasmine_html-reporter .jasmine-expanded .jasmine-expander-contents { 303 | display: block; 304 | margin-left: 14px; 305 | padding: 5px; 306 | } 307 | .jasmine_html-reporter .jasmine-debug-log { 308 | margin: 5px 0 0 0; 309 | padding: 5px; 310 | color: #666; 311 | border: 1px solid #ddd; 312 | background: white; 313 | } 314 | .jasmine_html-reporter .jasmine-debug-log table { 315 | border-spacing: 0; 316 | } 317 | .jasmine_html-reporter .jasmine-debug-log table, 318 | .jasmine_html-reporter .jasmine-debug-log th, 319 | .jasmine_html-reporter .jasmine-debug-log td { 320 | border: 1px solid #ddd; 321 | } 322 | -------------------------------------------------------------------------------- /tests/lib/jasmine-4.3.0/jasmine_favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mehanalavimajd/panix/4d49756f4f622f0af1710b1d8cf8609cae6956f5/tests/lib/jasmine-4.3.0/jasmine_favicon.png -------------------------------------------------------------------------------- /tests/spec/createElement.spec.js: -------------------------------------------------------------------------------- 1 | import { createElement } from "../../src/index.js"; 2 | 3 | describe("createElement works with single child", () => { 4 | let original, made; 5 | beforeEach(() => { 6 | original = document.createElement("h1"); 7 | original.textContent = "Hello world"; 8 | original.id = "hello"; 9 | made = createElement({ 10 | tag: "h1", 11 | props: { id: "hello" }, 12 | children: "Hello world", 13 | }); 14 | }); 15 | it("TextContent is same", () => { 16 | expect(original.textContent).toEqual(made.textContent); 17 | }); 18 | it("Tagname is same", () => { 19 | expect(original.tagName).toEqual(made.tagName); 20 | }); 21 | it("props is same", () => { 22 | expect(original.attributes).toEqual(made.attributes); 23 | }); 24 | }); 25 | 26 | describe("createElement works with multiple children", () => { 27 | let old, el; 28 | beforeEach(() => { 29 | old = document.createElement("div"); 30 | old.innerHTML = "

hello

"; 31 | old.id = "hello"; 32 | el = createElement({ 33 | tag: "div", 34 | props: { id: "hello" }, 35 | children: [{ tag: "h1", props: null, children: "hello" }], 36 | }); 37 | }); 38 | it("TextContent is same", () => { 39 | expect(old.innerHTML).toEqual(el.innerHTML); 40 | }); 41 | it("Tagname is same", () => { 42 | expect(old.tagName).toEqual(el.tagName); 43 | }); 44 | it("props is same", () => { 45 | expect(old.attributes).toEqual(el.attributes); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /tests/spec/node.spec.js: -------------------------------------------------------------------------------- 1 | import { node } from "../../dist/panix.es.js"; 2 | describe("Node function works", () => { 3 | let mynode; 4 | beforeEach(() => { 5 | mynode = node("h1", { id: "hello" }, "Hello world"); 6 | }); 7 | it("Tag is correct", () => { 8 | expect(mynode.tag).toBe("h1"); 9 | }); 10 | it("Props is correct", () => { 11 | expect(mynode.props).toEqual( 12 | jasmine.objectContaining({ 13 | id: "hello", 14 | }) 15 | ); 16 | }); 17 | it("Children is correct", () => { 18 | expect(mynode.children).toEqual("Hello world"); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /tests/spec/render.spec.js: -------------------------------------------------------------------------------- 1 | import { render, node, createElement, update } from "../../src/index.js"; 2 | 3 | describe("Render Tests", () => { 4 | it("Render is ok", () => { 5 | render(createElement(node("h1", { id: "hello" }, "hello")), document.body); 6 | expect(document.getElementById("hello").textContent).toEqual("hello"); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /tests/spec/update.spec.js: -------------------------------------------------------------------------------- 1 | import { update, createElement } from "../../src/index.js"; 2 | 3 | describe("Update works", () => { 4 | let old, el; 5 | beforeEach(() => { 6 | old = document.createElement("h1"); 7 | old.id = "hello"; 8 | old.textContent = "Hello"; 9 | }); 10 | it("Textcontent is ok", () => { 11 | let el = update( 12 | { tag: "h1", props: { id: "good" }, children: "Goodbye" }, 13 | old 14 | ); 15 | expect(el.textContent).toEqual("Goodbye"); 16 | }); 17 | it("Props is ok", () => { 18 | let el = update( 19 | { tag: "h1", props: { id: "good", class: "bad" }, children: "Goodbye" }, 20 | old 21 | ); 22 | expect(el.className).toEqual("bad"); 23 | }); 24 | it("Tagname is ok", () => { 25 | let el = update( 26 | { tag: "h2", props: { id: "good", class: "bad" }, children: "Goodbye" }, 27 | old 28 | ); 29 | expect(el.tagName).toEqual("H2"); 30 | }); 31 | }); 32 | --------------------------------------------------------------------------------