├── .editorconfig ├── .eslintrc ├── .gitattributes ├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── README.md ├── UNLICENSE ├── dist ├── cjs │ ├── dominate.js │ └── package.json ├── esm │ └── dominate.js └── umd │ └── dominate.js ├── karma.config.cjs ├── package-lock.json ├── package.json ├── rollup.config.js ├── src └── dominate.js └── test └── specs ├── .eslintrc └── dominate.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 4 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "ecmaVersion": 2020, 5 | "sourceType": "module" 6 | }, 7 | "env": { 8 | "es6": true, 9 | "browser": true, 10 | "node": true 11 | }, 12 | "rules": { 13 | "quotes": [ 14 | "error", 15 | "single" 16 | ], 17 | "semi": [ 18 | "error", 19 | "always" 20 | ], 21 | "eol-last": [ 22 | "error", 23 | "always" 24 | ] 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | on: 3 | - push 4 | - pull_request 5 | jobs: 6 | test: 7 | name: Node.js ${{ matrix.node-version }} 8 | runs-on: ubuntu-latest 9 | strategy: 10 | matrix: 11 | node-version: 12 | - 20 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: actions/setup-node@v4 16 | with: 17 | node-version: ${{ matrix.node-version }} 18 | - name: Install dependencies 19 | run: npm ci 20 | - name: Lint files 21 | run: npm run lint 22 | - name: Run tests 23 | run: npm test 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /tmp 5 | /out-tsc 6 | 7 | # dependencies 8 | /node_modules 9 | 10 | # IDEs and editors 11 | /.idea 12 | .project 13 | .classpath 14 | .c9/ 15 | *.launch 16 | .settings/ 17 | *.sublime-workspace 18 | 19 | # IDE - VSCode 20 | .vscode/* 21 | !.vscode/settings.json 22 | !.vscode/tasks.json 23 | !.vscode/launch.json 24 | !.vscode/extensions.json 25 | 26 | # misc 27 | /.sass-cache 28 | /connect.lock 29 | /coverage 30 | /libpeerconnection.log 31 | npm-debug.log 32 | testem.log 33 | /typings 34 | 35 | # e2e 36 | /e2e/*.js 37 | /e2e/*.map 38 | 39 | # System Files 40 | .DS_Store 41 | Thumbs.db -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dominate 2 | 3 | [![Version Badge][version-image]][project-url] 4 | [![License][license-image]][license-url] 5 | [![Build Status][build-image]][build-url] 6 | 7 | > Declarative DOM building 8 | 9 | ## Install 10 | 11 | Download the [CJS](https://github.com/ryanmorr/dominate/raw/master/dist/cjs/dominate.js), [ESM](https://github.com/ryanmorr/dominate/raw/master/dist/esm/dominate.js), [UMD](https://github.com/ryanmorr/dominate/raw/master/dist/umd/dominate.js) versions or install via NPM: 12 | 13 | ``` sh 14 | npm install @ryanmorr/dominate 15 | ``` 16 | 17 | ## Usage 18 | 19 | Import the library: 20 | 21 | ``` javascript 22 | import dominate from '@ryanmorr/dominate'; 23 | ``` 24 | 25 | Convert a single element HTML string into a DOM element: 26 | 27 | ``` javascript 28 | const div = dominate`
`; 29 | ``` 30 | 31 | Convert multiple elements into a document fragment: 32 | 33 | ``` javascript 34 | const fragment = dominate`
`; 35 | ``` 36 | 37 | Convert plain text to a DOM text node: 38 | 39 | ``` javascript 40 | const text = dominate`This is plain text.`; 41 | ``` 42 | 43 | Supports self-closing and auto-closing tags: 44 | 45 | ``` javascript 46 | const div = dominate`
`; 47 | const span = dominate``; 48 | ``` 49 | 50 | Set attributes: 51 | 52 | ``` javascript 53 | const div = dominate`
`; 54 | ``` 55 | 56 | Set the class with an array or object: 57 | 58 | ``` javascript 59 | const div = dominate`
`; 60 | const span = dominate``; 61 | ``` 62 | 63 | Set CSS styles as a string or an object: 64 | 65 | ``` javascript 66 | const div = dominate`
`; 67 | const span = dominate``; 68 | ``` 69 | 70 | Add event listeners: 71 | 72 | ``` javascript 73 | const div = dominate`
console.log('clicked!')}>
`; 74 | ``` 75 | 76 | Inject DOM nodes: 77 | 78 | ``` javascript 79 | const div = dominate`
${dominate``}
`; 80 | ``` 81 | 82 | Supports SVG elements: 83 | 84 | ``` javascript 85 | const rect = dominate``; 86 | ``` 87 | 88 | Supports functional components: 89 | 90 | ``` javascript 91 | const Component = (attributes, children) => { 92 | return dominate`
${children}
` 93 | }; 94 | 95 | const div = dominate`<${Component} id="foo">bar`; 96 | ``` 97 | 98 | Can return multiple element references via the `ref` attribute: 99 | 100 | ``` javascript 101 | const { foo, bar, baz } = dominate` 102 |
103 | 104 | 105 |
106 | `; 107 | ``` 108 | 109 | ## License 110 | 111 | This project is dedicated to the public domain as described by the [Unlicense](http://unlicense.org/). 112 | 113 | [project-url]: https://github.com/ryanmorr/dominate 114 | [version-image]: https://img.shields.io/github/package-json/v/ryanmorr/dominate?color=blue&style=flat-square 115 | [build-url]: https://github.com/ryanmorr/dominate/actions 116 | [build-image]: https://img.shields.io/github/actions/workflow/status/ryanmorr/dominate/node.js.yml?style=flat-square 117 | [license-image]: https://img.shields.io/github/license/ryanmorr/dominate?color=blue&style=flat-square 118 | [license-url]: UNLICENSE -------------------------------------------------------------------------------- /UNLICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /dist/cjs/dominate.js: -------------------------------------------------------------------------------- 1 | /*! @ryanmorr/dominate v1.1.2 | https://github.com/ryanmorr/dominate */ 2 | "use strict";var e=function(t,n,r,i){var o;n[0]=0;for(var s=1;s=5&&((i||!e&&5===r)&&(s.push(r,0,i,n),r=6),e&&(s.push(r,e,0,n),r=6)),i=""},l=0;l"===t?(r=1,i=""):i=t+i[0]:o?t===o?o="":i+=t:'"'===t||"'"===t?o=t:">"===t?(f(),r=1):r&&("="===t?(r=5,n=i,i=""):"/"===t&&(r<5||">"===e[l][a+1])?(f(),3===r&&(s=s[0]),r=s,(s=s[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(f(),r=2):i+=t),3===r&&"!--"===i&&(r=4,s=s[0])}return f(),s}(n)),r),arguments,[])).length>1?r:r[0]}.bind((function(e,t,...n){if(this[0]=3,"function"==typeof e)return e(t,n);const r=s.includes(e),i=r?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);if(t)for(const e in t)u(i,e,t[e],r);n&&i.appendChild(l(n));return i})),r=Symbol("ref"),i=Symbol("result"),o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,s=["svg","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"];function f(e){let t="";if("string"==typeof e)return e;if(Array.isArray(e)&&e.length>0)for(let n,r=0,i=e.length;rnull!=e&&"boolean"!=typeof e)).reduce(((e,t)=>(e.appendChild(a(t)),e)),document.createDocumentFragment())}function a(e){return"object"==typeof e&&i in e?e[i]:Array.isArray(e)?l(e):("number"==typeof e&&(e=String(e)),"string"==typeof e?document.createTextNode(e):e)}function c(e,t,n){t.startsWith("--")?e.style.setProperty(t,null==n?"":n):null==n?e.style[t]="":"number"!=typeof n||o.test(t)?e.style[t]=n:e.style[t]=n+"px"}function u(e,t,n,i){if("ref"!==t)if(i||"class"!==t&&"className"!==t)if("style"===t){if("string"==typeof n)e.style.cssText=n;else if(n)for(const t in n)c(e,t,n[t])}else if(t.startsWith("on")&&"function"==typeof n)t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.addEventListener(t,n);else{if(!i&&"width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{return void(e[t]=null==n?"":n)}catch(e){}null==n||!1===n&&-1==t.indexOf("-")||e.setAttribute(t,n)}else e.className=f(n);else e[r]=n}module.exports=function(...e){let t=n(...e);if(t=Array.isArray(t)?l(t):a(t),3!==t.nodeType){const e={};[t,...t.querySelectorAll("*")].forEach((t=>{r in t&&(e[t[r]]=t)}));if(Object.keys(e).length>0)return e[i]=t,e}return t}; 3 | -------------------------------------------------------------------------------- /dist/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "commonjs" 3 | } 4 | -------------------------------------------------------------------------------- /dist/esm/dominate.js: -------------------------------------------------------------------------------- 1 | /*! @ryanmorr/dominate v1.1.2 | https://github.com/ryanmorr/dominate */ 2 | var e=function(t,n,r,i){var o;n[0]=0;for(var f=1;f=5&&((i||!e&&5===r)&&(f.push(r,0,i,n),r=6),e&&(f.push(r,e,0,n),r=6)),i=""},l=0;l"===t?(r=1,i=""):i=t+i[0]:o?t===o?o="":i+=t:'"'===t||"'"===t?o=t:">"===t?(s(),r=1):r&&("="===t?(r=5,n=i,i=""):"/"===t&&(r<5||">"===e[l][a+1])?(s(),3===r&&(f=f[0]),r=f,(f=f[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(s(),r=2):i+=t),3===r&&"!--"===i&&(r=4,f=f[0])}return s(),f}(n)),r),arguments,[])).length>1?r:r[0]}.bind((function(e,t,...n){if(this[0]=3,"function"==typeof e)return e(t,n);const r=f.includes(e),i=r?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);if(t)for(const e in t)u(i,e,t[e],r);n&&i.appendChild(l(n));return i})),r=Symbol("ref"),i=Symbol("result"),o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=["svg","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"];function s(e){let t="";if("string"==typeof e)return e;if(Array.isArray(e)&&e.length>0)for(let n,r=0,i=e.length;rnull!=e&&"boolean"!=typeof e)).reduce(((e,t)=>(e.appendChild(a(t)),e)),document.createDocumentFragment())}function a(e){return"object"==typeof e&&i in e?e[i]:Array.isArray(e)?l(e):("number"==typeof e&&(e=String(e)),"string"==typeof e?document.createTextNode(e):e)}function c(e,t,n){t.startsWith("--")?e.style.setProperty(t,null==n?"":n):null==n?e.style[t]="":"number"!=typeof n||o.test(t)?e.style[t]=n:e.style[t]=n+"px"}function u(e,t,n,i){if("ref"!==t)if(i||"class"!==t&&"className"!==t)if("style"===t){if("string"==typeof n)e.style.cssText=n;else if(n)for(const t in n)c(e,t,n[t])}else if(t.startsWith("on")&&"function"==typeof n)t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.addEventListener(t,n);else{if(!i&&"width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{return void(e[t]=null==n?"":n)}catch(e){}null==n||!1===n&&-1==t.indexOf("-")||e.setAttribute(t,n)}else e.className=s(n);else e[r]=n}function p(...e){let t=n(...e);if(t=Array.isArray(t)?l(t):a(t),3!==t.nodeType){const e={};[t,...t.querySelectorAll("*")].forEach((t=>{r in t&&(e[t[r]]=t)}));if(Object.keys(e).length>0)return e[i]=t,e}return t}export{p as default}; 3 | -------------------------------------------------------------------------------- /dist/umd/dominate.js: -------------------------------------------------------------------------------- 1 | /*! @ryanmorr/dominate v1.1.2 | https://github.com/ryanmorr/dominate */ 2 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dominate=t()}(this,(function(){"use strict";var e=function(t,n,r,i){var o;n[0]=0;for(var f=1;f=5&&((i||!e&&5===r)&&(f.push(r,0,i,n),r=6),e&&(f.push(r,e,0,n),r=6)),i=""},l=0;l"===t?(r=1,i=""):i=t+i[0]:o?t===o?o="":i+=t:'"'===t||"'"===t?o=t:">"===t?(s(),r=1):r&&("="===t?(r=5,n=i,i=""):"/"===t&&(r<5||">"===e[l][a+1])?(s(),3===r&&(f=f[0]),r=f,(f=f[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(s(),r=2):i+=t),3===r&&"!--"===i&&(r=4,f=f[0])}return s(),f}(n)),r),arguments,[])).length>1?r:r[0]}.bind((function(e,t,...n){if(this[0]=3,"function"==typeof e)return e(t,n);const r=f.includes(e),i=r?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);if(t)for(const e in t)u(i,e,t[e],r);n&&i.appendChild(l(n));return i})),r=Symbol("ref"),i=Symbol("result"),o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=["svg","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"];function s(e){let t="";if("string"==typeof e)return e;if(Array.isArray(e)&&e.length>0)for(let n,r=0,i=e.length;rnull!=e&&"boolean"!=typeof e)).reduce(((e,t)=>(e.appendChild(a(t)),e)),document.createDocumentFragment())}function a(e){return"object"==typeof e&&i in e?e[i]:Array.isArray(e)?l(e):("number"==typeof e&&(e=String(e)),"string"==typeof e?document.createTextNode(e):e)}function c(e,t,n){t.startsWith("--")?e.style.setProperty(t,null==n?"":n):null==n?e.style[t]="":"number"!=typeof n||o.test(t)?e.style[t]=n:e.style[t]=n+"px"}function u(e,t,n,i){if("ref"!==t)if(i||"class"!==t&&"className"!==t)if("style"===t){if("string"==typeof n)e.style.cssText=n;else if(n)for(const t in n)c(e,t,n[t])}else if(t.startsWith("on")&&"function"==typeof n)t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.addEventListener(t,n);else{if(!i&&"width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{return void(e[t]=null==n?"":n)}catch(e){}null==n||!1===n&&-1==t.indexOf("-")||e.setAttribute(t,n)}else e.className=s(n);else e[r]=n}return function(...e){let t=n(...e);if(t=Array.isArray(t)?l(t):a(t),3!==t.nodeType){const e={};[t,...t.querySelectorAll("*")].forEach((t=>{r in t&&(e[t[r]]=t)}));if(Object.keys(e).length>0)return e[i]=t,e}return t}})); 3 | -------------------------------------------------------------------------------- /karma.config.cjs: -------------------------------------------------------------------------------- 1 | const resolve = require('@rollup/plugin-node-resolve'); 2 | const commonjs = require('@rollup/plugin-commonjs'); 3 | 4 | const specs = 'test/specs/**/*.js'; 5 | 6 | module.exports = function(config) { 7 | config.set({ 8 | basePath: __dirname, 9 | frameworks: ['mocha', 'chai', 'sinon'], 10 | files: [specs], 11 | preprocessors: { 12 | [specs]: ['rollup'] 13 | }, 14 | rollupPreprocessor: { 15 | output: { 16 | format: 'esm', 17 | sourcemap: 'inline' 18 | }, 19 | plugins: [ 20 | resolve(), 21 | commonjs() 22 | ] 23 | }, 24 | reporters: ['mocha'], 25 | browsers: ['ChromeHeadless'], 26 | autoWatch: false, 27 | singleRun: true 28 | }); 29 | }; 30 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ryanmorr/dominate", 3 | "version": "1.1.2", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@ryanmorr/dominate", 9 | "version": "1.1.2", 10 | "license": "Unlicense", 11 | "dependencies": { 12 | "htm": "^3.1.1" 13 | }, 14 | "devDependencies": { 15 | "@rollup/plugin-commonjs": "^24.0.1", 16 | "@rollup/plugin-node-resolve": "^15.0.1", 17 | "@rollup/plugin-terser": "^0.4.0", 18 | "chai": "^4.3.7", 19 | "eslint": "^8.33.0", 20 | "karma": "^6.4.1", 21 | "karma-chai": "^0.1.0", 22 | "karma-chrome-launcher": "^3.1.1", 23 | "karma-mocha": "^2.0.1", 24 | "karma-mocha-reporter": "^2.2.5", 25 | "karma-rollup-preprocessor": "^7.0.8", 26 | "karma-sinon": "^1.0.5", 27 | "mocha": "^10.2.0", 28 | "rollup": "^3.14.0", 29 | "rollup-plugin-generate-package-json": "^3.2.0", 30 | "sinon": "^15.0.1", 31 | "terser": "^5.16.3" 32 | } 33 | }, 34 | "node_modules/@babel/code-frame": { 35 | "version": "7.18.6", 36 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 37 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 38 | "dev": true, 39 | "dependencies": { 40 | "@babel/highlight": "^7.18.6" 41 | }, 42 | "engines": { 43 | "node": ">=6.9.0" 44 | } 45 | }, 46 | "node_modules/@babel/helper-validator-identifier": { 47 | "version": "7.19.1", 48 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 49 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 50 | "dev": true, 51 | "engines": { 52 | "node": ">=6.9.0" 53 | } 54 | }, 55 | "node_modules/@babel/highlight": { 56 | "version": "7.18.6", 57 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 58 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 59 | "dev": true, 60 | "dependencies": { 61 | "@babel/helper-validator-identifier": "^7.18.6", 62 | "chalk": "^2.0.0", 63 | "js-tokens": "^4.0.0" 64 | }, 65 | "engines": { 66 | "node": ">=6.9.0" 67 | } 68 | }, 69 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 70 | "version": "3.2.1", 71 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 72 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 73 | "dev": true, 74 | "dependencies": { 75 | "color-convert": "^1.9.0" 76 | }, 77 | "engines": { 78 | "node": ">=4" 79 | } 80 | }, 81 | "node_modules/@babel/highlight/node_modules/chalk": { 82 | "version": "2.4.2", 83 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 84 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 85 | "dev": true, 86 | "dependencies": { 87 | "ansi-styles": "^3.2.1", 88 | "escape-string-regexp": "^1.0.5", 89 | "supports-color": "^5.3.0" 90 | }, 91 | "engines": { 92 | "node": ">=4" 93 | } 94 | }, 95 | "node_modules/@babel/highlight/node_modules/color-convert": { 96 | "version": "1.9.3", 97 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 98 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 99 | "dev": true, 100 | "dependencies": { 101 | "color-name": "1.1.3" 102 | } 103 | }, 104 | "node_modules/@babel/highlight/node_modules/color-name": { 105 | "version": "1.1.3", 106 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 107 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 108 | "dev": true 109 | }, 110 | "node_modules/@babel/highlight/node_modules/escape-string-regexp": { 111 | "version": "1.0.5", 112 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 113 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 114 | "dev": true, 115 | "engines": { 116 | "node": ">=0.8.0" 117 | } 118 | }, 119 | "node_modules/@babel/highlight/node_modules/has-flag": { 120 | "version": "3.0.0", 121 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 122 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 123 | "dev": true, 124 | "engines": { 125 | "node": ">=4" 126 | } 127 | }, 128 | "node_modules/@babel/highlight/node_modules/supports-color": { 129 | "version": "5.5.0", 130 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 131 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 132 | "dev": true, 133 | "dependencies": { 134 | "has-flag": "^3.0.0" 135 | }, 136 | "engines": { 137 | "node": ">=4" 138 | } 139 | }, 140 | "node_modules/@colors/colors": { 141 | "version": "1.5.0", 142 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 143 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 144 | "dev": true, 145 | "engines": { 146 | "node": ">=0.1.90" 147 | } 148 | }, 149 | "node_modules/@eslint/eslintrc": { 150 | "version": "2.0.0", 151 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", 152 | "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", 153 | "dev": true, 154 | "dependencies": { 155 | "ajv": "^6.12.4", 156 | "debug": "^4.3.2", 157 | "espree": "^9.4.0", 158 | "globals": "^13.19.0", 159 | "ignore": "^5.2.0", 160 | "import-fresh": "^3.2.1", 161 | "js-yaml": "^4.1.0", 162 | "minimatch": "^3.1.2", 163 | "strip-json-comments": "^3.1.1" 164 | }, 165 | "engines": { 166 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 167 | }, 168 | "funding": { 169 | "url": "https://opencollective.com/eslint" 170 | } 171 | }, 172 | "node_modules/@eslint/js": { 173 | "version": "8.35.0", 174 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", 175 | "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", 176 | "dev": true, 177 | "engines": { 178 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 179 | } 180 | }, 181 | "node_modules/@humanwhocodes/config-array": { 182 | "version": "0.11.8", 183 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", 184 | "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", 185 | "dev": true, 186 | "dependencies": { 187 | "@humanwhocodes/object-schema": "^1.2.1", 188 | "debug": "^4.1.1", 189 | "minimatch": "^3.0.5" 190 | }, 191 | "engines": { 192 | "node": ">=10.10.0" 193 | } 194 | }, 195 | "node_modules/@humanwhocodes/module-importer": { 196 | "version": "1.0.1", 197 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 198 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 199 | "dev": true, 200 | "engines": { 201 | "node": ">=12.22" 202 | }, 203 | "funding": { 204 | "type": "github", 205 | "url": "https://github.com/sponsors/nzakas" 206 | } 207 | }, 208 | "node_modules/@humanwhocodes/object-schema": { 209 | "version": "1.2.1", 210 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 211 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 212 | "dev": true 213 | }, 214 | "node_modules/@jridgewell/gen-mapping": { 215 | "version": "0.3.2", 216 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 217 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 218 | "dev": true, 219 | "dependencies": { 220 | "@jridgewell/set-array": "^1.0.1", 221 | "@jridgewell/sourcemap-codec": "^1.4.10", 222 | "@jridgewell/trace-mapping": "^0.3.9" 223 | }, 224 | "engines": { 225 | "node": ">=6.0.0" 226 | } 227 | }, 228 | "node_modules/@jridgewell/resolve-uri": { 229 | "version": "3.1.0", 230 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 231 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 232 | "dev": true, 233 | "engines": { 234 | "node": ">=6.0.0" 235 | } 236 | }, 237 | "node_modules/@jridgewell/set-array": { 238 | "version": "1.1.2", 239 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 240 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 241 | "dev": true, 242 | "engines": { 243 | "node": ">=6.0.0" 244 | } 245 | }, 246 | "node_modules/@jridgewell/source-map": { 247 | "version": "0.3.2", 248 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 249 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 250 | "dev": true, 251 | "dependencies": { 252 | "@jridgewell/gen-mapping": "^0.3.0", 253 | "@jridgewell/trace-mapping": "^0.3.9" 254 | } 255 | }, 256 | "node_modules/@jridgewell/sourcemap-codec": { 257 | "version": "1.4.14", 258 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 259 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 260 | "dev": true 261 | }, 262 | "node_modules/@jridgewell/trace-mapping": { 263 | "version": "0.3.17", 264 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 265 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 266 | "dev": true, 267 | "dependencies": { 268 | "@jridgewell/resolve-uri": "3.1.0", 269 | "@jridgewell/sourcemap-codec": "1.4.14" 270 | } 271 | }, 272 | "node_modules/@nodelib/fs.scandir": { 273 | "version": "2.1.5", 274 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 275 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 276 | "dev": true, 277 | "dependencies": { 278 | "@nodelib/fs.stat": "2.0.5", 279 | "run-parallel": "^1.1.9" 280 | }, 281 | "engines": { 282 | "node": ">= 8" 283 | } 284 | }, 285 | "node_modules/@nodelib/fs.stat": { 286 | "version": "2.0.5", 287 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 288 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 289 | "dev": true, 290 | "engines": { 291 | "node": ">= 8" 292 | } 293 | }, 294 | "node_modules/@nodelib/fs.walk": { 295 | "version": "1.2.8", 296 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 297 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 298 | "dev": true, 299 | "dependencies": { 300 | "@nodelib/fs.scandir": "2.1.5", 301 | "fastq": "^1.6.0" 302 | }, 303 | "engines": { 304 | "node": ">= 8" 305 | } 306 | }, 307 | "node_modules/@rollup/plugin-commonjs": { 308 | "version": "24.0.1", 309 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz", 310 | "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==", 311 | "dev": true, 312 | "dependencies": { 313 | "@rollup/pluginutils": "^5.0.1", 314 | "commondir": "^1.0.1", 315 | "estree-walker": "^2.0.2", 316 | "glob": "^8.0.3", 317 | "is-reference": "1.2.1", 318 | "magic-string": "^0.27.0" 319 | }, 320 | "engines": { 321 | "node": ">=14.0.0" 322 | }, 323 | "peerDependencies": { 324 | "rollup": "^2.68.0||^3.0.0" 325 | }, 326 | "peerDependenciesMeta": { 327 | "rollup": { 328 | "optional": true 329 | } 330 | } 331 | }, 332 | "node_modules/@rollup/plugin-node-resolve": { 333 | "version": "15.0.1", 334 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", 335 | "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", 336 | "dev": true, 337 | "dependencies": { 338 | "@rollup/pluginutils": "^5.0.1", 339 | "@types/resolve": "1.20.2", 340 | "deepmerge": "^4.2.2", 341 | "is-builtin-module": "^3.2.0", 342 | "is-module": "^1.0.0", 343 | "resolve": "^1.22.1" 344 | }, 345 | "engines": { 346 | "node": ">=14.0.0" 347 | }, 348 | "peerDependencies": { 349 | "rollup": "^2.78.0||^3.0.0" 350 | }, 351 | "peerDependenciesMeta": { 352 | "rollup": { 353 | "optional": true 354 | } 355 | } 356 | }, 357 | "node_modules/@rollup/plugin-terser": { 358 | "version": "0.4.0", 359 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.0.tgz", 360 | "integrity": "sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw==", 361 | "dev": true, 362 | "dependencies": { 363 | "serialize-javascript": "^6.0.0", 364 | "smob": "^0.0.6", 365 | "terser": "^5.15.1" 366 | }, 367 | "engines": { 368 | "node": ">=14.0.0" 369 | }, 370 | "peerDependencies": { 371 | "rollup": "^2.x || ^3.x" 372 | }, 373 | "peerDependenciesMeta": { 374 | "rollup": { 375 | "optional": true 376 | } 377 | } 378 | }, 379 | "node_modules/@rollup/pluginutils": { 380 | "version": "5.0.2", 381 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 382 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 383 | "dev": true, 384 | "dependencies": { 385 | "@types/estree": "^1.0.0", 386 | "estree-walker": "^2.0.2", 387 | "picomatch": "^2.3.1" 388 | }, 389 | "engines": { 390 | "node": ">=14.0.0" 391 | }, 392 | "peerDependencies": { 393 | "rollup": "^1.20.0||^2.0.0||^3.0.0" 394 | }, 395 | "peerDependenciesMeta": { 396 | "rollup": { 397 | "optional": true 398 | } 399 | } 400 | }, 401 | "node_modules/@sinonjs/commons": { 402 | "version": "2.0.0", 403 | "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", 404 | "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", 405 | "dev": true, 406 | "dependencies": { 407 | "type-detect": "4.0.8" 408 | } 409 | }, 410 | "node_modules/@sinonjs/fake-timers": { 411 | "version": "10.0.2", 412 | "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", 413 | "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", 414 | "dev": true, 415 | "dependencies": { 416 | "@sinonjs/commons": "^2.0.0" 417 | } 418 | }, 419 | "node_modules/@sinonjs/samsam": { 420 | "version": "7.0.1", 421 | "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz", 422 | "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", 423 | "dev": true, 424 | "dependencies": { 425 | "@sinonjs/commons": "^2.0.0", 426 | "lodash.get": "^4.4.2", 427 | "type-detect": "^4.0.8" 428 | } 429 | }, 430 | "node_modules/@sinonjs/text-encoding": { 431 | "version": "0.7.2", 432 | "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", 433 | "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", 434 | "dev": true 435 | }, 436 | "node_modules/@socket.io/component-emitter": { 437 | "version": "3.1.0", 438 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", 439 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", 440 | "dev": true 441 | }, 442 | "node_modules/@types/cookie": { 443 | "version": "0.4.1", 444 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 445 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", 446 | "dev": true 447 | }, 448 | "node_modules/@types/cors": { 449 | "version": "2.8.13", 450 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", 451 | "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", 452 | "dev": true, 453 | "dependencies": { 454 | "@types/node": "*" 455 | } 456 | }, 457 | "node_modules/@types/estree": { 458 | "version": "1.0.0", 459 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", 460 | "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", 461 | "dev": true 462 | }, 463 | "node_modules/@types/node": { 464 | "version": "18.14.6", 465 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 466 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", 467 | "dev": true 468 | }, 469 | "node_modules/@types/normalize-package-data": { 470 | "version": "2.4.1", 471 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 472 | "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 473 | "dev": true 474 | }, 475 | "node_modules/@types/resolve": { 476 | "version": "1.20.2", 477 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 478 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 479 | "dev": true 480 | }, 481 | "node_modules/accepts": { 482 | "version": "1.3.8", 483 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 484 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 485 | "dev": true, 486 | "dependencies": { 487 | "mime-types": "~2.1.34", 488 | "negotiator": "0.6.3" 489 | }, 490 | "engines": { 491 | "node": ">= 0.6" 492 | } 493 | }, 494 | "node_modules/acorn": { 495 | "version": "8.8.2", 496 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 497 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 498 | "dev": true, 499 | "bin": { 500 | "acorn": "bin/acorn" 501 | }, 502 | "engines": { 503 | "node": ">=0.4.0" 504 | } 505 | }, 506 | "node_modules/acorn-jsx": { 507 | "version": "5.3.2", 508 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 509 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 510 | "dev": true, 511 | "peerDependencies": { 512 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 513 | } 514 | }, 515 | "node_modules/ajv": { 516 | "version": "6.12.6", 517 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 518 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 519 | "dev": true, 520 | "dependencies": { 521 | "fast-deep-equal": "^3.1.1", 522 | "fast-json-stable-stringify": "^2.0.0", 523 | "json-schema-traverse": "^0.4.1", 524 | "uri-js": "^4.2.2" 525 | }, 526 | "funding": { 527 | "type": "github", 528 | "url": "https://github.com/sponsors/epoberezkin" 529 | } 530 | }, 531 | "node_modules/ansi-colors": { 532 | "version": "4.1.1", 533 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 534 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 535 | "dev": true, 536 | "engines": { 537 | "node": ">=6" 538 | } 539 | }, 540 | "node_modules/ansi-regex": { 541 | "version": "5.0.1", 542 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 543 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 544 | "dev": true, 545 | "engines": { 546 | "node": ">=8" 547 | } 548 | }, 549 | "node_modules/ansi-styles": { 550 | "version": "4.3.0", 551 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 552 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 553 | "dev": true, 554 | "dependencies": { 555 | "color-convert": "^2.0.1" 556 | }, 557 | "engines": { 558 | "node": ">=8" 559 | }, 560 | "funding": { 561 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 562 | } 563 | }, 564 | "node_modules/anymatch": { 565 | "version": "3.1.3", 566 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 567 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 568 | "dev": true, 569 | "dependencies": { 570 | "normalize-path": "^3.0.0", 571 | "picomatch": "^2.0.4" 572 | }, 573 | "engines": { 574 | "node": ">= 8" 575 | } 576 | }, 577 | "node_modules/argparse": { 578 | "version": "2.0.1", 579 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 580 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 581 | "dev": true 582 | }, 583 | "node_modules/assertion-error": { 584 | "version": "1.1.0", 585 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 586 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 587 | "dev": true, 588 | "engines": { 589 | "node": "*" 590 | } 591 | }, 592 | "node_modules/balanced-match": { 593 | "version": "1.0.2", 594 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 595 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 596 | "dev": true 597 | }, 598 | "node_modules/base64id": { 599 | "version": "2.0.0", 600 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 601 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 602 | "dev": true, 603 | "engines": { 604 | "node": "^4.5.0 || >= 5.9" 605 | } 606 | }, 607 | "node_modules/binary-extensions": { 608 | "version": "2.2.0", 609 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 610 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 611 | "dev": true, 612 | "engines": { 613 | "node": ">=8" 614 | } 615 | }, 616 | "node_modules/body-parser": { 617 | "version": "1.20.2", 618 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", 619 | "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", 620 | "dev": true, 621 | "dependencies": { 622 | "bytes": "3.1.2", 623 | "content-type": "~1.0.5", 624 | "debug": "2.6.9", 625 | "depd": "2.0.0", 626 | "destroy": "1.2.0", 627 | "http-errors": "2.0.0", 628 | "iconv-lite": "0.4.24", 629 | "on-finished": "2.4.1", 630 | "qs": "6.11.0", 631 | "raw-body": "2.5.2", 632 | "type-is": "~1.6.18", 633 | "unpipe": "1.0.0" 634 | }, 635 | "engines": { 636 | "node": ">= 0.8", 637 | "npm": "1.2.8000 || >= 1.4.16" 638 | } 639 | }, 640 | "node_modules/body-parser/node_modules/debug": { 641 | "version": "2.6.9", 642 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 643 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 644 | "dev": true, 645 | "dependencies": { 646 | "ms": "2.0.0" 647 | } 648 | }, 649 | "node_modules/body-parser/node_modules/ms": { 650 | "version": "2.0.0", 651 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 652 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 653 | "dev": true 654 | }, 655 | "node_modules/brace-expansion": { 656 | "version": "1.1.11", 657 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 658 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 659 | "dev": true, 660 | "dependencies": { 661 | "balanced-match": "^1.0.0", 662 | "concat-map": "0.0.1" 663 | } 664 | }, 665 | "node_modules/braces": { 666 | "version": "3.0.2", 667 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 668 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 669 | "dev": true, 670 | "dependencies": { 671 | "fill-range": "^7.0.1" 672 | }, 673 | "engines": { 674 | "node": ">=8" 675 | } 676 | }, 677 | "node_modules/browser-stdout": { 678 | "version": "1.3.1", 679 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 680 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 681 | "dev": true 682 | }, 683 | "node_modules/buffer-from": { 684 | "version": "1.1.2", 685 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 686 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 687 | "dev": true 688 | }, 689 | "node_modules/builtin-modules": { 690 | "version": "3.3.0", 691 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 692 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 693 | "dev": true, 694 | "engines": { 695 | "node": ">=6" 696 | }, 697 | "funding": { 698 | "url": "https://github.com/sponsors/sindresorhus" 699 | } 700 | }, 701 | "node_modules/bytes": { 702 | "version": "3.1.2", 703 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 704 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 705 | "dev": true, 706 | "engines": { 707 | "node": ">= 0.8" 708 | } 709 | }, 710 | "node_modules/call-bind": { 711 | "version": "1.0.2", 712 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 713 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 714 | "dev": true, 715 | "dependencies": { 716 | "function-bind": "^1.1.1", 717 | "get-intrinsic": "^1.0.2" 718 | }, 719 | "funding": { 720 | "url": "https://github.com/sponsors/ljharb" 721 | } 722 | }, 723 | "node_modules/callsites": { 724 | "version": "3.1.0", 725 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 726 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 727 | "dev": true, 728 | "engines": { 729 | "node": ">=6" 730 | } 731 | }, 732 | "node_modules/camelcase": { 733 | "version": "6.3.0", 734 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 735 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 736 | "dev": true, 737 | "engines": { 738 | "node": ">=10" 739 | }, 740 | "funding": { 741 | "url": "https://github.com/sponsors/sindresorhus" 742 | } 743 | }, 744 | "node_modules/chai": { 745 | "version": "4.3.7", 746 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", 747 | "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", 748 | "dev": true, 749 | "dependencies": { 750 | "assertion-error": "^1.1.0", 751 | "check-error": "^1.0.2", 752 | "deep-eql": "^4.1.2", 753 | "get-func-name": "^2.0.0", 754 | "loupe": "^2.3.1", 755 | "pathval": "^1.1.1", 756 | "type-detect": "^4.0.5" 757 | }, 758 | "engines": { 759 | "node": ">=4" 760 | } 761 | }, 762 | "node_modules/chalk": { 763 | "version": "4.1.2", 764 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 765 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 766 | "dev": true, 767 | "dependencies": { 768 | "ansi-styles": "^4.1.0", 769 | "supports-color": "^7.1.0" 770 | }, 771 | "engines": { 772 | "node": ">=10" 773 | }, 774 | "funding": { 775 | "url": "https://github.com/chalk/chalk?sponsor=1" 776 | } 777 | }, 778 | "node_modules/check-error": { 779 | "version": "1.0.2", 780 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 781 | "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", 782 | "dev": true, 783 | "engines": { 784 | "node": "*" 785 | } 786 | }, 787 | "node_modules/chokidar": { 788 | "version": "3.5.3", 789 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 790 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 791 | "dev": true, 792 | "funding": [ 793 | { 794 | "type": "individual", 795 | "url": "https://paulmillr.com/funding/" 796 | } 797 | ], 798 | "dependencies": { 799 | "anymatch": "~3.1.2", 800 | "braces": "~3.0.2", 801 | "glob-parent": "~5.1.2", 802 | "is-binary-path": "~2.1.0", 803 | "is-glob": "~4.0.1", 804 | "normalize-path": "~3.0.0", 805 | "readdirp": "~3.6.0" 806 | }, 807 | "engines": { 808 | "node": ">= 8.10.0" 809 | }, 810 | "optionalDependencies": { 811 | "fsevents": "~2.3.2" 812 | } 813 | }, 814 | "node_modules/chokidar/node_modules/glob-parent": { 815 | "version": "5.1.2", 816 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 817 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 818 | "dev": true, 819 | "dependencies": { 820 | "is-glob": "^4.0.1" 821 | }, 822 | "engines": { 823 | "node": ">= 6" 824 | } 825 | }, 826 | "node_modules/cliui": { 827 | "version": "7.0.4", 828 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 829 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 830 | "dev": true, 831 | "dependencies": { 832 | "string-width": "^4.2.0", 833 | "strip-ansi": "^6.0.0", 834 | "wrap-ansi": "^7.0.0" 835 | } 836 | }, 837 | "node_modules/color-convert": { 838 | "version": "2.0.1", 839 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 840 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 841 | "dev": true, 842 | "dependencies": { 843 | "color-name": "~1.1.4" 844 | }, 845 | "engines": { 846 | "node": ">=7.0.0" 847 | } 848 | }, 849 | "node_modules/color-name": { 850 | "version": "1.1.4", 851 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 852 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 853 | "dev": true 854 | }, 855 | "node_modules/commander": { 856 | "version": "2.20.3", 857 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 858 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 859 | "dev": true 860 | }, 861 | "node_modules/commondir": { 862 | "version": "1.0.1", 863 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 864 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 865 | "dev": true 866 | }, 867 | "node_modules/concat-map": { 868 | "version": "0.0.1", 869 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 870 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 871 | "dev": true 872 | }, 873 | "node_modules/connect": { 874 | "version": "3.7.0", 875 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 876 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 877 | "dev": true, 878 | "dependencies": { 879 | "debug": "2.6.9", 880 | "finalhandler": "1.1.2", 881 | "parseurl": "~1.3.3", 882 | "utils-merge": "1.0.1" 883 | }, 884 | "engines": { 885 | "node": ">= 0.10.0" 886 | } 887 | }, 888 | "node_modules/connect/node_modules/debug": { 889 | "version": "2.6.9", 890 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 891 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 892 | "dev": true, 893 | "dependencies": { 894 | "ms": "2.0.0" 895 | } 896 | }, 897 | "node_modules/connect/node_modules/ms": { 898 | "version": "2.0.0", 899 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 900 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 901 | "dev": true 902 | }, 903 | "node_modules/content-type": { 904 | "version": "1.0.5", 905 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 906 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 907 | "dev": true, 908 | "engines": { 909 | "node": ">= 0.6" 910 | } 911 | }, 912 | "node_modules/cookie": { 913 | "version": "0.4.2", 914 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 915 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 916 | "dev": true, 917 | "engines": { 918 | "node": ">= 0.6" 919 | } 920 | }, 921 | "node_modules/cors": { 922 | "version": "2.8.5", 923 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 924 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 925 | "dev": true, 926 | "dependencies": { 927 | "object-assign": "^4", 928 | "vary": "^1" 929 | }, 930 | "engines": { 931 | "node": ">= 0.10" 932 | } 933 | }, 934 | "node_modules/cross-spawn": { 935 | "version": "7.0.3", 936 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 937 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 938 | "dev": true, 939 | "dependencies": { 940 | "path-key": "^3.1.0", 941 | "shebang-command": "^2.0.0", 942 | "which": "^2.0.1" 943 | }, 944 | "engines": { 945 | "node": ">= 8" 946 | } 947 | }, 948 | "node_modules/custom-event": { 949 | "version": "1.0.1", 950 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 951 | "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", 952 | "dev": true 953 | }, 954 | "node_modules/date-format": { 955 | "version": "4.0.14", 956 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", 957 | "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", 958 | "dev": true, 959 | "engines": { 960 | "node": ">=4.0" 961 | } 962 | }, 963 | "node_modules/debounce": { 964 | "version": "1.2.1", 965 | "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", 966 | "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", 967 | "dev": true 968 | }, 969 | "node_modules/debug": { 970 | "version": "4.3.4", 971 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 972 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 973 | "dev": true, 974 | "dependencies": { 975 | "ms": "2.1.2" 976 | }, 977 | "engines": { 978 | "node": ">=6.0" 979 | }, 980 | "peerDependenciesMeta": { 981 | "supports-color": { 982 | "optional": true 983 | } 984 | } 985 | }, 986 | "node_modules/decamelize": { 987 | "version": "4.0.0", 988 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 989 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 990 | "dev": true, 991 | "engines": { 992 | "node": ">=10" 993 | }, 994 | "funding": { 995 | "url": "https://github.com/sponsors/sindresorhus" 996 | } 997 | }, 998 | "node_modules/deep-eql": { 999 | "version": "4.1.3", 1000 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", 1001 | "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", 1002 | "dev": true, 1003 | "dependencies": { 1004 | "type-detect": "^4.0.0" 1005 | }, 1006 | "engines": { 1007 | "node": ">=6" 1008 | } 1009 | }, 1010 | "node_modules/deep-is": { 1011 | "version": "0.1.4", 1012 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1013 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1014 | "dev": true 1015 | }, 1016 | "node_modules/deepmerge": { 1017 | "version": "4.3.0", 1018 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", 1019 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", 1020 | "dev": true, 1021 | "engines": { 1022 | "node": ">=0.10.0" 1023 | } 1024 | }, 1025 | "node_modules/depd": { 1026 | "version": "2.0.0", 1027 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1028 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 1029 | "dev": true, 1030 | "engines": { 1031 | "node": ">= 0.8" 1032 | } 1033 | }, 1034 | "node_modules/destroy": { 1035 | "version": "1.2.0", 1036 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1037 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 1038 | "dev": true, 1039 | "engines": { 1040 | "node": ">= 0.8", 1041 | "npm": "1.2.8000 || >= 1.4.16" 1042 | } 1043 | }, 1044 | "node_modules/detect-indent": { 1045 | "version": "5.0.0", 1046 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", 1047 | "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", 1048 | "dev": true, 1049 | "engines": { 1050 | "node": ">=4" 1051 | } 1052 | }, 1053 | "node_modules/di": { 1054 | "version": "0.0.1", 1055 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 1056 | "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", 1057 | "dev": true 1058 | }, 1059 | "node_modules/diff": { 1060 | "version": "5.0.0", 1061 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 1062 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 1063 | "dev": true, 1064 | "engines": { 1065 | "node": ">=0.3.1" 1066 | } 1067 | }, 1068 | "node_modules/doctrine": { 1069 | "version": "3.0.0", 1070 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1071 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1072 | "dev": true, 1073 | "dependencies": { 1074 | "esutils": "^2.0.2" 1075 | }, 1076 | "engines": { 1077 | "node": ">=6.0.0" 1078 | } 1079 | }, 1080 | "node_modules/dom-serialize": { 1081 | "version": "2.2.1", 1082 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 1083 | "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", 1084 | "dev": true, 1085 | "dependencies": { 1086 | "custom-event": "~1.0.0", 1087 | "ent": "~2.2.0", 1088 | "extend": "^3.0.0", 1089 | "void-elements": "^2.0.0" 1090 | } 1091 | }, 1092 | "node_modules/ee-first": { 1093 | "version": "1.1.1", 1094 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1095 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 1096 | "dev": true 1097 | }, 1098 | "node_modules/emoji-regex": { 1099 | "version": "8.0.0", 1100 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1101 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1102 | "dev": true 1103 | }, 1104 | "node_modules/encodeurl": { 1105 | "version": "1.0.2", 1106 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1107 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 1108 | "dev": true, 1109 | "engines": { 1110 | "node": ">= 0.8" 1111 | } 1112 | }, 1113 | "node_modules/engine.io": { 1114 | "version": "6.4.2", 1115 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", 1116 | "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", 1117 | "dev": true, 1118 | "dependencies": { 1119 | "@types/cookie": "^0.4.1", 1120 | "@types/cors": "^2.8.12", 1121 | "@types/node": ">=10.0.0", 1122 | "accepts": "~1.3.4", 1123 | "base64id": "2.0.0", 1124 | "cookie": "~0.4.1", 1125 | "cors": "~2.8.5", 1126 | "debug": "~4.3.1", 1127 | "engine.io-parser": "~5.0.3", 1128 | "ws": "~8.11.0" 1129 | }, 1130 | "engines": { 1131 | "node": ">=10.0.0" 1132 | } 1133 | }, 1134 | "node_modules/engine.io-parser": { 1135 | "version": "5.0.6", 1136 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", 1137 | "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", 1138 | "dev": true, 1139 | "engines": { 1140 | "node": ">=10.0.0" 1141 | } 1142 | }, 1143 | "node_modules/ent": { 1144 | "version": "2.2.0", 1145 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 1146 | "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", 1147 | "dev": true 1148 | }, 1149 | "node_modules/error-ex": { 1150 | "version": "1.3.2", 1151 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1152 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1153 | "dev": true, 1154 | "dependencies": { 1155 | "is-arrayish": "^0.2.1" 1156 | } 1157 | }, 1158 | "node_modules/escalade": { 1159 | "version": "3.1.1", 1160 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1161 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1162 | "dev": true, 1163 | "engines": { 1164 | "node": ">=6" 1165 | } 1166 | }, 1167 | "node_modules/escape-html": { 1168 | "version": "1.0.3", 1169 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1170 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 1171 | "dev": true 1172 | }, 1173 | "node_modules/escape-string-regexp": { 1174 | "version": "4.0.0", 1175 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1176 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1177 | "dev": true, 1178 | "engines": { 1179 | "node": ">=10" 1180 | }, 1181 | "funding": { 1182 | "url": "https://github.com/sponsors/sindresorhus" 1183 | } 1184 | }, 1185 | "node_modules/eslint": { 1186 | "version": "8.35.0", 1187 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", 1188 | "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", 1189 | "dev": true, 1190 | "dependencies": { 1191 | "@eslint/eslintrc": "^2.0.0", 1192 | "@eslint/js": "8.35.0", 1193 | "@humanwhocodes/config-array": "^0.11.8", 1194 | "@humanwhocodes/module-importer": "^1.0.1", 1195 | "@nodelib/fs.walk": "^1.2.8", 1196 | "ajv": "^6.10.0", 1197 | "chalk": "^4.0.0", 1198 | "cross-spawn": "^7.0.2", 1199 | "debug": "^4.3.2", 1200 | "doctrine": "^3.0.0", 1201 | "escape-string-regexp": "^4.0.0", 1202 | "eslint-scope": "^7.1.1", 1203 | "eslint-utils": "^3.0.0", 1204 | "eslint-visitor-keys": "^3.3.0", 1205 | "espree": "^9.4.0", 1206 | "esquery": "^1.4.2", 1207 | "esutils": "^2.0.2", 1208 | "fast-deep-equal": "^3.1.3", 1209 | "file-entry-cache": "^6.0.1", 1210 | "find-up": "^5.0.0", 1211 | "glob-parent": "^6.0.2", 1212 | "globals": "^13.19.0", 1213 | "grapheme-splitter": "^1.0.4", 1214 | "ignore": "^5.2.0", 1215 | "import-fresh": "^3.0.0", 1216 | "imurmurhash": "^0.1.4", 1217 | "is-glob": "^4.0.0", 1218 | "is-path-inside": "^3.0.3", 1219 | "js-sdsl": "^4.1.4", 1220 | "js-yaml": "^4.1.0", 1221 | "json-stable-stringify-without-jsonify": "^1.0.1", 1222 | "levn": "^0.4.1", 1223 | "lodash.merge": "^4.6.2", 1224 | "minimatch": "^3.1.2", 1225 | "natural-compare": "^1.4.0", 1226 | "optionator": "^0.9.1", 1227 | "regexpp": "^3.2.0", 1228 | "strip-ansi": "^6.0.1", 1229 | "strip-json-comments": "^3.1.0", 1230 | "text-table": "^0.2.0" 1231 | }, 1232 | "bin": { 1233 | "eslint": "bin/eslint.js" 1234 | }, 1235 | "engines": { 1236 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1237 | }, 1238 | "funding": { 1239 | "url": "https://opencollective.com/eslint" 1240 | } 1241 | }, 1242 | "node_modules/eslint-scope": { 1243 | "version": "7.1.1", 1244 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1245 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1246 | "dev": true, 1247 | "dependencies": { 1248 | "esrecurse": "^4.3.0", 1249 | "estraverse": "^5.2.0" 1250 | }, 1251 | "engines": { 1252 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1253 | } 1254 | }, 1255 | "node_modules/eslint-utils": { 1256 | "version": "3.0.0", 1257 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1258 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1259 | "dev": true, 1260 | "dependencies": { 1261 | "eslint-visitor-keys": "^2.0.0" 1262 | }, 1263 | "engines": { 1264 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" 1265 | }, 1266 | "funding": { 1267 | "url": "https://github.com/sponsors/mysticatea" 1268 | }, 1269 | "peerDependencies": { 1270 | "eslint": ">=5" 1271 | } 1272 | }, 1273 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 1274 | "version": "2.1.0", 1275 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1276 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1277 | "dev": true, 1278 | "engines": { 1279 | "node": ">=10" 1280 | } 1281 | }, 1282 | "node_modules/eslint-visitor-keys": { 1283 | "version": "3.3.0", 1284 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1285 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 1286 | "dev": true, 1287 | "engines": { 1288 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1289 | } 1290 | }, 1291 | "node_modules/espree": { 1292 | "version": "9.4.1", 1293 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", 1294 | "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", 1295 | "dev": true, 1296 | "dependencies": { 1297 | "acorn": "^8.8.0", 1298 | "acorn-jsx": "^5.3.2", 1299 | "eslint-visitor-keys": "^3.3.0" 1300 | }, 1301 | "engines": { 1302 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1303 | }, 1304 | "funding": { 1305 | "url": "https://opencollective.com/eslint" 1306 | } 1307 | }, 1308 | "node_modules/esquery": { 1309 | "version": "1.5.0", 1310 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 1311 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 1312 | "dev": true, 1313 | "dependencies": { 1314 | "estraverse": "^5.1.0" 1315 | }, 1316 | "engines": { 1317 | "node": ">=0.10" 1318 | } 1319 | }, 1320 | "node_modules/esrecurse": { 1321 | "version": "4.3.0", 1322 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1323 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1324 | "dev": true, 1325 | "dependencies": { 1326 | "estraverse": "^5.2.0" 1327 | }, 1328 | "engines": { 1329 | "node": ">=4.0" 1330 | } 1331 | }, 1332 | "node_modules/estraverse": { 1333 | "version": "5.3.0", 1334 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1335 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1336 | "dev": true, 1337 | "engines": { 1338 | "node": ">=4.0" 1339 | } 1340 | }, 1341 | "node_modules/estree-walker": { 1342 | "version": "2.0.2", 1343 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1344 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1345 | "dev": true 1346 | }, 1347 | "node_modules/esutils": { 1348 | "version": "2.0.3", 1349 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1350 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1351 | "dev": true, 1352 | "engines": { 1353 | "node": ">=0.10.0" 1354 | } 1355 | }, 1356 | "node_modules/eventemitter3": { 1357 | "version": "4.0.7", 1358 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 1359 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 1360 | "dev": true 1361 | }, 1362 | "node_modules/extend": { 1363 | "version": "3.0.2", 1364 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1365 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1366 | "dev": true 1367 | }, 1368 | "node_modules/fast-deep-equal": { 1369 | "version": "3.1.3", 1370 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1371 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1372 | "dev": true 1373 | }, 1374 | "node_modules/fast-json-stable-stringify": { 1375 | "version": "2.1.0", 1376 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1377 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1378 | "dev": true 1379 | }, 1380 | "node_modules/fast-levenshtein": { 1381 | "version": "2.0.6", 1382 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1383 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1384 | "dev": true 1385 | }, 1386 | "node_modules/fastq": { 1387 | "version": "1.15.0", 1388 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 1389 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 1390 | "dev": true, 1391 | "dependencies": { 1392 | "reusify": "^1.0.4" 1393 | } 1394 | }, 1395 | "node_modules/file-entry-cache": { 1396 | "version": "6.0.1", 1397 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1398 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1399 | "dev": true, 1400 | "dependencies": { 1401 | "flat-cache": "^3.0.4" 1402 | }, 1403 | "engines": { 1404 | "node": "^10.12.0 || >=12.0.0" 1405 | } 1406 | }, 1407 | "node_modules/fill-range": { 1408 | "version": "7.0.1", 1409 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1410 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1411 | "dev": true, 1412 | "dependencies": { 1413 | "to-regex-range": "^5.0.1" 1414 | }, 1415 | "engines": { 1416 | "node": ">=8" 1417 | } 1418 | }, 1419 | "node_modules/finalhandler": { 1420 | "version": "1.1.2", 1421 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1422 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1423 | "dev": true, 1424 | "dependencies": { 1425 | "debug": "2.6.9", 1426 | "encodeurl": "~1.0.2", 1427 | "escape-html": "~1.0.3", 1428 | "on-finished": "~2.3.0", 1429 | "parseurl": "~1.3.3", 1430 | "statuses": "~1.5.0", 1431 | "unpipe": "~1.0.0" 1432 | }, 1433 | "engines": { 1434 | "node": ">= 0.8" 1435 | } 1436 | }, 1437 | "node_modules/finalhandler/node_modules/debug": { 1438 | "version": "2.6.9", 1439 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1440 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1441 | "dev": true, 1442 | "dependencies": { 1443 | "ms": "2.0.0" 1444 | } 1445 | }, 1446 | "node_modules/finalhandler/node_modules/ms": { 1447 | "version": "2.0.0", 1448 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1449 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1450 | "dev": true 1451 | }, 1452 | "node_modules/finalhandler/node_modules/on-finished": { 1453 | "version": "2.3.0", 1454 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1455 | "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 1456 | "dev": true, 1457 | "dependencies": { 1458 | "ee-first": "1.1.1" 1459 | }, 1460 | "engines": { 1461 | "node": ">= 0.8" 1462 | } 1463 | }, 1464 | "node_modules/find-up": { 1465 | "version": "5.0.0", 1466 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1467 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1468 | "dev": true, 1469 | "dependencies": { 1470 | "locate-path": "^6.0.0", 1471 | "path-exists": "^4.0.0" 1472 | }, 1473 | "engines": { 1474 | "node": ">=10" 1475 | }, 1476 | "funding": { 1477 | "url": "https://github.com/sponsors/sindresorhus" 1478 | } 1479 | }, 1480 | "node_modules/flat": { 1481 | "version": "5.0.2", 1482 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1483 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1484 | "dev": true, 1485 | "bin": { 1486 | "flat": "cli.js" 1487 | } 1488 | }, 1489 | "node_modules/flat-cache": { 1490 | "version": "3.0.4", 1491 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1492 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1493 | "dev": true, 1494 | "dependencies": { 1495 | "flatted": "^3.1.0", 1496 | "rimraf": "^3.0.2" 1497 | }, 1498 | "engines": { 1499 | "node": "^10.12.0 || >=12.0.0" 1500 | } 1501 | }, 1502 | "node_modules/flatted": { 1503 | "version": "3.2.7", 1504 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 1505 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 1506 | "dev": true 1507 | }, 1508 | "node_modules/follow-redirects": { 1509 | "version": "1.15.2", 1510 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1511 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 1512 | "dev": true, 1513 | "funding": [ 1514 | { 1515 | "type": "individual", 1516 | "url": "https://github.com/sponsors/RubenVerborgh" 1517 | } 1518 | ], 1519 | "engines": { 1520 | "node": ">=4.0" 1521 | }, 1522 | "peerDependenciesMeta": { 1523 | "debug": { 1524 | "optional": true 1525 | } 1526 | } 1527 | }, 1528 | "node_modules/fs-extra": { 1529 | "version": "8.1.0", 1530 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1531 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1532 | "dev": true, 1533 | "dependencies": { 1534 | "graceful-fs": "^4.2.0", 1535 | "jsonfile": "^4.0.0", 1536 | "universalify": "^0.1.0" 1537 | }, 1538 | "engines": { 1539 | "node": ">=6 <7 || >=8" 1540 | } 1541 | }, 1542 | "node_modules/fs.realpath": { 1543 | "version": "1.0.0", 1544 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1545 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1546 | "dev": true 1547 | }, 1548 | "node_modules/fsevents": { 1549 | "version": "2.3.2", 1550 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1551 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1552 | "dev": true, 1553 | "hasInstallScript": true, 1554 | "optional": true, 1555 | "os": [ 1556 | "darwin" 1557 | ], 1558 | "engines": { 1559 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1560 | } 1561 | }, 1562 | "node_modules/function-bind": { 1563 | "version": "1.1.1", 1564 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1565 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1566 | "dev": true 1567 | }, 1568 | "node_modules/get-caller-file": { 1569 | "version": "2.0.5", 1570 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1571 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1572 | "dev": true, 1573 | "engines": { 1574 | "node": "6.* || 8.* || >= 10.*" 1575 | } 1576 | }, 1577 | "node_modules/get-func-name": { 1578 | "version": "2.0.0", 1579 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1580 | "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", 1581 | "dev": true, 1582 | "engines": { 1583 | "node": "*" 1584 | } 1585 | }, 1586 | "node_modules/get-intrinsic": { 1587 | "version": "1.2.0", 1588 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1589 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1590 | "dev": true, 1591 | "dependencies": { 1592 | "function-bind": "^1.1.1", 1593 | "has": "^1.0.3", 1594 | "has-symbols": "^1.0.3" 1595 | }, 1596 | "funding": { 1597 | "url": "https://github.com/sponsors/ljharb" 1598 | } 1599 | }, 1600 | "node_modules/glob": { 1601 | "version": "8.1.0", 1602 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1603 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1604 | "dev": true, 1605 | "dependencies": { 1606 | "fs.realpath": "^1.0.0", 1607 | "inflight": "^1.0.4", 1608 | "inherits": "2", 1609 | "minimatch": "^5.0.1", 1610 | "once": "^1.3.0" 1611 | }, 1612 | "engines": { 1613 | "node": ">=12" 1614 | }, 1615 | "funding": { 1616 | "url": "https://github.com/sponsors/isaacs" 1617 | } 1618 | }, 1619 | "node_modules/glob-parent": { 1620 | "version": "6.0.2", 1621 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1622 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1623 | "dev": true, 1624 | "dependencies": { 1625 | "is-glob": "^4.0.3" 1626 | }, 1627 | "engines": { 1628 | "node": ">=10.13.0" 1629 | } 1630 | }, 1631 | "node_modules/glob/node_modules/brace-expansion": { 1632 | "version": "2.0.1", 1633 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1634 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1635 | "dev": true, 1636 | "dependencies": { 1637 | "balanced-match": "^1.0.0" 1638 | } 1639 | }, 1640 | "node_modules/glob/node_modules/minimatch": { 1641 | "version": "5.1.6", 1642 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1643 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1644 | "dev": true, 1645 | "dependencies": { 1646 | "brace-expansion": "^2.0.1" 1647 | }, 1648 | "engines": { 1649 | "node": ">=10" 1650 | } 1651 | }, 1652 | "node_modules/globals": { 1653 | "version": "13.20.0", 1654 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", 1655 | "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", 1656 | "dev": true, 1657 | "dependencies": { 1658 | "type-fest": "^0.20.2" 1659 | }, 1660 | "engines": { 1661 | "node": ">=8" 1662 | }, 1663 | "funding": { 1664 | "url": "https://github.com/sponsors/sindresorhus" 1665 | } 1666 | }, 1667 | "node_modules/graceful-fs": { 1668 | "version": "4.2.10", 1669 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1670 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 1671 | "dev": true 1672 | }, 1673 | "node_modules/grapheme-splitter": { 1674 | "version": "1.0.4", 1675 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 1676 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 1677 | "dev": true 1678 | }, 1679 | "node_modules/has": { 1680 | "version": "1.0.3", 1681 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1682 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1683 | "dev": true, 1684 | "dependencies": { 1685 | "function-bind": "^1.1.1" 1686 | }, 1687 | "engines": { 1688 | "node": ">= 0.4.0" 1689 | } 1690 | }, 1691 | "node_modules/has-flag": { 1692 | "version": "4.0.0", 1693 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1694 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1695 | "dev": true, 1696 | "engines": { 1697 | "node": ">=8" 1698 | } 1699 | }, 1700 | "node_modules/has-symbols": { 1701 | "version": "1.0.3", 1702 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1703 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1704 | "dev": true, 1705 | "engines": { 1706 | "node": ">= 0.4" 1707 | }, 1708 | "funding": { 1709 | "url": "https://github.com/sponsors/ljharb" 1710 | } 1711 | }, 1712 | "node_modules/he": { 1713 | "version": "1.2.0", 1714 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1715 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1716 | "dev": true, 1717 | "bin": { 1718 | "he": "bin/he" 1719 | } 1720 | }, 1721 | "node_modules/hosted-git-info": { 1722 | "version": "2.8.9", 1723 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1724 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1725 | "dev": true 1726 | }, 1727 | "node_modules/htm": { 1728 | "version": "3.1.1", 1729 | "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", 1730 | "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==" 1731 | }, 1732 | "node_modules/http-errors": { 1733 | "version": "2.0.0", 1734 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1735 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1736 | "dev": true, 1737 | "dependencies": { 1738 | "depd": "2.0.0", 1739 | "inherits": "2.0.4", 1740 | "setprototypeof": "1.2.0", 1741 | "statuses": "2.0.1", 1742 | "toidentifier": "1.0.1" 1743 | }, 1744 | "engines": { 1745 | "node": ">= 0.8" 1746 | } 1747 | }, 1748 | "node_modules/http-errors/node_modules/statuses": { 1749 | "version": "2.0.1", 1750 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1751 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1752 | "dev": true, 1753 | "engines": { 1754 | "node": ">= 0.8" 1755 | } 1756 | }, 1757 | "node_modules/http-proxy": { 1758 | "version": "1.18.1", 1759 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 1760 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 1761 | "dev": true, 1762 | "dependencies": { 1763 | "eventemitter3": "^4.0.0", 1764 | "follow-redirects": "^1.0.0", 1765 | "requires-port": "^1.0.0" 1766 | }, 1767 | "engines": { 1768 | "node": ">=8.0.0" 1769 | } 1770 | }, 1771 | "node_modules/iconv-lite": { 1772 | "version": "0.4.24", 1773 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1774 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1775 | "dev": true, 1776 | "dependencies": { 1777 | "safer-buffer": ">= 2.1.2 < 3" 1778 | }, 1779 | "engines": { 1780 | "node": ">=0.10.0" 1781 | } 1782 | }, 1783 | "node_modules/ignore": { 1784 | "version": "5.2.4", 1785 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1786 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 1787 | "dev": true, 1788 | "engines": { 1789 | "node": ">= 4" 1790 | } 1791 | }, 1792 | "node_modules/import-fresh": { 1793 | "version": "3.3.0", 1794 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1795 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1796 | "dev": true, 1797 | "dependencies": { 1798 | "parent-module": "^1.0.0", 1799 | "resolve-from": "^4.0.0" 1800 | }, 1801 | "engines": { 1802 | "node": ">=6" 1803 | }, 1804 | "funding": { 1805 | "url": "https://github.com/sponsors/sindresorhus" 1806 | } 1807 | }, 1808 | "node_modules/imurmurhash": { 1809 | "version": "0.1.4", 1810 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1811 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1812 | "dev": true, 1813 | "engines": { 1814 | "node": ">=0.8.19" 1815 | } 1816 | }, 1817 | "node_modules/inflight": { 1818 | "version": "1.0.6", 1819 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1820 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1821 | "dev": true, 1822 | "dependencies": { 1823 | "once": "^1.3.0", 1824 | "wrappy": "1" 1825 | } 1826 | }, 1827 | "node_modules/inherits": { 1828 | "version": "2.0.4", 1829 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1830 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1831 | "dev": true 1832 | }, 1833 | "node_modules/is-arrayish": { 1834 | "version": "0.2.1", 1835 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1836 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 1837 | "dev": true 1838 | }, 1839 | "node_modules/is-binary-path": { 1840 | "version": "2.1.0", 1841 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1842 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1843 | "dev": true, 1844 | "dependencies": { 1845 | "binary-extensions": "^2.0.0" 1846 | }, 1847 | "engines": { 1848 | "node": ">=8" 1849 | } 1850 | }, 1851 | "node_modules/is-builtin-module": { 1852 | "version": "3.2.1", 1853 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 1854 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 1855 | "dev": true, 1856 | "dependencies": { 1857 | "builtin-modules": "^3.3.0" 1858 | }, 1859 | "engines": { 1860 | "node": ">=6" 1861 | }, 1862 | "funding": { 1863 | "url": "https://github.com/sponsors/sindresorhus" 1864 | } 1865 | }, 1866 | "node_modules/is-core-module": { 1867 | "version": "2.11.0", 1868 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1869 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1870 | "dev": true, 1871 | "dependencies": { 1872 | "has": "^1.0.3" 1873 | }, 1874 | "funding": { 1875 | "url": "https://github.com/sponsors/ljharb" 1876 | } 1877 | }, 1878 | "node_modules/is-extglob": { 1879 | "version": "2.1.1", 1880 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1881 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1882 | "dev": true, 1883 | "engines": { 1884 | "node": ">=0.10.0" 1885 | } 1886 | }, 1887 | "node_modules/is-fullwidth-code-point": { 1888 | "version": "3.0.0", 1889 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1890 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1891 | "dev": true, 1892 | "engines": { 1893 | "node": ">=8" 1894 | } 1895 | }, 1896 | "node_modules/is-glob": { 1897 | "version": "4.0.3", 1898 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1899 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1900 | "dev": true, 1901 | "dependencies": { 1902 | "is-extglob": "^2.1.1" 1903 | }, 1904 | "engines": { 1905 | "node": ">=0.10.0" 1906 | } 1907 | }, 1908 | "node_modules/is-module": { 1909 | "version": "1.0.0", 1910 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1911 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 1912 | "dev": true 1913 | }, 1914 | "node_modules/is-number": { 1915 | "version": "7.0.0", 1916 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1917 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1918 | "dev": true, 1919 | "engines": { 1920 | "node": ">=0.12.0" 1921 | } 1922 | }, 1923 | "node_modules/is-path-inside": { 1924 | "version": "3.0.3", 1925 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1926 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1927 | "dev": true, 1928 | "engines": { 1929 | "node": ">=8" 1930 | } 1931 | }, 1932 | "node_modules/is-plain-obj": { 1933 | "version": "1.1.0", 1934 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1935 | "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", 1936 | "dev": true, 1937 | "engines": { 1938 | "node": ">=0.10.0" 1939 | } 1940 | }, 1941 | "node_modules/is-reference": { 1942 | "version": "1.2.1", 1943 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 1944 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 1945 | "dev": true, 1946 | "dependencies": { 1947 | "@types/estree": "*" 1948 | } 1949 | }, 1950 | "node_modules/is-unicode-supported": { 1951 | "version": "0.1.0", 1952 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1953 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1954 | "dev": true, 1955 | "engines": { 1956 | "node": ">=10" 1957 | }, 1958 | "funding": { 1959 | "url": "https://github.com/sponsors/sindresorhus" 1960 | } 1961 | }, 1962 | "node_modules/isarray": { 1963 | "version": "0.0.1", 1964 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1965 | "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", 1966 | "dev": true 1967 | }, 1968 | "node_modules/isbinaryfile": { 1969 | "version": "4.0.10", 1970 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", 1971 | "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", 1972 | "dev": true, 1973 | "engines": { 1974 | "node": ">= 8.0.0" 1975 | }, 1976 | "funding": { 1977 | "url": "https://github.com/sponsors/gjtorikian/" 1978 | } 1979 | }, 1980 | "node_modules/isexe": { 1981 | "version": "2.0.0", 1982 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1983 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1984 | "dev": true 1985 | }, 1986 | "node_modules/js-sdsl": { 1987 | "version": "4.3.0", 1988 | "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", 1989 | "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", 1990 | "dev": true, 1991 | "funding": { 1992 | "type": "opencollective", 1993 | "url": "https://opencollective.com/js-sdsl" 1994 | } 1995 | }, 1996 | "node_modules/js-tokens": { 1997 | "version": "4.0.0", 1998 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1999 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2000 | "dev": true 2001 | }, 2002 | "node_modules/js-yaml": { 2003 | "version": "4.1.0", 2004 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2005 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2006 | "dev": true, 2007 | "dependencies": { 2008 | "argparse": "^2.0.1" 2009 | }, 2010 | "bin": { 2011 | "js-yaml": "bin/js-yaml.js" 2012 | } 2013 | }, 2014 | "node_modules/json-parse-even-better-errors": { 2015 | "version": "2.3.1", 2016 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2017 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2018 | "dev": true 2019 | }, 2020 | "node_modules/json-schema-traverse": { 2021 | "version": "0.4.1", 2022 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2023 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2024 | "dev": true 2025 | }, 2026 | "node_modules/json-stable-stringify-without-jsonify": { 2027 | "version": "1.0.1", 2028 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2029 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2030 | "dev": true 2031 | }, 2032 | "node_modules/jsonfile": { 2033 | "version": "4.0.0", 2034 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 2035 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 2036 | "dev": true, 2037 | "optionalDependencies": { 2038 | "graceful-fs": "^4.1.6" 2039 | } 2040 | }, 2041 | "node_modules/just-extend": { 2042 | "version": "4.2.1", 2043 | "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", 2044 | "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", 2045 | "dev": true 2046 | }, 2047 | "node_modules/karma": { 2048 | "version": "6.4.1", 2049 | "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", 2050 | "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", 2051 | "dev": true, 2052 | "dependencies": { 2053 | "@colors/colors": "1.5.0", 2054 | "body-parser": "^1.19.0", 2055 | "braces": "^3.0.2", 2056 | "chokidar": "^3.5.1", 2057 | "connect": "^3.7.0", 2058 | "di": "^0.0.1", 2059 | "dom-serialize": "^2.2.1", 2060 | "glob": "^7.1.7", 2061 | "graceful-fs": "^4.2.6", 2062 | "http-proxy": "^1.18.1", 2063 | "isbinaryfile": "^4.0.8", 2064 | "lodash": "^4.17.21", 2065 | "log4js": "^6.4.1", 2066 | "mime": "^2.5.2", 2067 | "minimatch": "^3.0.4", 2068 | "mkdirp": "^0.5.5", 2069 | "qjobs": "^1.2.0", 2070 | "range-parser": "^1.2.1", 2071 | "rimraf": "^3.0.2", 2072 | "socket.io": "^4.4.1", 2073 | "source-map": "^0.6.1", 2074 | "tmp": "^0.2.1", 2075 | "ua-parser-js": "^0.7.30", 2076 | "yargs": "^16.1.1" 2077 | }, 2078 | "bin": { 2079 | "karma": "bin/karma" 2080 | }, 2081 | "engines": { 2082 | "node": ">= 10" 2083 | } 2084 | }, 2085 | "node_modules/karma-chai": { 2086 | "version": "0.1.0", 2087 | "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", 2088 | "integrity": "sha512-mqKCkHwzPMhgTYca10S90aCEX9+HjVjjrBFAsw36Zj7BlQNbokXXCAe6Ji04VUMsxcY5RLP7YphpfO06XOubdg==", 2089 | "dev": true, 2090 | "peerDependencies": { 2091 | "chai": "*", 2092 | "karma": ">=0.10.9" 2093 | } 2094 | }, 2095 | "node_modules/karma-chrome-launcher": { 2096 | "version": "3.1.1", 2097 | "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", 2098 | "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", 2099 | "dev": true, 2100 | "dependencies": { 2101 | "which": "^1.2.1" 2102 | } 2103 | }, 2104 | "node_modules/karma-chrome-launcher/node_modules/which": { 2105 | "version": "1.3.1", 2106 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2107 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2108 | "dev": true, 2109 | "dependencies": { 2110 | "isexe": "^2.0.0" 2111 | }, 2112 | "bin": { 2113 | "which": "bin/which" 2114 | } 2115 | }, 2116 | "node_modules/karma-mocha": { 2117 | "version": "2.0.1", 2118 | "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", 2119 | "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", 2120 | "dev": true, 2121 | "dependencies": { 2122 | "minimist": "^1.2.3" 2123 | } 2124 | }, 2125 | "node_modules/karma-mocha-reporter": { 2126 | "version": "2.2.5", 2127 | "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", 2128 | "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", 2129 | "dev": true, 2130 | "dependencies": { 2131 | "chalk": "^2.1.0", 2132 | "log-symbols": "^2.1.0", 2133 | "strip-ansi": "^4.0.0" 2134 | }, 2135 | "peerDependencies": { 2136 | "karma": ">=0.13" 2137 | } 2138 | }, 2139 | "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { 2140 | "version": "3.0.1", 2141 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", 2142 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", 2143 | "dev": true, 2144 | "engines": { 2145 | "node": ">=4" 2146 | } 2147 | }, 2148 | "node_modules/karma-mocha-reporter/node_modules/ansi-styles": { 2149 | "version": "3.2.1", 2150 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2151 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2152 | "dev": true, 2153 | "dependencies": { 2154 | "color-convert": "^1.9.0" 2155 | }, 2156 | "engines": { 2157 | "node": ">=4" 2158 | } 2159 | }, 2160 | "node_modules/karma-mocha-reporter/node_modules/chalk": { 2161 | "version": "2.4.2", 2162 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2163 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2164 | "dev": true, 2165 | "dependencies": { 2166 | "ansi-styles": "^3.2.1", 2167 | "escape-string-regexp": "^1.0.5", 2168 | "supports-color": "^5.3.0" 2169 | }, 2170 | "engines": { 2171 | "node": ">=4" 2172 | } 2173 | }, 2174 | "node_modules/karma-mocha-reporter/node_modules/color-convert": { 2175 | "version": "1.9.3", 2176 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2177 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2178 | "dev": true, 2179 | "dependencies": { 2180 | "color-name": "1.1.3" 2181 | } 2182 | }, 2183 | "node_modules/karma-mocha-reporter/node_modules/color-name": { 2184 | "version": "1.1.3", 2185 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2186 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2187 | "dev": true 2188 | }, 2189 | "node_modules/karma-mocha-reporter/node_modules/escape-string-regexp": { 2190 | "version": "1.0.5", 2191 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2192 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2193 | "dev": true, 2194 | "engines": { 2195 | "node": ">=0.8.0" 2196 | } 2197 | }, 2198 | "node_modules/karma-mocha-reporter/node_modules/has-flag": { 2199 | "version": "3.0.0", 2200 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2201 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2202 | "dev": true, 2203 | "engines": { 2204 | "node": ">=4" 2205 | } 2206 | }, 2207 | "node_modules/karma-mocha-reporter/node_modules/strip-ansi": { 2208 | "version": "4.0.0", 2209 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2210 | "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", 2211 | "dev": true, 2212 | "dependencies": { 2213 | "ansi-regex": "^3.0.0" 2214 | }, 2215 | "engines": { 2216 | "node": ">=4" 2217 | } 2218 | }, 2219 | "node_modules/karma-mocha-reporter/node_modules/supports-color": { 2220 | "version": "5.5.0", 2221 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2222 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2223 | "dev": true, 2224 | "dependencies": { 2225 | "has-flag": "^3.0.0" 2226 | }, 2227 | "engines": { 2228 | "node": ">=4" 2229 | } 2230 | }, 2231 | "node_modules/karma-rollup-preprocessor": { 2232 | "version": "7.0.8", 2233 | "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.8.tgz", 2234 | "integrity": "sha512-WiuBCS9qsatJuR17dghiTARBZ7LF+ml+eb7qJXhw7IbsdY0lTWELDRQC/93J9i6636CsAXVBL3VJF4WtaFLZzA==", 2235 | "dev": true, 2236 | "dependencies": { 2237 | "chokidar": "^3.3.1", 2238 | "debounce": "^1.2.0" 2239 | }, 2240 | "engines": { 2241 | "node": ">= 8.0.0" 2242 | }, 2243 | "peerDependencies": { 2244 | "rollup": ">= 1.0.0" 2245 | } 2246 | }, 2247 | "node_modules/karma-sinon": { 2248 | "version": "1.0.5", 2249 | "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz", 2250 | "integrity": "sha512-wrkyAxJmJbn75Dqy17L/8aILJWFm7znd1CE8gkyxTBFnjMSOe2XTJ3P30T8SkxWZHmoHX0SCaUJTDBEoXs25Og==", 2251 | "dev": true, 2252 | "engines": { 2253 | "node": ">= 0.10.0" 2254 | }, 2255 | "peerDependencies": { 2256 | "karma": ">=0.10", 2257 | "sinon": "*" 2258 | } 2259 | }, 2260 | "node_modules/karma/node_modules/glob": { 2261 | "version": "7.2.3", 2262 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2263 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2264 | "dev": true, 2265 | "dependencies": { 2266 | "fs.realpath": "^1.0.0", 2267 | "inflight": "^1.0.4", 2268 | "inherits": "2", 2269 | "minimatch": "^3.1.1", 2270 | "once": "^1.3.0", 2271 | "path-is-absolute": "^1.0.0" 2272 | }, 2273 | "engines": { 2274 | "node": "*" 2275 | }, 2276 | "funding": { 2277 | "url": "https://github.com/sponsors/isaacs" 2278 | } 2279 | }, 2280 | "node_modules/levn": { 2281 | "version": "0.4.1", 2282 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2283 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2284 | "dev": true, 2285 | "dependencies": { 2286 | "prelude-ls": "^1.2.1", 2287 | "type-check": "~0.4.0" 2288 | }, 2289 | "engines": { 2290 | "node": ">= 0.8.0" 2291 | } 2292 | }, 2293 | "node_modules/lines-and-columns": { 2294 | "version": "1.2.4", 2295 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 2296 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 2297 | "dev": true 2298 | }, 2299 | "node_modules/locate-path": { 2300 | "version": "6.0.0", 2301 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2302 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2303 | "dev": true, 2304 | "dependencies": { 2305 | "p-locate": "^5.0.0" 2306 | }, 2307 | "engines": { 2308 | "node": ">=10" 2309 | }, 2310 | "funding": { 2311 | "url": "https://github.com/sponsors/sindresorhus" 2312 | } 2313 | }, 2314 | "node_modules/lodash": { 2315 | "version": "4.17.21", 2316 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2317 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2318 | "dev": true 2319 | }, 2320 | "node_modules/lodash.get": { 2321 | "version": "4.4.2", 2322 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 2323 | "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", 2324 | "dev": true 2325 | }, 2326 | "node_modules/lodash.merge": { 2327 | "version": "4.6.2", 2328 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2329 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2330 | "dev": true 2331 | }, 2332 | "node_modules/log-symbols": { 2333 | "version": "2.2.0", 2334 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 2335 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 2336 | "dev": true, 2337 | "dependencies": { 2338 | "chalk": "^2.0.1" 2339 | }, 2340 | "engines": { 2341 | "node": ">=4" 2342 | } 2343 | }, 2344 | "node_modules/log-symbols/node_modules/ansi-styles": { 2345 | "version": "3.2.1", 2346 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2347 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2348 | "dev": true, 2349 | "dependencies": { 2350 | "color-convert": "^1.9.0" 2351 | }, 2352 | "engines": { 2353 | "node": ">=4" 2354 | } 2355 | }, 2356 | "node_modules/log-symbols/node_modules/chalk": { 2357 | "version": "2.4.2", 2358 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2359 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2360 | "dev": true, 2361 | "dependencies": { 2362 | "ansi-styles": "^3.2.1", 2363 | "escape-string-regexp": "^1.0.5", 2364 | "supports-color": "^5.3.0" 2365 | }, 2366 | "engines": { 2367 | "node": ">=4" 2368 | } 2369 | }, 2370 | "node_modules/log-symbols/node_modules/color-convert": { 2371 | "version": "1.9.3", 2372 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2373 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2374 | "dev": true, 2375 | "dependencies": { 2376 | "color-name": "1.1.3" 2377 | } 2378 | }, 2379 | "node_modules/log-symbols/node_modules/color-name": { 2380 | "version": "1.1.3", 2381 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2382 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2383 | "dev": true 2384 | }, 2385 | "node_modules/log-symbols/node_modules/escape-string-regexp": { 2386 | "version": "1.0.5", 2387 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2388 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2389 | "dev": true, 2390 | "engines": { 2391 | "node": ">=0.8.0" 2392 | } 2393 | }, 2394 | "node_modules/log-symbols/node_modules/has-flag": { 2395 | "version": "3.0.0", 2396 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2397 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2398 | "dev": true, 2399 | "engines": { 2400 | "node": ">=4" 2401 | } 2402 | }, 2403 | "node_modules/log-symbols/node_modules/supports-color": { 2404 | "version": "5.5.0", 2405 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2406 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2407 | "dev": true, 2408 | "dependencies": { 2409 | "has-flag": "^3.0.0" 2410 | }, 2411 | "engines": { 2412 | "node": ">=4" 2413 | } 2414 | }, 2415 | "node_modules/log4js": { 2416 | "version": "6.9.1", 2417 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", 2418 | "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", 2419 | "dev": true, 2420 | "dependencies": { 2421 | "date-format": "^4.0.14", 2422 | "debug": "^4.3.4", 2423 | "flatted": "^3.2.7", 2424 | "rfdc": "^1.3.0", 2425 | "streamroller": "^3.1.5" 2426 | }, 2427 | "engines": { 2428 | "node": ">=8.0" 2429 | } 2430 | }, 2431 | "node_modules/loupe": { 2432 | "version": "2.3.6", 2433 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", 2434 | "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", 2435 | "dev": true, 2436 | "dependencies": { 2437 | "get-func-name": "^2.0.0" 2438 | } 2439 | }, 2440 | "node_modules/magic-string": { 2441 | "version": "0.27.0", 2442 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 2443 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 2444 | "dev": true, 2445 | "dependencies": { 2446 | "@jridgewell/sourcemap-codec": "^1.4.13" 2447 | }, 2448 | "engines": { 2449 | "node": ">=12" 2450 | } 2451 | }, 2452 | "node_modules/make-dir": { 2453 | "version": "2.1.0", 2454 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 2455 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 2456 | "dev": true, 2457 | "dependencies": { 2458 | "pify": "^4.0.1", 2459 | "semver": "^5.6.0" 2460 | }, 2461 | "engines": { 2462 | "node": ">=6" 2463 | } 2464 | }, 2465 | "node_modules/media-typer": { 2466 | "version": "0.3.0", 2467 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2468 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 2469 | "dev": true, 2470 | "engines": { 2471 | "node": ">= 0.6" 2472 | } 2473 | }, 2474 | "node_modules/mime": { 2475 | "version": "2.6.0", 2476 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 2477 | "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 2478 | "dev": true, 2479 | "bin": { 2480 | "mime": "cli.js" 2481 | }, 2482 | "engines": { 2483 | "node": ">=4.0.0" 2484 | } 2485 | }, 2486 | "node_modules/mime-db": { 2487 | "version": "1.52.0", 2488 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2489 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2490 | "dev": true, 2491 | "engines": { 2492 | "node": ">= 0.6" 2493 | } 2494 | }, 2495 | "node_modules/mime-types": { 2496 | "version": "2.1.35", 2497 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2498 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2499 | "dev": true, 2500 | "dependencies": { 2501 | "mime-db": "1.52.0" 2502 | }, 2503 | "engines": { 2504 | "node": ">= 0.6" 2505 | } 2506 | }, 2507 | "node_modules/minimatch": { 2508 | "version": "3.1.2", 2509 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2510 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2511 | "dev": true, 2512 | "dependencies": { 2513 | "brace-expansion": "^1.1.7" 2514 | }, 2515 | "engines": { 2516 | "node": "*" 2517 | } 2518 | }, 2519 | "node_modules/minimist": { 2520 | "version": "1.2.8", 2521 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2522 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2523 | "dev": true, 2524 | "funding": { 2525 | "url": "https://github.com/sponsors/ljharb" 2526 | } 2527 | }, 2528 | "node_modules/mkdirp": { 2529 | "version": "0.5.6", 2530 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2531 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2532 | "dev": true, 2533 | "dependencies": { 2534 | "minimist": "^1.2.6" 2535 | }, 2536 | "bin": { 2537 | "mkdirp": "bin/cmd.js" 2538 | } 2539 | }, 2540 | "node_modules/mocha": { 2541 | "version": "10.2.0", 2542 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", 2543 | "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", 2544 | "dev": true, 2545 | "dependencies": { 2546 | "ansi-colors": "4.1.1", 2547 | "browser-stdout": "1.3.1", 2548 | "chokidar": "3.5.3", 2549 | "debug": "4.3.4", 2550 | "diff": "5.0.0", 2551 | "escape-string-regexp": "4.0.0", 2552 | "find-up": "5.0.0", 2553 | "glob": "7.2.0", 2554 | "he": "1.2.0", 2555 | "js-yaml": "4.1.0", 2556 | "log-symbols": "4.1.0", 2557 | "minimatch": "5.0.1", 2558 | "ms": "2.1.3", 2559 | "nanoid": "3.3.3", 2560 | "serialize-javascript": "6.0.0", 2561 | "strip-json-comments": "3.1.1", 2562 | "supports-color": "8.1.1", 2563 | "workerpool": "6.2.1", 2564 | "yargs": "16.2.0", 2565 | "yargs-parser": "20.2.4", 2566 | "yargs-unparser": "2.0.0" 2567 | }, 2568 | "bin": { 2569 | "_mocha": "bin/_mocha", 2570 | "mocha": "bin/mocha.js" 2571 | }, 2572 | "engines": { 2573 | "node": ">= 14.0.0" 2574 | }, 2575 | "funding": { 2576 | "type": "opencollective", 2577 | "url": "https://opencollective.com/mochajs" 2578 | } 2579 | }, 2580 | "node_modules/mocha/node_modules/glob": { 2581 | "version": "7.2.0", 2582 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2583 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2584 | "dev": true, 2585 | "dependencies": { 2586 | "fs.realpath": "^1.0.0", 2587 | "inflight": "^1.0.4", 2588 | "inherits": "2", 2589 | "minimatch": "^3.0.4", 2590 | "once": "^1.3.0", 2591 | "path-is-absolute": "^1.0.0" 2592 | }, 2593 | "engines": { 2594 | "node": "*" 2595 | }, 2596 | "funding": { 2597 | "url": "https://github.com/sponsors/isaacs" 2598 | } 2599 | }, 2600 | "node_modules/mocha/node_modules/glob/node_modules/minimatch": { 2601 | "version": "3.1.2", 2602 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2603 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2604 | "dev": true, 2605 | "dependencies": { 2606 | "brace-expansion": "^1.1.7" 2607 | }, 2608 | "engines": { 2609 | "node": "*" 2610 | } 2611 | }, 2612 | "node_modules/mocha/node_modules/log-symbols": { 2613 | "version": "4.1.0", 2614 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 2615 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 2616 | "dev": true, 2617 | "dependencies": { 2618 | "chalk": "^4.1.0", 2619 | "is-unicode-supported": "^0.1.0" 2620 | }, 2621 | "engines": { 2622 | "node": ">=10" 2623 | }, 2624 | "funding": { 2625 | "url": "https://github.com/sponsors/sindresorhus" 2626 | } 2627 | }, 2628 | "node_modules/mocha/node_modules/minimatch": { 2629 | "version": "5.0.1", 2630 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 2631 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 2632 | "dev": true, 2633 | "dependencies": { 2634 | "brace-expansion": "^2.0.1" 2635 | }, 2636 | "engines": { 2637 | "node": ">=10" 2638 | } 2639 | }, 2640 | "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { 2641 | "version": "2.0.1", 2642 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2643 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2644 | "dev": true, 2645 | "dependencies": { 2646 | "balanced-match": "^1.0.0" 2647 | } 2648 | }, 2649 | "node_modules/mocha/node_modules/ms": { 2650 | "version": "2.1.3", 2651 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2652 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2653 | "dev": true 2654 | }, 2655 | "node_modules/mocha/node_modules/serialize-javascript": { 2656 | "version": "6.0.0", 2657 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 2658 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 2659 | "dev": true, 2660 | "dependencies": { 2661 | "randombytes": "^2.1.0" 2662 | } 2663 | }, 2664 | "node_modules/mocha/node_modules/supports-color": { 2665 | "version": "8.1.1", 2666 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2667 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2668 | "dev": true, 2669 | "dependencies": { 2670 | "has-flag": "^4.0.0" 2671 | }, 2672 | "engines": { 2673 | "node": ">=10" 2674 | }, 2675 | "funding": { 2676 | "url": "https://github.com/chalk/supports-color?sponsor=1" 2677 | } 2678 | }, 2679 | "node_modules/ms": { 2680 | "version": "2.1.2", 2681 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2682 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2683 | "dev": true 2684 | }, 2685 | "node_modules/nanoid": { 2686 | "version": "3.3.3", 2687 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 2688 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 2689 | "dev": true, 2690 | "bin": { 2691 | "nanoid": "bin/nanoid.cjs" 2692 | }, 2693 | "engines": { 2694 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2695 | } 2696 | }, 2697 | "node_modules/natural-compare": { 2698 | "version": "1.4.0", 2699 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2700 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2701 | "dev": true 2702 | }, 2703 | "node_modules/negotiator": { 2704 | "version": "0.6.3", 2705 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 2706 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 2707 | "dev": true, 2708 | "engines": { 2709 | "node": ">= 0.6" 2710 | } 2711 | }, 2712 | "node_modules/nise": { 2713 | "version": "5.1.4", 2714 | "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", 2715 | "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", 2716 | "dev": true, 2717 | "dependencies": { 2718 | "@sinonjs/commons": "^2.0.0", 2719 | "@sinonjs/fake-timers": "^10.0.2", 2720 | "@sinonjs/text-encoding": "^0.7.1", 2721 | "just-extend": "^4.0.2", 2722 | "path-to-regexp": "^1.7.0" 2723 | } 2724 | }, 2725 | "node_modules/normalize-package-data": { 2726 | "version": "2.5.0", 2727 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2728 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2729 | "dev": true, 2730 | "dependencies": { 2731 | "hosted-git-info": "^2.1.4", 2732 | "resolve": "^1.10.0", 2733 | "semver": "2 || 3 || 4 || 5", 2734 | "validate-npm-package-license": "^3.0.1" 2735 | } 2736 | }, 2737 | "node_modules/normalize-path": { 2738 | "version": "3.0.0", 2739 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2740 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2741 | "dev": true, 2742 | "engines": { 2743 | "node": ">=0.10.0" 2744 | } 2745 | }, 2746 | "node_modules/object-assign": { 2747 | "version": "4.1.1", 2748 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2749 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 2750 | "dev": true, 2751 | "engines": { 2752 | "node": ">=0.10.0" 2753 | } 2754 | }, 2755 | "node_modules/object-inspect": { 2756 | "version": "1.12.3", 2757 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 2758 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 2759 | "dev": true, 2760 | "funding": { 2761 | "url": "https://github.com/sponsors/ljharb" 2762 | } 2763 | }, 2764 | "node_modules/on-finished": { 2765 | "version": "2.4.1", 2766 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 2767 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 2768 | "dev": true, 2769 | "dependencies": { 2770 | "ee-first": "1.1.1" 2771 | }, 2772 | "engines": { 2773 | "node": ">= 0.8" 2774 | } 2775 | }, 2776 | "node_modules/once": { 2777 | "version": "1.4.0", 2778 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2779 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2780 | "dev": true, 2781 | "dependencies": { 2782 | "wrappy": "1" 2783 | } 2784 | }, 2785 | "node_modules/optionator": { 2786 | "version": "0.9.1", 2787 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2788 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2789 | "dev": true, 2790 | "dependencies": { 2791 | "deep-is": "^0.1.3", 2792 | "fast-levenshtein": "^2.0.6", 2793 | "levn": "^0.4.1", 2794 | "prelude-ls": "^1.2.1", 2795 | "type-check": "^0.4.0", 2796 | "word-wrap": "^1.2.3" 2797 | }, 2798 | "engines": { 2799 | "node": ">= 0.8.0" 2800 | } 2801 | }, 2802 | "node_modules/p-limit": { 2803 | "version": "3.1.0", 2804 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2805 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2806 | "dev": true, 2807 | "dependencies": { 2808 | "yocto-queue": "^0.1.0" 2809 | }, 2810 | "engines": { 2811 | "node": ">=10" 2812 | }, 2813 | "funding": { 2814 | "url": "https://github.com/sponsors/sindresorhus" 2815 | } 2816 | }, 2817 | "node_modules/p-locate": { 2818 | "version": "5.0.0", 2819 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2820 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2821 | "dev": true, 2822 | "dependencies": { 2823 | "p-limit": "^3.0.2" 2824 | }, 2825 | "engines": { 2826 | "node": ">=10" 2827 | }, 2828 | "funding": { 2829 | "url": "https://github.com/sponsors/sindresorhus" 2830 | } 2831 | }, 2832 | "node_modules/parent-module": { 2833 | "version": "1.0.1", 2834 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2835 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2836 | "dev": true, 2837 | "dependencies": { 2838 | "callsites": "^3.0.0" 2839 | }, 2840 | "engines": { 2841 | "node": ">=6" 2842 | } 2843 | }, 2844 | "node_modules/parse-json": { 2845 | "version": "5.2.0", 2846 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2847 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2848 | "dev": true, 2849 | "dependencies": { 2850 | "@babel/code-frame": "^7.0.0", 2851 | "error-ex": "^1.3.1", 2852 | "json-parse-even-better-errors": "^2.3.0", 2853 | "lines-and-columns": "^1.1.6" 2854 | }, 2855 | "engines": { 2856 | "node": ">=8" 2857 | }, 2858 | "funding": { 2859 | "url": "https://github.com/sponsors/sindresorhus" 2860 | } 2861 | }, 2862 | "node_modules/parseurl": { 2863 | "version": "1.3.3", 2864 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2865 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 2866 | "dev": true, 2867 | "engines": { 2868 | "node": ">= 0.8" 2869 | } 2870 | }, 2871 | "node_modules/path-exists": { 2872 | "version": "4.0.0", 2873 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2874 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2875 | "dev": true, 2876 | "engines": { 2877 | "node": ">=8" 2878 | } 2879 | }, 2880 | "node_modules/path-is-absolute": { 2881 | "version": "1.0.1", 2882 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2883 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2884 | "dev": true, 2885 | "engines": { 2886 | "node": ">=0.10.0" 2887 | } 2888 | }, 2889 | "node_modules/path-key": { 2890 | "version": "3.1.1", 2891 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2892 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2893 | "dev": true, 2894 | "engines": { 2895 | "node": ">=8" 2896 | } 2897 | }, 2898 | "node_modules/path-parse": { 2899 | "version": "1.0.7", 2900 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2901 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2902 | "dev": true 2903 | }, 2904 | "node_modules/path-to-regexp": { 2905 | "version": "1.8.0", 2906 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", 2907 | "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", 2908 | "dev": true, 2909 | "dependencies": { 2910 | "isarray": "0.0.1" 2911 | } 2912 | }, 2913 | "node_modules/pathval": { 2914 | "version": "1.1.1", 2915 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 2916 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 2917 | "dev": true, 2918 | "engines": { 2919 | "node": "*" 2920 | } 2921 | }, 2922 | "node_modules/picomatch": { 2923 | "version": "2.3.1", 2924 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2925 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2926 | "dev": true, 2927 | "engines": { 2928 | "node": ">=8.6" 2929 | }, 2930 | "funding": { 2931 | "url": "https://github.com/sponsors/jonschlinkert" 2932 | } 2933 | }, 2934 | "node_modules/pify": { 2935 | "version": "4.0.1", 2936 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2937 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2938 | "dev": true, 2939 | "engines": { 2940 | "node": ">=6" 2941 | } 2942 | }, 2943 | "node_modules/prelude-ls": { 2944 | "version": "1.2.1", 2945 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2946 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2947 | "dev": true, 2948 | "engines": { 2949 | "node": ">= 0.8.0" 2950 | } 2951 | }, 2952 | "node_modules/punycode": { 2953 | "version": "2.3.0", 2954 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 2955 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 2956 | "dev": true, 2957 | "engines": { 2958 | "node": ">=6" 2959 | } 2960 | }, 2961 | "node_modules/qjobs": { 2962 | "version": "1.2.0", 2963 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", 2964 | "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", 2965 | "dev": true, 2966 | "engines": { 2967 | "node": ">=0.9" 2968 | } 2969 | }, 2970 | "node_modules/qs": { 2971 | "version": "6.11.0", 2972 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 2973 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 2974 | "dev": true, 2975 | "dependencies": { 2976 | "side-channel": "^1.0.4" 2977 | }, 2978 | "engines": { 2979 | "node": ">=0.6" 2980 | }, 2981 | "funding": { 2982 | "url": "https://github.com/sponsors/ljharb" 2983 | } 2984 | }, 2985 | "node_modules/queue-microtask": { 2986 | "version": "1.2.3", 2987 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2988 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2989 | "dev": true, 2990 | "funding": [ 2991 | { 2992 | "type": "github", 2993 | "url": "https://github.com/sponsors/feross" 2994 | }, 2995 | { 2996 | "type": "patreon", 2997 | "url": "https://www.patreon.com/feross" 2998 | }, 2999 | { 3000 | "type": "consulting", 3001 | "url": "https://feross.org/support" 3002 | } 3003 | ] 3004 | }, 3005 | "node_modules/randombytes": { 3006 | "version": "2.1.0", 3007 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3008 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3009 | "dev": true, 3010 | "dependencies": { 3011 | "safe-buffer": "^5.1.0" 3012 | } 3013 | }, 3014 | "node_modules/range-parser": { 3015 | "version": "1.2.1", 3016 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 3017 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 3018 | "dev": true, 3019 | "engines": { 3020 | "node": ">= 0.6" 3021 | } 3022 | }, 3023 | "node_modules/raw-body": { 3024 | "version": "2.5.2", 3025 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 3026 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 3027 | "dev": true, 3028 | "dependencies": { 3029 | "bytes": "3.1.2", 3030 | "http-errors": "2.0.0", 3031 | "iconv-lite": "0.4.24", 3032 | "unpipe": "1.0.0" 3033 | }, 3034 | "engines": { 3035 | "node": ">= 0.8" 3036 | } 3037 | }, 3038 | "node_modules/read-pkg": { 3039 | "version": "5.2.0", 3040 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", 3041 | "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", 3042 | "dev": true, 3043 | "dependencies": { 3044 | "@types/normalize-package-data": "^2.4.0", 3045 | "normalize-package-data": "^2.5.0", 3046 | "parse-json": "^5.0.0", 3047 | "type-fest": "^0.6.0" 3048 | }, 3049 | "engines": { 3050 | "node": ">=8" 3051 | } 3052 | }, 3053 | "node_modules/read-pkg/node_modules/type-fest": { 3054 | "version": "0.6.0", 3055 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", 3056 | "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", 3057 | "dev": true, 3058 | "engines": { 3059 | "node": ">=8" 3060 | } 3061 | }, 3062 | "node_modules/readdirp": { 3063 | "version": "3.6.0", 3064 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3065 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3066 | "dev": true, 3067 | "dependencies": { 3068 | "picomatch": "^2.2.1" 3069 | }, 3070 | "engines": { 3071 | "node": ">=8.10.0" 3072 | } 3073 | }, 3074 | "node_modules/regexpp": { 3075 | "version": "3.2.0", 3076 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 3077 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 3078 | "dev": true, 3079 | "engines": { 3080 | "node": ">=8" 3081 | }, 3082 | "funding": { 3083 | "url": "https://github.com/sponsors/mysticatea" 3084 | } 3085 | }, 3086 | "node_modules/require-directory": { 3087 | "version": "2.1.1", 3088 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3089 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3090 | "dev": true, 3091 | "engines": { 3092 | "node": ">=0.10.0" 3093 | } 3094 | }, 3095 | "node_modules/requires-port": { 3096 | "version": "1.0.0", 3097 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3098 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 3099 | "dev": true 3100 | }, 3101 | "node_modules/resolve": { 3102 | "version": "1.22.1", 3103 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 3104 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 3105 | "dev": true, 3106 | "dependencies": { 3107 | "is-core-module": "^2.9.0", 3108 | "path-parse": "^1.0.7", 3109 | "supports-preserve-symlinks-flag": "^1.0.0" 3110 | }, 3111 | "bin": { 3112 | "resolve": "bin/resolve" 3113 | }, 3114 | "funding": { 3115 | "url": "https://github.com/sponsors/ljharb" 3116 | } 3117 | }, 3118 | "node_modules/resolve-from": { 3119 | "version": "4.0.0", 3120 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3121 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3122 | "dev": true, 3123 | "engines": { 3124 | "node": ">=4" 3125 | } 3126 | }, 3127 | "node_modules/reusify": { 3128 | "version": "1.0.4", 3129 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3130 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3131 | "dev": true, 3132 | "engines": { 3133 | "iojs": ">=1.0.0", 3134 | "node": ">=0.10.0" 3135 | } 3136 | }, 3137 | "node_modules/rfdc": { 3138 | "version": "1.3.0", 3139 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 3140 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 3141 | "dev": true 3142 | }, 3143 | "node_modules/rimraf": { 3144 | "version": "3.0.2", 3145 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3146 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3147 | "dev": true, 3148 | "dependencies": { 3149 | "glob": "^7.1.3" 3150 | }, 3151 | "bin": { 3152 | "rimraf": "bin.js" 3153 | }, 3154 | "funding": { 3155 | "url": "https://github.com/sponsors/isaacs" 3156 | } 3157 | }, 3158 | "node_modules/rimraf/node_modules/glob": { 3159 | "version": "7.2.3", 3160 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 3161 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 3162 | "dev": true, 3163 | "dependencies": { 3164 | "fs.realpath": "^1.0.0", 3165 | "inflight": "^1.0.4", 3166 | "inherits": "2", 3167 | "minimatch": "^3.1.1", 3168 | "once": "^1.3.0", 3169 | "path-is-absolute": "^1.0.0" 3170 | }, 3171 | "engines": { 3172 | "node": "*" 3173 | }, 3174 | "funding": { 3175 | "url": "https://github.com/sponsors/isaacs" 3176 | } 3177 | }, 3178 | "node_modules/rollup": { 3179 | "version": "3.18.0", 3180 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.18.0.tgz", 3181 | "integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==", 3182 | "dev": true, 3183 | "bin": { 3184 | "rollup": "dist/bin/rollup" 3185 | }, 3186 | "engines": { 3187 | "node": ">=14.18.0", 3188 | "npm": ">=8.0.0" 3189 | }, 3190 | "optionalDependencies": { 3191 | "fsevents": "~2.3.2" 3192 | } 3193 | }, 3194 | "node_modules/rollup-plugin-generate-package-json": { 3195 | "version": "3.2.0", 3196 | "resolved": "https://registry.npmjs.org/rollup-plugin-generate-package-json/-/rollup-plugin-generate-package-json-3.2.0.tgz", 3197 | "integrity": "sha512-+Kq1kFVr+maxW/mZB+E+XuaieCXVZqjl2tNU9k3TtAMs3NOaeREa5sRHy67qKDmcnFtZZukIQ3dFCcnV+r0xyw==", 3198 | "dev": true, 3199 | "dependencies": { 3200 | "read-pkg": "^5.2.0", 3201 | "write-pkg": "^4.0.0" 3202 | }, 3203 | "engines": { 3204 | "node": ">=8.3" 3205 | }, 3206 | "peerDependencies": { 3207 | "rollup": ">=1.0.0" 3208 | } 3209 | }, 3210 | "node_modules/run-parallel": { 3211 | "version": "1.2.0", 3212 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3213 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3214 | "dev": true, 3215 | "funding": [ 3216 | { 3217 | "type": "github", 3218 | "url": "https://github.com/sponsors/feross" 3219 | }, 3220 | { 3221 | "type": "patreon", 3222 | "url": "https://www.patreon.com/feross" 3223 | }, 3224 | { 3225 | "type": "consulting", 3226 | "url": "https://feross.org/support" 3227 | } 3228 | ], 3229 | "dependencies": { 3230 | "queue-microtask": "^1.2.2" 3231 | } 3232 | }, 3233 | "node_modules/safe-buffer": { 3234 | "version": "5.2.1", 3235 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3236 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3237 | "dev": true, 3238 | "funding": [ 3239 | { 3240 | "type": "github", 3241 | "url": "https://github.com/sponsors/feross" 3242 | }, 3243 | { 3244 | "type": "patreon", 3245 | "url": "https://www.patreon.com/feross" 3246 | }, 3247 | { 3248 | "type": "consulting", 3249 | "url": "https://feross.org/support" 3250 | } 3251 | ] 3252 | }, 3253 | "node_modules/safer-buffer": { 3254 | "version": "2.1.2", 3255 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3256 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3257 | "dev": true 3258 | }, 3259 | "node_modules/semver": { 3260 | "version": "5.7.1", 3261 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3262 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3263 | "dev": true, 3264 | "bin": { 3265 | "semver": "bin/semver" 3266 | } 3267 | }, 3268 | "node_modules/serialize-javascript": { 3269 | "version": "6.0.1", 3270 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", 3271 | "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", 3272 | "dev": true, 3273 | "dependencies": { 3274 | "randombytes": "^2.1.0" 3275 | } 3276 | }, 3277 | "node_modules/setprototypeof": { 3278 | "version": "1.2.0", 3279 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 3280 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 3281 | "dev": true 3282 | }, 3283 | "node_modules/shebang-command": { 3284 | "version": "2.0.0", 3285 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3286 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3287 | "dev": true, 3288 | "dependencies": { 3289 | "shebang-regex": "^3.0.0" 3290 | }, 3291 | "engines": { 3292 | "node": ">=8" 3293 | } 3294 | }, 3295 | "node_modules/shebang-regex": { 3296 | "version": "3.0.0", 3297 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3298 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3299 | "dev": true, 3300 | "engines": { 3301 | "node": ">=8" 3302 | } 3303 | }, 3304 | "node_modules/side-channel": { 3305 | "version": "1.0.4", 3306 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3307 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3308 | "dev": true, 3309 | "dependencies": { 3310 | "call-bind": "^1.0.0", 3311 | "get-intrinsic": "^1.0.2", 3312 | "object-inspect": "^1.9.0" 3313 | }, 3314 | "funding": { 3315 | "url": "https://github.com/sponsors/ljharb" 3316 | } 3317 | }, 3318 | "node_modules/signal-exit": { 3319 | "version": "3.0.7", 3320 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3321 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3322 | "dev": true 3323 | }, 3324 | "node_modules/sinon": { 3325 | "version": "15.0.1", 3326 | "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.0.1.tgz", 3327 | "integrity": "sha512-PZXKc08f/wcA/BMRGBze2Wmw50CWPiAH3E21EOi4B49vJ616vW4DQh4fQrqsYox2aNR/N3kCqLuB0PwwOucQrg==", 3328 | "dev": true, 3329 | "dependencies": { 3330 | "@sinonjs/commons": "^2.0.0", 3331 | "@sinonjs/fake-timers": "10.0.2", 3332 | "@sinonjs/samsam": "^7.0.1", 3333 | "diff": "^5.0.0", 3334 | "nise": "^5.1.2", 3335 | "supports-color": "^7.2.0" 3336 | }, 3337 | "funding": { 3338 | "type": "opencollective", 3339 | "url": "https://opencollective.com/sinon" 3340 | } 3341 | }, 3342 | "node_modules/smob": { 3343 | "version": "0.0.6", 3344 | "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", 3345 | "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", 3346 | "dev": true 3347 | }, 3348 | "node_modules/socket.io": { 3349 | "version": "4.6.1", 3350 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", 3351 | "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", 3352 | "dev": true, 3353 | "dependencies": { 3354 | "accepts": "~1.3.4", 3355 | "base64id": "~2.0.0", 3356 | "debug": "~4.3.2", 3357 | "engine.io": "~6.4.1", 3358 | "socket.io-adapter": "~2.5.2", 3359 | "socket.io-parser": "~4.2.1" 3360 | }, 3361 | "engines": { 3362 | "node": ">=10.0.0" 3363 | } 3364 | }, 3365 | "node_modules/socket.io-adapter": { 3366 | "version": "2.5.2", 3367 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", 3368 | "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", 3369 | "dev": true, 3370 | "dependencies": { 3371 | "ws": "~8.11.0" 3372 | } 3373 | }, 3374 | "node_modules/socket.io-parser": { 3375 | "version": "4.2.2", 3376 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", 3377 | "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", 3378 | "dev": true, 3379 | "dependencies": { 3380 | "@socket.io/component-emitter": "~3.1.0", 3381 | "debug": "~4.3.1" 3382 | }, 3383 | "engines": { 3384 | "node": ">=10.0.0" 3385 | } 3386 | }, 3387 | "node_modules/sort-keys": { 3388 | "version": "2.0.0", 3389 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", 3390 | "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", 3391 | "dev": true, 3392 | "dependencies": { 3393 | "is-plain-obj": "^1.0.0" 3394 | }, 3395 | "engines": { 3396 | "node": ">=4" 3397 | } 3398 | }, 3399 | "node_modules/source-map": { 3400 | "version": "0.6.1", 3401 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3402 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3403 | "dev": true, 3404 | "engines": { 3405 | "node": ">=0.10.0" 3406 | } 3407 | }, 3408 | "node_modules/source-map-support": { 3409 | "version": "0.5.21", 3410 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3411 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3412 | "dev": true, 3413 | "dependencies": { 3414 | "buffer-from": "^1.0.0", 3415 | "source-map": "^0.6.0" 3416 | } 3417 | }, 3418 | "node_modules/spdx-correct": { 3419 | "version": "3.2.0", 3420 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", 3421 | "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", 3422 | "dev": true, 3423 | "dependencies": { 3424 | "spdx-expression-parse": "^3.0.0", 3425 | "spdx-license-ids": "^3.0.0" 3426 | } 3427 | }, 3428 | "node_modules/spdx-exceptions": { 3429 | "version": "2.3.0", 3430 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 3431 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 3432 | "dev": true 3433 | }, 3434 | "node_modules/spdx-expression-parse": { 3435 | "version": "3.0.1", 3436 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3437 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3438 | "dev": true, 3439 | "dependencies": { 3440 | "spdx-exceptions": "^2.1.0", 3441 | "spdx-license-ids": "^3.0.0" 3442 | } 3443 | }, 3444 | "node_modules/spdx-license-ids": { 3445 | "version": "3.0.12", 3446 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", 3447 | "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", 3448 | "dev": true 3449 | }, 3450 | "node_modules/statuses": { 3451 | "version": "1.5.0", 3452 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3453 | "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", 3454 | "dev": true, 3455 | "engines": { 3456 | "node": ">= 0.6" 3457 | } 3458 | }, 3459 | "node_modules/streamroller": { 3460 | "version": "3.1.5", 3461 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", 3462 | "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", 3463 | "dev": true, 3464 | "dependencies": { 3465 | "date-format": "^4.0.14", 3466 | "debug": "^4.3.4", 3467 | "fs-extra": "^8.1.0" 3468 | }, 3469 | "engines": { 3470 | "node": ">=8.0" 3471 | } 3472 | }, 3473 | "node_modules/string-width": { 3474 | "version": "4.2.3", 3475 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3476 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3477 | "dev": true, 3478 | "dependencies": { 3479 | "emoji-regex": "^8.0.0", 3480 | "is-fullwidth-code-point": "^3.0.0", 3481 | "strip-ansi": "^6.0.1" 3482 | }, 3483 | "engines": { 3484 | "node": ">=8" 3485 | } 3486 | }, 3487 | "node_modules/strip-ansi": { 3488 | "version": "6.0.1", 3489 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3490 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3491 | "dev": true, 3492 | "dependencies": { 3493 | "ansi-regex": "^5.0.1" 3494 | }, 3495 | "engines": { 3496 | "node": ">=8" 3497 | } 3498 | }, 3499 | "node_modules/strip-json-comments": { 3500 | "version": "3.1.1", 3501 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3502 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3503 | "dev": true, 3504 | "engines": { 3505 | "node": ">=8" 3506 | }, 3507 | "funding": { 3508 | "url": "https://github.com/sponsors/sindresorhus" 3509 | } 3510 | }, 3511 | "node_modules/supports-color": { 3512 | "version": "7.2.0", 3513 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3514 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3515 | "dev": true, 3516 | "dependencies": { 3517 | "has-flag": "^4.0.0" 3518 | }, 3519 | "engines": { 3520 | "node": ">=8" 3521 | } 3522 | }, 3523 | "node_modules/supports-preserve-symlinks-flag": { 3524 | "version": "1.0.0", 3525 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3526 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3527 | "dev": true, 3528 | "engines": { 3529 | "node": ">= 0.4" 3530 | }, 3531 | "funding": { 3532 | "url": "https://github.com/sponsors/ljharb" 3533 | } 3534 | }, 3535 | "node_modules/terser": { 3536 | "version": "5.16.5", 3537 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", 3538 | "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", 3539 | "dev": true, 3540 | "dependencies": { 3541 | "@jridgewell/source-map": "^0.3.2", 3542 | "acorn": "^8.5.0", 3543 | "commander": "^2.20.0", 3544 | "source-map-support": "~0.5.20" 3545 | }, 3546 | "bin": { 3547 | "terser": "bin/terser" 3548 | }, 3549 | "engines": { 3550 | "node": ">=10" 3551 | } 3552 | }, 3553 | "node_modules/text-table": { 3554 | "version": "0.2.0", 3555 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3556 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 3557 | "dev": true 3558 | }, 3559 | "node_modules/tmp": { 3560 | "version": "0.2.1", 3561 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 3562 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 3563 | "dev": true, 3564 | "dependencies": { 3565 | "rimraf": "^3.0.0" 3566 | }, 3567 | "engines": { 3568 | "node": ">=8.17.0" 3569 | } 3570 | }, 3571 | "node_modules/to-regex-range": { 3572 | "version": "5.0.1", 3573 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3574 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3575 | "dev": true, 3576 | "dependencies": { 3577 | "is-number": "^7.0.0" 3578 | }, 3579 | "engines": { 3580 | "node": ">=8.0" 3581 | } 3582 | }, 3583 | "node_modules/toidentifier": { 3584 | "version": "1.0.1", 3585 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 3586 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 3587 | "dev": true, 3588 | "engines": { 3589 | "node": ">=0.6" 3590 | } 3591 | }, 3592 | "node_modules/type-check": { 3593 | "version": "0.4.0", 3594 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3595 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3596 | "dev": true, 3597 | "dependencies": { 3598 | "prelude-ls": "^1.2.1" 3599 | }, 3600 | "engines": { 3601 | "node": ">= 0.8.0" 3602 | } 3603 | }, 3604 | "node_modules/type-detect": { 3605 | "version": "4.0.8", 3606 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 3607 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 3608 | "dev": true, 3609 | "engines": { 3610 | "node": ">=4" 3611 | } 3612 | }, 3613 | "node_modules/type-fest": { 3614 | "version": "0.20.2", 3615 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 3616 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 3617 | "dev": true, 3618 | "engines": { 3619 | "node": ">=10" 3620 | }, 3621 | "funding": { 3622 | "url": "https://github.com/sponsors/sindresorhus" 3623 | } 3624 | }, 3625 | "node_modules/type-is": { 3626 | "version": "1.6.18", 3627 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3628 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3629 | "dev": true, 3630 | "dependencies": { 3631 | "media-typer": "0.3.0", 3632 | "mime-types": "~2.1.24" 3633 | }, 3634 | "engines": { 3635 | "node": ">= 0.6" 3636 | } 3637 | }, 3638 | "node_modules/ua-parser-js": { 3639 | "version": "0.7.34", 3640 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", 3641 | "integrity": "sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==", 3642 | "dev": true, 3643 | "funding": [ 3644 | { 3645 | "type": "opencollective", 3646 | "url": "https://opencollective.com/ua-parser-js" 3647 | }, 3648 | { 3649 | "type": "paypal", 3650 | "url": "https://paypal.me/faisalman" 3651 | } 3652 | ], 3653 | "engines": { 3654 | "node": "*" 3655 | } 3656 | }, 3657 | "node_modules/universalify": { 3658 | "version": "0.1.2", 3659 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3660 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3661 | "dev": true, 3662 | "engines": { 3663 | "node": ">= 4.0.0" 3664 | } 3665 | }, 3666 | "node_modules/unpipe": { 3667 | "version": "1.0.0", 3668 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3669 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 3670 | "dev": true, 3671 | "engines": { 3672 | "node": ">= 0.8" 3673 | } 3674 | }, 3675 | "node_modules/uri-js": { 3676 | "version": "4.4.1", 3677 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3678 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3679 | "dev": true, 3680 | "dependencies": { 3681 | "punycode": "^2.1.0" 3682 | } 3683 | }, 3684 | "node_modules/utils-merge": { 3685 | "version": "1.0.1", 3686 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3687 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 3688 | "dev": true, 3689 | "engines": { 3690 | "node": ">= 0.4.0" 3691 | } 3692 | }, 3693 | "node_modules/validate-npm-package-license": { 3694 | "version": "3.0.4", 3695 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3696 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3697 | "dev": true, 3698 | "dependencies": { 3699 | "spdx-correct": "^3.0.0", 3700 | "spdx-expression-parse": "^3.0.0" 3701 | } 3702 | }, 3703 | "node_modules/vary": { 3704 | "version": "1.1.2", 3705 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3706 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 3707 | "dev": true, 3708 | "engines": { 3709 | "node": ">= 0.8" 3710 | } 3711 | }, 3712 | "node_modules/void-elements": { 3713 | "version": "2.0.1", 3714 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 3715 | "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", 3716 | "dev": true, 3717 | "engines": { 3718 | "node": ">=0.10.0" 3719 | } 3720 | }, 3721 | "node_modules/which": { 3722 | "version": "2.0.2", 3723 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3724 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3725 | "dev": true, 3726 | "dependencies": { 3727 | "isexe": "^2.0.0" 3728 | }, 3729 | "bin": { 3730 | "node-which": "bin/node-which" 3731 | }, 3732 | "engines": { 3733 | "node": ">= 8" 3734 | } 3735 | }, 3736 | "node_modules/word-wrap": { 3737 | "version": "1.2.3", 3738 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3739 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3740 | "dev": true, 3741 | "engines": { 3742 | "node": ">=0.10.0" 3743 | } 3744 | }, 3745 | "node_modules/workerpool": { 3746 | "version": "6.2.1", 3747 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 3748 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 3749 | "dev": true 3750 | }, 3751 | "node_modules/wrap-ansi": { 3752 | "version": "7.0.0", 3753 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3754 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3755 | "dev": true, 3756 | "dependencies": { 3757 | "ansi-styles": "^4.0.0", 3758 | "string-width": "^4.1.0", 3759 | "strip-ansi": "^6.0.0" 3760 | }, 3761 | "engines": { 3762 | "node": ">=10" 3763 | }, 3764 | "funding": { 3765 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3766 | } 3767 | }, 3768 | "node_modules/wrappy": { 3769 | "version": "1.0.2", 3770 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3771 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3772 | "dev": true 3773 | }, 3774 | "node_modules/write-file-atomic": { 3775 | "version": "2.4.3", 3776 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 3777 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 3778 | "dev": true, 3779 | "dependencies": { 3780 | "graceful-fs": "^4.1.11", 3781 | "imurmurhash": "^0.1.4", 3782 | "signal-exit": "^3.0.2" 3783 | } 3784 | }, 3785 | "node_modules/write-json-file": { 3786 | "version": "3.2.0", 3787 | "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", 3788 | "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", 3789 | "dev": true, 3790 | "dependencies": { 3791 | "detect-indent": "^5.0.0", 3792 | "graceful-fs": "^4.1.15", 3793 | "make-dir": "^2.1.0", 3794 | "pify": "^4.0.1", 3795 | "sort-keys": "^2.0.0", 3796 | "write-file-atomic": "^2.4.2" 3797 | }, 3798 | "engines": { 3799 | "node": ">=6" 3800 | } 3801 | }, 3802 | "node_modules/write-pkg": { 3803 | "version": "4.0.0", 3804 | "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", 3805 | "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", 3806 | "dev": true, 3807 | "dependencies": { 3808 | "sort-keys": "^2.0.0", 3809 | "type-fest": "^0.4.1", 3810 | "write-json-file": "^3.2.0" 3811 | }, 3812 | "engines": { 3813 | "node": ">=8" 3814 | } 3815 | }, 3816 | "node_modules/write-pkg/node_modules/type-fest": { 3817 | "version": "0.4.1", 3818 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", 3819 | "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", 3820 | "dev": true, 3821 | "engines": { 3822 | "node": ">=6" 3823 | } 3824 | }, 3825 | "node_modules/ws": { 3826 | "version": "8.11.0", 3827 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", 3828 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", 3829 | "dev": true, 3830 | "engines": { 3831 | "node": ">=10.0.0" 3832 | }, 3833 | "peerDependencies": { 3834 | "bufferutil": "^4.0.1", 3835 | "utf-8-validate": "^5.0.2" 3836 | }, 3837 | "peerDependenciesMeta": { 3838 | "bufferutil": { 3839 | "optional": true 3840 | }, 3841 | "utf-8-validate": { 3842 | "optional": true 3843 | } 3844 | } 3845 | }, 3846 | "node_modules/y18n": { 3847 | "version": "5.0.8", 3848 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3849 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3850 | "dev": true, 3851 | "engines": { 3852 | "node": ">=10" 3853 | } 3854 | }, 3855 | "node_modules/yargs": { 3856 | "version": "16.2.0", 3857 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3858 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3859 | "dev": true, 3860 | "dependencies": { 3861 | "cliui": "^7.0.2", 3862 | "escalade": "^3.1.1", 3863 | "get-caller-file": "^2.0.5", 3864 | "require-directory": "^2.1.1", 3865 | "string-width": "^4.2.0", 3866 | "y18n": "^5.0.5", 3867 | "yargs-parser": "^20.2.2" 3868 | }, 3869 | "engines": { 3870 | "node": ">=10" 3871 | } 3872 | }, 3873 | "node_modules/yargs-parser": { 3874 | "version": "20.2.4", 3875 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 3876 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 3877 | "dev": true, 3878 | "engines": { 3879 | "node": ">=10" 3880 | } 3881 | }, 3882 | "node_modules/yargs-unparser": { 3883 | "version": "2.0.0", 3884 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3885 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3886 | "dev": true, 3887 | "dependencies": { 3888 | "camelcase": "^6.0.0", 3889 | "decamelize": "^4.0.0", 3890 | "flat": "^5.0.2", 3891 | "is-plain-obj": "^2.1.0" 3892 | }, 3893 | "engines": { 3894 | "node": ">=10" 3895 | } 3896 | }, 3897 | "node_modules/yargs-unparser/node_modules/is-plain-obj": { 3898 | "version": "2.1.0", 3899 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 3900 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 3901 | "dev": true, 3902 | "engines": { 3903 | "node": ">=8" 3904 | } 3905 | }, 3906 | "node_modules/yocto-queue": { 3907 | "version": "0.1.0", 3908 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3909 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3910 | "dev": true, 3911 | "engines": { 3912 | "node": ">=10" 3913 | }, 3914 | "funding": { 3915 | "url": "https://github.com/sponsors/sindresorhus" 3916 | } 3917 | } 3918 | } 3919 | } 3920 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ryanmorr/dominate", 3 | "description": "Declarative DOM building", 4 | "version": "1.1.2", 5 | "license": "Unlicense", 6 | "author": "Ryan Morr", 7 | "homepage": "https://github.com/ryanmorr/dominate", 8 | "repository": "github:ryanmorr/dominate", 9 | "bugs": "https://github.com/ryanmorr/dominate/issues", 10 | "keywords": [ 11 | "javascript", 12 | "html", 13 | "dom", 14 | "declarative" 15 | ], 16 | "type": "module", 17 | "main": "dist/cjs/dominate.js", 18 | "module": "dist/esm/dominate.js", 19 | "browser": "dist/umd/dominate.js", 20 | "exports": { 21 | ".": { 22 | "browser": "./dist/umd/dominate.js", 23 | "import": "./dist/esm/dominate.js", 24 | "require": "./dist/cjs/dominate.js" 25 | } 26 | }, 27 | "files": [ 28 | "dist" 29 | ], 30 | "scripts": { 31 | "lint": "eslint src/** test/specs/**", 32 | "test": "karma start karma.config.cjs", 33 | "build": "rollup -c" 34 | }, 35 | "devDependencies": { 36 | "@rollup/plugin-commonjs": "^24.0.1", 37 | "@rollup/plugin-node-resolve": "^15.0.1", 38 | "@rollup/plugin-terser": "^0.4.0", 39 | "chai": "^4.3.7", 40 | "eslint": "^8.33.0", 41 | "karma": "^6.4.1", 42 | "karma-chai": "^0.1.0", 43 | "karma-chrome-launcher": "^3.1.1", 44 | "karma-mocha": "^2.0.1", 45 | "karma-mocha-reporter": "^2.2.5", 46 | "karma-rollup-preprocessor": "^7.0.8", 47 | "karma-sinon": "^1.0.5", 48 | "mocha": "^10.2.0", 49 | "rollup": "^3.14.0", 50 | "rollup-plugin-generate-package-json": "^3.2.0", 51 | "sinon": "^15.0.1", 52 | "terser": "^5.16.3" 53 | }, 54 | "dependencies": { 55 | "htm": "^3.1.1" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs/promises'; 2 | import resolve from '@rollup/plugin-node-resolve'; 3 | import commonjs from '@rollup/plugin-commonjs'; 4 | import terser from '@rollup/plugin-terser'; 5 | import generatePackageJSON from 'rollup-plugin-generate-package-json'; 6 | 7 | export default async () => { 8 | const pkg = JSON.parse(await fs.readFile('package.json')); 9 | const banner = `/*! ${pkg.name} v${pkg.version} | ${pkg.homepage} */`; 10 | 11 | return { 12 | input: 'src/dominate.js', 13 | output: [ 14 | { 15 | banner, 16 | name: 'dominate', 17 | file: pkg.browser, 18 | format: 'umd' 19 | }, 20 | { 21 | banner, 22 | file: pkg.main, 23 | format: 'cjs', 24 | plugins: [ 25 | generatePackageJSON({ 26 | baseContents: { 27 | type: 'commonjs' 28 | }, 29 | outputFolder: 'dist/cjs' 30 | }) 31 | ] 32 | }, 33 | { 34 | banner, 35 | file: pkg.module, 36 | format: 'esm' 37 | } 38 | ], 39 | plugins: [ 40 | resolve(), 41 | commonjs(), 42 | terser() 43 | ] 44 | }; 45 | }; 46 | -------------------------------------------------------------------------------- /src/dominate.js: -------------------------------------------------------------------------------- 1 | import htm from 'htm'; 2 | 3 | const html = htm.bind(createElement); 4 | 5 | const REF_KEY = Symbol('ref'); 6 | const RESULT_KEY = Symbol('result'); 7 | const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; 8 | const SVG_TAGS = [ 9 | 'svg', 10 | 'altGlyph', 11 | 'altGlyphDef', 12 | 'altGlyphItem', 13 | 'animate', 14 | 'animateColor', 15 | 'animateMotion', 16 | 'animateTransform', 17 | 'circle', 18 | 'clipPath', 19 | 'color-profile', 20 | 'cursor', 21 | 'defs', 22 | 'desc', 23 | 'ellipse', 24 | 'feBlend', 25 | 'feColorMatrix', 26 | 'feComponentTransfer', 27 | 'feComposite', 28 | 'feConvolveMatrix', 29 | 'feDiffuseLighting', 30 | 'feDisplacementMap', 31 | 'feDistantLight', 32 | 'feFlood', 33 | 'feFuncA', 34 | 'feFuncB', 35 | 'feFuncG', 36 | 'feFuncR', 37 | 'feGaussianBlur', 38 | 'feImage', 39 | 'feMerge', 40 | 'feMergeNode', 41 | 'feMorphology', 42 | 'feOffset', 43 | 'fePointLight', 44 | 'feSpecularLighting', 45 | 'feSpotLight', 46 | 'feTile', 47 | 'feTurbulence', 48 | 'filter', 49 | 'font', 50 | 'font-face', 51 | 'font-face-format', 52 | 'font-face-name', 53 | 'font-face-src', 54 | 'font-face-uri', 55 | 'foreignObject', 56 | 'g', 57 | 'glyph', 58 | 'glyphRef', 59 | 'hkern', 60 | 'image', 61 | 'line', 62 | 'linearGradient', 63 | 'marker', 64 | 'mask', 65 | 'metadata', 66 | 'missing-glyph', 67 | 'mpath', 68 | 'path', 69 | 'pattern', 70 | 'polygon', 71 | 'polyline', 72 | 'radialGradient', 73 | 'rect', 74 | 'set', 75 | 'stop', 76 | 'switch', 77 | 'symbol', 78 | 'text', 79 | 'textPath', 80 | 'title', 81 | 'tref', 82 | 'tspan', 83 | 'use', 84 | 'view', 85 | 'vkern' 86 | ]; 87 | 88 | function createClass(obj) { 89 | let output = ''; 90 | if (typeof obj === 'string') { 91 | return obj; 92 | } 93 | if (Array.isArray(obj) && obj.length > 0) { 94 | for (let i = 0, len = obj.length, tmp; i < len; i++) { 95 | if ((tmp = createClass(obj[i])) !== '') { 96 | output += (output && ' ') + tmp; 97 | } 98 | } 99 | } else { 100 | for (const cls in obj) { 101 | if (obj[cls]) { 102 | output += (output && ' ') + cls; 103 | } 104 | } 105 | } 106 | return output; 107 | } 108 | 109 | function arrayToFrag(nodes) { 110 | return nodes.filter((node) => { 111 | return node != null && typeof node !== 'boolean'; 112 | }).reduce((frag, node) => { 113 | frag.appendChild(getNode(node)); 114 | return frag; 115 | }, document.createDocumentFragment()); 116 | } 117 | 118 | function getNode(node) { 119 | if (typeof node === 'object' && RESULT_KEY in node) { 120 | return node[RESULT_KEY]; 121 | } 122 | if (Array.isArray(node)) { 123 | return arrayToFrag(node); 124 | } 125 | if (typeof node === 'number') { 126 | node = String(node); 127 | } 128 | if (typeof node === 'string') { 129 | return document.createTextNode(node); 130 | } 131 | return node; 132 | } 133 | 134 | function setStyle(element, name, value) { 135 | if (name.startsWith('--')) { 136 | element.style.setProperty(name, value == null ? '' : value); 137 | } else if (value == null) { 138 | element.style[name] = ''; 139 | } else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(name)) { 140 | element.style[name] = value; 141 | } else { 142 | element.style[name] = value + 'px'; 143 | } 144 | } 145 | 146 | function setAttribute(element, name, value, isSvg) { 147 | if (name === 'ref') { 148 | element[REF_KEY] = value; 149 | return; 150 | } 151 | if (!isSvg && (name === 'class' || name === 'className')) { 152 | element.className = createClass(value); 153 | } else if (name === 'style') { 154 | if (typeof value === 'string') { 155 | element.style.cssText = value; 156 | } else if (value) { 157 | for (const key in value) { 158 | setStyle(element, key, value[key]); 159 | } 160 | } 161 | } else if (name.startsWith('on') && typeof value === 'function') { 162 | name = (name.toLowerCase() in element) ? name.toLowerCase().slice(2) : name.slice(2); 163 | element.addEventListener(name, value); 164 | } else { 165 | if ( 166 | !isSvg && 167 | name !== 'width' && 168 | name !== 'height' && 169 | name !== 'href' && 170 | name !== 'list' && 171 | name !== 'form' && 172 | name !== 'tabIndex' && 173 | name !== 'download' && 174 | name in element 175 | ) { 176 | try { 177 | element[name] = value == null ? '' : value; 178 | return; 179 | } catch (e) {} // eslint-disable-line no-empty 180 | } 181 | if (value != null && (value !== false || name.indexOf('-') != -1)) { 182 | element.setAttribute(name, value); 183 | } 184 | } 185 | } 186 | 187 | function createElement(nodeName, attributes, ...children) { 188 | this[0] = 3; // Disable htm caching 189 | if (typeof nodeName === 'function') { 190 | return nodeName(attributes, children); 191 | } 192 | const isSvg = SVG_TAGS.includes(nodeName); 193 | const element = isSvg 194 | ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) 195 | : document.createElement(nodeName); 196 | if (attributes) { 197 | for (const name in attributes) { 198 | setAttribute(element, name, attributes[name], isSvg); 199 | } 200 | } 201 | if (children) { 202 | element.appendChild(arrayToFrag(children)); 203 | } 204 | return element; 205 | } 206 | 207 | export default function dominate(...args) { 208 | let result = html(...args); 209 | result = Array.isArray(result) ? arrayToFrag(result) : getNode(result); 210 | if (result.nodeType !== 3) { 211 | const refs = {}; 212 | [result, ...result.querySelectorAll('*')].forEach((el) => { 213 | if (REF_KEY in el) { 214 | refs[el[REF_KEY]] = el; 215 | } 216 | }); 217 | const hasRefs = Object.keys(refs).length > 0; 218 | if (hasRefs) { 219 | refs[RESULT_KEY] = result; 220 | return refs; 221 | } 222 | } 223 | return result; 224 | } 225 | -------------------------------------------------------------------------------- /test/specs/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "expect": true, 7 | "sinon": true 8 | }, 9 | "rules": { 10 | "max-len": 0 11 | } 12 | } -------------------------------------------------------------------------------- /test/specs/dominate.js: -------------------------------------------------------------------------------- 1 | import dominate from '../../src/dominate'; 2 | 3 | describe('dominate', () => { 4 | it('should create an element', () => { 5 | const el = dominate`
`; 6 | 7 | expect(el.nodeType).to.equal(1); 8 | expect(el.outerHTML).to.equal('
'); 9 | expect(el.ownerDocument).to.equal(document); 10 | }); 11 | 12 | it('should create a text node', () => { 13 | const node = dominate`foo`; 14 | 15 | expect(node.nodeType).to.equal(3); 16 | expect(node.nodeName.toLowerCase()).to.equal('#text'); 17 | expect(node.nodeValue).to.equal('foo'); 18 | expect(node.ownerDocument).to.equal(document); 19 | }); 20 | 21 | it('should not render null', () => { 22 | const el = dominate`
${null}
`; 23 | 24 | expect(el.innerHTML).to.equal(''); 25 | expect(el.childNodes).to.have.length(0); 26 | }); 27 | 28 | it('should not render undefined', () => { 29 | const el = dominate`
${undefined}
`; 30 | 31 | expect(el.innerHTML).to.equal(''); 32 | expect(el.childNodes).to.have.length(0); 33 | }); 34 | 35 | it('should not render boolean true', () => { 36 | const el = dominate`
${true}
`; 37 | 38 | expect(el.innerHTML).to.equal(''); 39 | expect(el.childNodes).to.have.length(0); 40 | }); 41 | 42 | it('should not render boolean false', () => { 43 | const el = dominate`
${false}
`; 44 | 45 | expect(el.innerHTML).to.equal(''); 46 | expect(el.childNodes).to.have.length(0); 47 | }); 48 | 49 | it('should render NaN as text content', () => { 50 | const el = dominate`
${NaN}
`; 51 | 52 | expect(el.innerHTML).to.equal('NaN'); 53 | }); 54 | 55 | it('should render zero as text content', () => { 56 | const el = dominate`
${0}
`; 57 | 58 | expect(el.innerHTML).to.equal('0'); 59 | }); 60 | 61 | it('should render non-zero numbers as text content', () => { 62 | const el = dominate`
${12}
`; 63 | 64 | expect(el.innerHTML).to.equal('12'); 65 | }); 66 | 67 | it('should create multiple elements and return a document fragment', () => { 68 | const frag = dominate`
`; 69 | 70 | expect(frag.nodeType).to.equal(11); 71 | expect(frag.childNodes.length).to.equal(2); 72 | expect(frag.childNodes[0].outerHTML).to.equal('
'); 73 | expect(frag.childNodes[1].outerHTML).to.equal(''); 74 | expect(frag.ownerDocument).to.equal(document); 75 | }); 76 | 77 | it('should support a mix of multiple elements and text nodes', () => { 78 | const frag = dominate`foo
bar`; 79 | 80 | expect(frag.nodeType).to.equal(11); 81 | expect(frag.childNodes.length).to.equal(3); 82 | expect(frag.childNodes[0].nodeValue).to.equal('foo'); 83 | expect(frag.childNodes[1].outerHTML).to.equal('
'); 84 | expect(frag.childNodes[2].nodeValue).to.equal('bar'); 85 | }); 86 | 87 | it('should support self-closing tags', () => { 88 | const el1 = dominate`
`; 89 | const el2 = dominate`
`; 90 | 91 | expect(el1.outerHTML).to.equal('
'); 92 | expect(el2.outerHTML).to.equal('
'); 93 | }); 94 | 95 | it('should support auto-closing tags', () => { 96 | const el = dominate`
`; 97 | 98 | expect(el.outerHTML).to.equal('
'); 99 | }); 100 | 101 | it('should support a child text node', () => { 102 | const el = dominate`
foo
`; 103 | 104 | expect(el.outerHTML).to.equal('
foo
'); 105 | }); 106 | 107 | it('should support a child element', () => { 108 | let el = dominate`
`; 109 | expect(el.outerHTML).to.equal('
'); 110 | 111 | el = dominate`
`; 112 | expect(el.outerHTML).to.equal('
'); 113 | }); 114 | 115 | it('should support multiple element children', () => { 116 | const el = dominate`

`; 117 | 118 | expect(el.outerHTML).to.equal('

'); 119 | }); 120 | 121 | it('should support a dynamic text node', () => { 122 | const el = dominate`
${'foo'}
`; 123 | 124 | expect(el.outerHTML).to.equal('
foo
'); 125 | }); 126 | 127 | it('should support a dynamic element', () => { 128 | let el = dominate`
${document.createElement('span')}
`; 129 | expect(el.outerHTML).to.equal('
'); 130 | 131 | el = dominate`
${dominate``}
`; 132 | expect(el.outerHTML).to.equal('
'); 133 | }); 134 | 135 | it('should support mixed type children', () => { 136 | let el = dominate`
${'foo'}bar
`; 137 | expect(el.outerHTML).to.equal('
foobar
'); 138 | 139 | el = dominate`
before${'foo'}after
`; 140 | expect(el.outerHTML).to.equal('
beforefooafter
'); 141 | 142 | el = dominate`
foo
`; 143 | expect(el.outerHTML).to.equal('
foo
'); 144 | 145 | el = dominate`
foo
`; 146 | expect(el.outerHTML).to.equal('
foo
'); 147 | 148 | el = dominate`
foobar
`; 149 | expect(el.outerHTML).to.equal('
foobar
'); 150 | 151 | el = dominate`
foo
`; 152 | expect(el.outerHTML).to.equal('
foo
'); 153 | 154 | el = dominate`
before${document.createElement('span')}
`; 155 | expect(el.outerHTML).to.equal('
before
'); 156 | 157 | el = dominate`
${document.createElement('span')}after
`; 158 | expect(el.outerHTML).to.equal('
after
'); 159 | 160 | el = dominate`
before${document.createElement('span')}after
`; 161 | expect(el.outerHTML).to.equal('
beforeafter
'); 162 | 163 | el = dominate`
before${dominate``}
`; 164 | expect(el.outerHTML).to.equal('
before
'); 165 | 166 | el = dominate`
${dominate``}after
`; 167 | expect(el.outerHTML).to.equal('
after
'); 168 | 169 | el = dominate`
before${dominate``}after
`; 170 | expect(el.outerHTML).to.equal('
beforeafter
'); 171 | 172 | el = dominate` 173 |
174 | foo 175 | ${'bar'} 176 | 177 | ${''} 178 | baz 179 | ${document.createElement('p')} 180 | ${dominate``} 181 | qux 182 |
183 | `; 184 | expect(el.outerHTML).to.equal('
foobar<span></span>baz

qux
'); 185 | }); 186 | 187 | it('should support an array of children', () => { 188 | const children = [ 189 | 'foo', 190 | dominate`
bar
`, 191 | document.createElement('span'), 192 | ]; 193 | 194 | const el = dominate`
${children}
`; 195 | expect(el.outerHTML).to.equal('
foo
bar
'); 196 | }); 197 | 198 | it('should support a boolean attribute', () => { 199 | const el = dominate``; 200 | 201 | expect(el.disabled).to.equal(true); 202 | expect(el.outerHTML).to.equal(''); 203 | }); 204 | 205 | it('should support an attribute with a static value', () => { 206 | const el = dominate`
`; 207 | 208 | expect(el.outerHTML).to.equal('
'); 209 | }); 210 | 211 | it('should support an attribute with an empty value', () => { 212 | const el = dominate`
`; 213 | 214 | expect(el.outerHTML).to.equal('
'); 215 | }); 216 | 217 | it('should support an attribute with a dynamic value', () => { 218 | const el = dominate`
`; 219 | 220 | expect(el.outerHTML).to.equal('
'); 221 | }); 222 | 223 | it('should support an attribute with a quoted dynamic value', () => { 224 | let el = dominate`
`; 225 | expect(el.outerHTML).to.equal('
'); 226 | }); 227 | 228 | it('should support attributes with no value', () => { 229 | const el = dominate`
`; 230 | 231 | expect(el.outerHTML).to.equal('
'); 232 | }); 233 | 234 | it('should support hyphens in attribute names', () => { 235 | const el = dominate`
`; 236 | 237 | expect(el.dataset.foo).to.equal('bar'); 238 | expect(el.outerHTML).to.equal('
'); 239 | }); 240 | 241 | it('should set the class attribute with an array', () => { 242 | const el = dominate`
`; 243 | 244 | expect(el.className).to.equal('foo bar baz'); 245 | }); 246 | 247 | it('should set the class attribute with an object', () => { 248 | const el = dominate`
`; 249 | 250 | expect(el.className).to.equal('foo baz'); 251 | }); 252 | 253 | it('should alias className to class', () => { 254 | const el = dominate`
`; 255 | 256 | expect(el.className).to.equal('foo'); 257 | }); 258 | 259 | it('should support CSS styles as an object', () => { 260 | const styles = { 261 | width: '2em', 262 | gridRowStart: 1, 263 | 'padding-top': 5, 264 | 'padding-bottom': '0.7ex', 265 | top: 100, 266 | left: '100%' 267 | }; 268 | 269 | const el = dominate`
`; 270 | 271 | expect(el.style.cssText).to.equal('width: 2em; grid-row-start: 1; padding-top: 5px; padding-bottom: 0.7ex; top: 100px; left: 100%;'); 272 | }); 273 | 274 | it('should support CSS styles as a string', () => { 275 | const el = dominate`
`; 276 | 277 | expect(el.outerHTML).to.equal('
'); 278 | }); 279 | 280 | it('should support CSS custom properties', () => { 281 | const el = dominate`
`; 282 | document.body.appendChild(el); 283 | 284 | expect(el.style.color).to.equal('var(--color)'); 285 | expect(window.getComputedStyle(el).getPropertyValue('color')).to.equal('rgb(255, 0, 0)'); 286 | expect(window.getComputedStyle(el).getPropertyValue('--color')).to.equal('red'); 287 | expect(el.outerHTML).to.equal('
'); 288 | document.body.removeChild(el); 289 | }); 290 | 291 | it('should not add "px" suffix for custom properties', () => { 292 | const el = dominate`
test
`; 293 | document.body.appendChild(el); 294 | 295 | expect(el.style.width).to.equal('var(--foo)'); 296 | expect(window.getComputedStyle(el).getPropertyValue('--foo')).to.equal('100px'); 297 | document.body.removeChild(el); 298 | }); 299 | 300 | it('should support DOM properties', () => { 301 | const el = dominate``; 302 | 303 | expect(el.value).to.equal('foo'); 304 | }); 305 | 306 | it('should support spread attributes', () => { 307 | let el = dominate`
`; 308 | expect(el.outerHTML).to.equal('
'); 309 | }); 310 | 311 | it('should support event listeners', (done) => { 312 | const event = new MouseEvent('click'); 313 | const onClick = (e) => { 314 | expect(e).to.equal(event); 315 | document.body.removeChild(el); 316 | done(); 317 | }; 318 | 319 | const el = dominate`
`; 320 | document.body.appendChild(el); 321 | el.dispatchEvent(event); 322 | }); 323 | 324 | it('should support camel-case event names', (done) => { 325 | const event = new MouseEvent('mousedown'); 326 | const onMouseDown = (e) => { 327 | expect(e).to.equal(event); 328 | document.body.removeChild(el); 329 | done(); 330 | }; 331 | 332 | const el = dominate`
`; 333 | document.body.appendChild(el); 334 | el.dispatchEvent(event); 335 | }); 336 | 337 | it('should support custom events', (done) => { 338 | let event = new CustomEvent('foo'); 339 | 340 | const callback = sinon.spy((e) => { 341 | expect(e).to.equal(event); 342 | document.body.removeChild(el); 343 | done(); 344 | }); 345 | 346 | const el = dominate`
`; 347 | document.body.appendChild(el); 348 | el.dispatchEvent(event); 349 | }); 350 | 351 | it('should support the form attribute', () => { 352 | const el = dominate` 353 |
354 |
355 | 356 | 357 |
358 | `; 359 | 360 | document.body.appendChild(el); 361 | 362 | const form = el.childNodes[0]; 363 | const button = el.childNodes[1]; 364 | const input = el.childNodes[2]; 365 | 366 | expect(button).to.have.property('form', form); 367 | expect(input).to.have.property('form', form); 368 | 369 | document.body.removeChild(el); 370 | }); 371 | 372 | it('should clear falsy input values', () => { 373 | const el = dominate` 374 |
375 | 376 | 377 | 378 | 379 |
380 | `; 381 | 382 | expect(el.children[0]).to.have.property('value', '0'); 383 | expect(el.children[1]).to.have.property('value', 'false'); 384 | expect(el.children[2]).to.have.property('value', ''); 385 | expect(el.children[3]).to.have.property('value', ''); 386 | }); 387 | 388 | it('should support falsy DOM properties', () => { 389 | const el1 = dominate` 390 |
391 | 392 | 393 | 394 | `; 395 | 396 | expect(el1.innerHTML).to.equal('
'); 397 | 398 | const el2 = dominate` 399 |
400 | 401 | 402 | 403 | `; 404 | 405 | expect(el2.innerHTML).to.equal('
'); 406 | 407 | const el3 = dominate` 408 |
409 | 410 | 411 | 412 | `; 413 | 414 | expect(el3.innerHTML).to.equal('
'); 415 | }); 416 | 417 | it('should set an enumerable boolean attribute', () => { 418 | const el = dominate``; 419 | 420 | expect(el.spellcheck).to.equal(false); 421 | }); 422 | 423 | it('should set the download attribute', () => { 424 | const el1 = dominate``; 425 | 426 | expect(el1.getAttribute('download')).to.equal(''); 427 | 428 | const el2 = dominate``; 429 | 430 | expect(el2.getAttribute('download')).to.equal(null); 431 | }); 432 | 433 | it('should support false string aria attributes', () => { 434 | const el = dominate`
`; 435 | 436 | expect(el.getAttribute('aria-checked')).to.equal('false'); 437 | }); 438 | 439 | it('should support false aria attributes', () => { 440 | const el = dominate`
`; 441 | 442 | expect(el.getAttribute('aria-checked')).to.equal('false'); 443 | }); 444 | 445 | it('should support false data attributes', () => { 446 | const el = dominate`
`; 447 | 448 | expect(el.getAttribute('data-checked')).to.equal('false'); 449 | }); 450 | 451 | it('should set checked attribute on custom elements without checked property', () => { 452 | const el = dominate``; 453 | 454 | expect(el.outerHTML).to.equal(''); 455 | }); 456 | 457 | it('should set value attribute on custom elements without value property', () => { 458 | const el = dominate``; 459 | 460 | expect(el.outerHTML).to.equal(''); 461 | }); 462 | 463 | it('should mask value on password input elements', () => { 464 | const el = dominate``; 465 | 466 | expect(el.outerHTML).to.equal(''); 467 | }); 468 | 469 | it('should unset href if null or undefined', () => { 470 | const el = dominate` 471 |
472 | href="#" 473 | href="undefined" 474 | href="null" 475 | href="''" 476 |
477 | `; 478 | 479 | const links = el.querySelectorAll('a'); 480 | expect(links[0].hasAttribute('href')).to.equal(true); 481 | expect(links[1].hasAttribute('href')).to.equal(false); 482 | expect(links[2].hasAttribute('href')).to.equal(false); 483 | expect(links[3].hasAttribute('href')).to.equal(true); 484 | }); 485 | 486 | it('should not set tagName', () => { 487 | expect(() => dominate``).not.to.throw(); 488 | }); 489 | 490 | it('should not throw when setting size to an invalid value', () => { 491 | expect(() => dominate``).to.not.throw(); 492 | expect(() => dominate``).to.not.throw(); 493 | expect(() => dominate``).to.not.throw(); 494 | }); 495 | 496 | it('should escape HTML characters', () => { 497 | const el = dominate`
${'bar'}
`; 498 | 499 | expect(el.outerHTML).to.equal('
<i id="foo" class=\'bar\'>bar</i>
'); 500 | }); 501 | 502 | it('should support SVG', () => { 503 | const svg = dominate``; 504 | 505 | expect(svg.outerHTML).to.equal(''); 506 | 507 | expect(svg.nodeType).to.equal(1); 508 | expect(svg.namespaceURI).to.equal('http://www.w3.org/2000/svg'); 509 | expect(svg).to.be.instanceof(SVGElement); 510 | 511 | const circle = svg.querySelector('circle'); 512 | expect(circle.nodeType).to.equal(1); 513 | expect(circle.getAttribute('class')).to.equal('foo'); 514 | expect(circle.namespaceURI).to.equal('http://www.w3.org/2000/svg'); 515 | expect(circle).to.be.instanceof(SVGElement); 516 | }); 517 | 518 | it('should execute scripts', () => { 519 | const el = dominate``; 520 | expect(window.foo).to.not.exist; 521 | document.body.appendChild(el); 522 | expect(window.foo).to.exist; 523 | delete window.foo; 524 | }); 525 | 526 | it('should support custom elements', () => { 527 | const customElementSpy = sinon.spy(); 528 | 529 | customElements.define('foo-bar', class FooBar extends HTMLElement { 530 | constructor() { 531 | super(); 532 | customElementSpy(); 533 | } 534 | }); 535 | 536 | const el = dominate` 537 | 538 | `; 539 | 540 | expect(el.nodeType).to.equal(1); 541 | expect(el.nodeName).to.equal('FOO-BAR'); 542 | expect(el.outerHTML).to.equal(''); 543 | expect(customElementSpy.callCount).to.equal(1); 544 | }); 545 | 546 | it('should support functional components', () => { 547 | const Component = (attributes, children) => { 548 | expect(attributes).to.deep.equal({id: 'foo', class: 'bar'}); 549 | expect(children).to.be.an('array'); 550 | expect(children).to.have.length(1); 551 | expect(children[0].outerHTML).to.equal('baz'); 552 | return dominate`
${children[0]}
`; 553 | }; 554 | 555 | const el = dominate` 556 | <${Component} id="foo" class="bar"> 557 | baz 558 | 559 | `; 560 | 561 | expect(el.nodeType).to.equal(1); 562 | expect(el.outerHTML).to.equal('
baz
'); 563 | }); 564 | 565 | it('should support returning multiple elements via ref attributes', () => { 566 | const { foo, bar, baz } = dominate` 567 |
568 | 569 | 570 |
571 | `; 572 | 573 | expect(foo.outerHTML).to.equal('
'); 574 | expect(bar.outerHTML).to.equal(''); 575 | expect(baz.outerHTML).to.equal(''); 576 | }); 577 | 578 | it('should support refs for document fragments', () => { 579 | const { foo, bar } = dominate` 580 |
581 | 582 | `; 583 | 584 | expect(foo.outerHTML).to.equal('
'); 585 | expect(bar.outerHTML).to.equal(''); 586 | }); 587 | 588 | it('should support inner refs', () => { 589 | const Component = () => dominate``; 590 | 591 | const { foo, bar, baz } = dominate` 592 |
593 | ${dominate``} 594 | <${Component} /> 595 |
596 | `; 597 | 598 | expect(foo.outerHTML).to.equal('
'); 599 | expect(bar.outerHTML).to.equal(''); 600 | expect(baz.outerHTML).to.equal(''); 601 | }); 602 | 603 | it('should not cache elements with identical markup', () => { 604 | const text = () => dominate`foo`; 605 | const element = () => dominate`
`; 606 | const frag = () => dominate`
`; 607 | 608 | expect(dominate`foo`).to.not.equal(dominate`foo`); 609 | expect(dominate`
`).to.not.equal(dominate`
`); 610 | expect(dominate`
`).to.not.equal(dominate`
`); 611 | expect(text()).to.not.equal(text()); 612 | expect(element()).to.not.equal(element()); 613 | expect(frag()).to.not.equal(frag()); 614 | }); 615 | }); 616 | --------------------------------------------------------------------------------