├── .github └── workflows │ └── test.yml ├── .gitignore ├── .npmrc ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── docs ├── assets │ ├── css │ │ ├── docs.css │ │ └── old.css │ └── js │ │ └── docs.js ├── dist │ ├── input-spinner.css │ ├── input-spinner.js │ ├── input-spinner.min.css │ ├── input-spinner.min.css.map │ └── input-spinner.min.js ├── example.html └── index.html ├── package-lock.json ├── package.json ├── src ├── input-spinner.js └── input-spinner.less └── tests ├── index.html ├── karma.conf.js └── unit └── unit.js /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [push] 4 | 5 | jobs: 6 | run: 7 | name: Run tests 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - name: Clone repository 12 | uses: actions/checkout@v4 13 | 14 | - name: Setup Node.js 15 | uses: actions/setup-node@v4 16 | with: 17 | node-version: 22 18 | 19 | - name: Install npm dependencies 20 | run: npm ci 21 | 22 | - name: Run tests 23 | run: npm run test 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /dist/ 3 | /*-dist.zip 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | ignore-prepublish=true 2 | lockfile-version=3 -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## Important notes 4 | Please don't edit files in the `dist` subdirectory as they are generated via Grunt. You'll find source code in the `src` subdirectory! 5 | 6 | ### Code style 7 | Regarding code style like indentation and whitespace, **follow the conventions you see used in the source already.** 8 | 9 | ## Modifying the code 10 | First, ensure that you have the latest [Node.js](https://nodejs.org) and [npm](https://npmjs.com) installed. 11 | 12 | 13 | 1. Fork and clone the repo 14 | 1. Run `npm install` to install all dependencies 15 | 1. Run `npm run test` 16 | 17 | ## Submitting pull requests 18 | 19 | 1. Create a new branch, please don't work in your `master` branch directly. 20 | 1. Add failing tests for the change you want to make. Run `npm run test` to see the tests fail. 21 | 1. Fix stuff. 22 | 1. Run `npm run test` to see if the tests pass. Repeat steps 2-4 until done. 23 | 1. Open `tests/index.html` unit test file(s) in actual browser to ensure tests pass everywhere. 24 | 1. Update the documentation to reflect any changes. 25 | 1. Push to your fork and submit a pull request. 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright Vasilii A., 2015-2018 4 | Copyright xixilive, 2013-2015 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of 7 | this software and associated documentation files (the "Software"), to deal in 8 | the Software without restriction, including without limitation the rights to 9 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 10 | the Software, and to permit persons to whom the Software is furnished to do so, 11 | subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 18 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 19 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 20 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Input Spinner](https://vsn4ik.github.io/input-spinner/) 2 | 3 | [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) 4 | [![Build Status](https://github.com/vsn4ik/input-spinner/actions/workflows/test.yml/badge.svg)](https://github.com/vsn4ik/input-spinner/actions/workflows/test.yml) 5 | 6 | 7 | A Number-Spinner, Support keyboard operations and continuous changing. 8 | 9 | ## Basic usage, it's very simple 10 | ```html 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 |
20 | ``` 21 | 22 | ## Getting Started 23 | Download the [production version][production] or the [development version][development]. 24 | 25 | In your web page: 26 | 27 | ```html 28 | 29 | 30 | 40 | 41 |
42 | 43 | 44 | 45 |
46 | ``` 47 | 48 | ## Documentation 49 | ### Spinner options 50 | 51 | #### delay 52 | > delay to fire changed event in millisecond, default is 500. 53 | 54 | #### changed 55 | > changed event handler, the changed event is a lazy-mode event, default is null. 56 | 57 | #### changing 58 | > changing event handler, the changing event will be fired immediately, default is null. 59 | 60 | ### Spinning Options(setup via data-api) 61 | #### min 62 | > the minimum value, default is null. 63 | 64 | #### max 65 | > the maximum value, default is null. 66 | 67 | #### step 68 | > the changing-value of per-step, if passed as a function, the function will be called within the spinner object scope. 69 | 70 | #### precision 71 | > the precision of value 72 | 73 | ### Built-in rules 74 | ```javascript 75 | currency: { min: 0.00, max: null, step: 0.01, precision: 2 }, 76 | quantity: { min: 1, max: 999, step: 1, precision:0 }, 77 | percent: { min: 1, max: 100, step: 1, precision:0 }, 78 | month: { min: 1, max: 12, step: 1, precision:0 }, 79 | day: { min: 1, max: 31, step: 1, precision:0 }, 80 | hour: { min: 0, max: 23, step: 1, precision:0 }, 81 | minute: { min: 1, max: 59, step: 1, precision:0 }, 82 | second: { min: 1, max: 59, step: 1, precision:0 } 83 | ``` 84 | Usage: 85 | ```html 86 | 87 | ``` 88 | 89 | ## Examples 90 | 91 | ### Work with Bootstrap and Font Awesome 92 | 93 | ```html 94 | 95 | 96 |
97 | 98 | 99 | 100 | 101 | 102 |
103 | ``` 104 | 105 | ### Customize 106 | 107 | #### specify a field 108 | 109 | ```html 110 |
111 | 112 | 113 |
114 | ``` 115 | 116 | #### Use hidden field 117 | 118 | ```html 119 |
120 | 121 | 122 | - 123 | + 124 |
125 | 126 | 131 | ``` 132 | 133 | #### pass step options as a function 134 | ```javascript 135 | // To skip 0 136 | $('#spinner').spinner({ 137 | step: function(dir) { 138 | // 'this' references to the spinner object 139 | if ((this.oldValue === 1 && dir === 'down') || (this.oldValue === -1 && dir === 'up')) { 140 | return 2; 141 | } 142 | return 1; 143 | } 144 | }); 145 | 146 | // or use API syntax 147 | $('#spinner').spinner('step', function(dir) { 148 | // your logic here 149 | }); 150 | ``` 151 | 152 | 153 | ## Copyright and license 154 | 155 | Copyright Vasilii A., 2015–2018 156 | Copyright xixilive, 2013–2015 157 | 158 | Licensed under [the MIT License][license]. 159 | 160 | [license]: https://github.com/vsn4ik/input-spinner/blob/master/LICENSE 161 | [development]: https://raw.githubusercontent.com/vsn4ik/input-spinner/master/dist/input-spinner.min.js 162 | [production]: https://raw.githubusercontent.com/vsn4ik/input-spinner/master/dist/input-spinner.js 163 | -------------------------------------------------------------------------------- /docs/assets/css/docs.css: -------------------------------------------------------------------------------- 1 | .gap-2 { 2 | gap: 0.5rem; 3 | } 4 | 5 | @property --stargazers { 6 | syntax: ""; 7 | initial-value: 0; 8 | inherits: false; 9 | } 10 | 11 | .stargazers-count { 12 | transition: --stargazers 1s; 13 | counter-reset: stargazers var(--stargazers); 14 | } 15 | 16 | .stargazers-count::after { 17 | content: counter(stargazers); 18 | } 19 | -------------------------------------------------------------------------------- /docs/assets/css/old.css: -------------------------------------------------------------------------------- 1 | /*@import url(https://fonts.googleapis.com/css?family=Arvo:400,700,400italic);*/ 2 | 3 | /* MeyerWeb Reset */ 4 | 5 | html, body, div, span, applet, object, iframe, 6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 7 | a, abbr, acronym, address, big, cite, code, 8 | del, dfn, em, img, ins, kbd, q, s, samp, 9 | small, strike, strong, sub, sup, tt, var, 10 | b, u, i, center, 11 | dl, dt, dd, ol, ul, li, 12 | fieldset, form, label, legend, 13 | table, caption, tbody, tfoot, thead, tr, th, td, 14 | article, aside, canvas, details, embed, 15 | figure, figcaption, footer, header, hgroup, 16 | menu, nav, output, ruby, section, summary, 17 | time, mark, audio, video { 18 | margin: 0; 19 | padding: 0; 20 | border: 0; 21 | font: inherit; 22 | vertical-align: baseline; 23 | } 24 | 25 | 26 | /* Base text styles */ 27 | 28 | body { 29 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 30 | font-size: 14px; 31 | color: #232323; 32 | background-color: #FBFAF7; 33 | line-height: 1.8em; 34 | -webkit-font-smoothing: antialiased; 35 | } 36 | 37 | h1, h2, h3, h4, h5, h6 { 38 | color: #232323; 39 | margin: 36px 0 10px; 40 | } 41 | 42 | header p, ul, ol, table, dl { 43 | margin: 0 0 22px; 44 | } 45 | 46 | h1, h2, h3 { 47 | font-family: Arvo, Monaco, serif; 48 | line-height: 1.3; 49 | font-weight: normal; 50 | } 51 | 52 | h1, h2, h3 { 53 | display: block; 54 | border-bottom: 1px solid #ccc; 55 | padding-bottom: 5px; 56 | } 57 | 58 | h1 { 59 | font-size: 30px; 60 | } 61 | 62 | h2 { 63 | font-size: 24px; 64 | } 65 | 66 | h3 { 67 | font-size: 18px; 68 | } 69 | 70 | h4, h5, h6 { 71 | font-family: Arvo, Monaco, serif; 72 | font-weight: 700; 73 | } 74 | 75 | a { 76 | color: #C30000; 77 | font-weight: 200; 78 | text-decoration: none; 79 | } 80 | 81 | a:hover { 82 | text-decoration: underline; 83 | } 84 | 85 | a small { 86 | font-size: 12px; 87 | } 88 | 89 | em { 90 | font-style: italic; 91 | } 92 | 93 | strong { 94 | font-weight: 700; 95 | } 96 | 97 | ul li { 98 | list-style: inside; 99 | padding-left: 25px; 100 | } 101 | 102 | ol li { 103 | list-style: decimal inside; 104 | padding-left: 20px; 105 | } 106 | 107 | blockquote { 108 | margin: 0; 109 | padding: 0 0 0 20px; 110 | font-style: italic; 111 | } 112 | 113 | dl, dt, dd, dl p { 114 | font-color: #444; 115 | } 116 | 117 | dl dt { 118 | font-weight: bold; 119 | } 120 | 121 | dl dd { 122 | padding-left: 20px; 123 | font-style: italic; 124 | } 125 | 126 | dl p { 127 | padding-left: 20px; 128 | font-style: italic; 129 | } 130 | 131 | hr { 132 | border: 0; 133 | background: #ccc; 134 | height: 1px; 135 | margin: 0 0 24px; 136 | } 137 | 138 | /* Tables */ 139 | 140 | table { 141 | width: 100%; 142 | } 143 | 144 | table { 145 | border: 1px solid #ccc; 146 | margin-bottom: 32px; 147 | text-align: left; 148 | } 149 | 150 | th { 151 | font-family: 'Arvo', Helvetica, Arial, sans-serif; 152 | font-size: 18px; 153 | font-weight: normal; 154 | padding: 10px; 155 | background: #232323; 156 | color: #FDFEFB; 157 | } 158 | 159 | td { 160 | padding: 10px; 161 | background: #ccc; 162 | } 163 | 164 | 165 | /* Wrapper */ 166 | .wrapper { 167 | display: flex; 168 | align-items: baseline; 169 | /* width: 960px; */ 170 | } 171 | 172 | 173 | /* Header */ 174 | 175 | header { 176 | background-color: #171717; 177 | color: #FDFDFB; 178 | width: 320px; 179 | position: sticky; 180 | top: 30px; 181 | border: 1px solid #000; 182 | border-top-right-radius: 4px; 183 | border-bottom-right-radius: 4px; 184 | padding: 34px 25px 22px 50px; 185 | margin: 30px 25px 0 0; 186 | -webkit-font-smoothing: antialiased; 187 | } 188 | 189 | p.header { 190 | font-size: 16px; 191 | } 192 | 193 | h1.header { 194 | font-family: Arvo, sans-serif; 195 | font-size: 30px; 196 | font-weight: 300; 197 | line-height: 1.3em; 198 | border-bottom: none; 199 | margin-top: 0; 200 | } 201 | 202 | header a, h1.header { 203 | color: #fff; 204 | } 205 | 206 | header ul { 207 | list-style: none; 208 | padding: 0; 209 | } 210 | 211 | header li { 212 | list-style-type: none; 213 | width: 132px; 214 | height: 15px; 215 | margin-bottom: 12px; 216 | line-height: 1em; 217 | padding: 6px 6px 6px 7px; 218 | 219 | background: #AF0011; 220 | background: linear-gradient(top, #AF0011 0%,#820011 100%); 221 | 222 | border-radius: 4px; 223 | border: 1px solid #0D0D0D; 224 | 225 | -webkit-box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1); 226 | box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1); 227 | } 228 | 229 | header li:hover { 230 | background: #C3001D; 231 | background: linear-gradient(top, #C3001D 0%,#950119 100%); 232 | } 233 | 234 | 235 | /* Section - for main page content */ 236 | 237 | section { 238 | width: 650px; 239 | padding-bottom: 50px; 240 | } 241 | 242 | @media print, screen and (max-width: 960px) { 243 | div.wrapper { 244 | flex-direction: column; 245 | } 246 | 247 | header, section { 248 | position: static; 249 | width: auto; 250 | } 251 | 252 | section { 253 | padding: 20px 84px 20px 50px; 254 | margin: 0 0 20px; 255 | } 256 | 257 | header a small { 258 | display: inline; 259 | } 260 | 261 | header ul { 262 | position: absolute; 263 | right: 130px; 264 | top: 84px; 265 | } 266 | } 267 | 268 | @media print, screen and (max-width: 720px) { 269 | body { 270 | word-wrap: break-word; 271 | } 272 | 273 | header { 274 | padding: 20px; 275 | margin-right: 0; 276 | } 277 | 278 | section { 279 | padding: 10px 0 10px 20px; 280 | margin: 0 0 30px; 281 | } 282 | 283 | header ul, header p.view { 284 | position: static; 285 | } 286 | } 287 | 288 | @media print, screen and (max-width: 480px) { 289 | header ul li.download { 290 | display: none; 291 | } 292 | } 293 | 294 | @media print { 295 | body { 296 | padding: 0.4in; 297 | font-size: 12pt; 298 | color: #444; 299 | } 300 | } 301 | -------------------------------------------------------------------------------- /docs/assets/js/docs.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var exec = function() { 4 | fetch('https://api.github.com/repos/vsn4ik/input-spinner') 5 | .then(function(response) { 6 | return response.json(); 7 | }) 8 | .then(function(response) { 9 | // NOTE: XSS check 10 | if (typeof response.stargazers_count !== 'number') { 11 | return; 12 | } 13 | 14 | document.querySelector('.js-stargazers-count').style.setProperty('--stargazers', response.stargazers_count); 15 | }); 16 | 17 | $('#customize-spinner').spinner('changed', function(event, newVal, oldVal) { 18 | $('#old-val').text(oldVal); 19 | $('#new-val').text(newVal); 20 | }); 21 | 22 | $('[data-trigger="spinner"]').spinner('changing', function(event, newVal, oldVal) { 23 | $(event.currentTarget).closest('.well').find('small').text('Old = ' + oldVal + ', New = ' + newVal); 24 | }); 25 | 26 | $('#step-spinner').spinner({ 27 | step: function(dir) { 28 | if ((this.oldValue === 1 && dir === 'down') || (this.oldValue === -1 && dir === 'up')) { 29 | return 2; 30 | } 31 | return 1; 32 | } 33 | }); 34 | }; 35 | 36 | if (document.readyState === 'loading') { 37 | document.addEventListener('DOMContentLoaded', exec); 38 | } else { 39 | exec(); 40 | } -------------------------------------------------------------------------------- /docs/dist/input-spinner.css: -------------------------------------------------------------------------------- 1 | /* bootstrap@4 */ 2 | .input-group.spinner .input-group-text { 3 | flex-direction: column; 4 | justify-content: center; 5 | padding-top: 0; 6 | padding-bottom: 0; 7 | } 8 | .input-group.spinner .input-group-text .spin-up, 9 | .input-group.spinner .input-group-text .spin-down { 10 | display: flex; 11 | background: none; 12 | border: none; 13 | padding: 0; 14 | color: #999; 15 | } 16 | .input-group.spinner .input-group-text .spin-up:hover, 17 | .input-group.spinner .input-group-text .spin-down:hover, 18 | .input-group.spinner .input-group-text .spin-up:focus, 19 | .input-group.spinner .input-group-text .spin-down:focus { 20 | color: #555; 21 | } 22 | /* bootstrap@3 */ 23 | .spinner.input-group .input-group-addon .spin-up, 24 | .spinner.input-group .input-group-addon .spin-down { 25 | height: 10px; 26 | width: 10px; 27 | overflow: hidden; 28 | display: block; 29 | text-align: center; 30 | color: #999; 31 | } 32 | .spinner.input-group .input-group-addon .spin-up:hover, 33 | .spinner.input-group .input-group-addon .spin-down:hover { 34 | color: #555; 35 | } 36 | .spinner.input-group .input-group-addon .spin-up .fas, 37 | .spinner.input-group .input-group-addon .spin-down .fas { 38 | margin-top: -6px; 39 | vertical-align: middle; 40 | } 41 | .spinner.input-group .input-group-addon .spin-up .glyphicon, 42 | .spinner.input-group .input-group-addon .spin-down .glyphicon { 43 | font-size: 10px; 44 | top: -2px; 45 | } 46 | .spinner.input-group .input-group-addon a.spin-up, 47 | .spinner.input-group .input-group-addon a.spin-down { 48 | text-decoration: none; 49 | } 50 | .spinner.input-group .input-group-addon button.spin-up, 51 | .spinner.input-group .input-group-addon button.spin-down { 52 | background: none; 53 | border: none; 54 | padding: 0; 55 | } 56 | .spinner.input-group.input-group-sm .input-group-addon .spin-up, 57 | .spinner.input-group.input-group-sm .input-group-addon .spin-down { 58 | height: 8px; 59 | } 60 | .spinner.input-group.input-group-sm .input-group-addon .spin-up .fas, 61 | .spinner.input-group.input-group-sm .input-group-addon .spin-down .fas { 62 | margin-top: -10px; 63 | } 64 | .spinner.input-group.input-group-sm .input-group-addon .spin-up .glyphicon, 65 | .spinner.input-group.input-group-sm .input-group-addon .spin-down .glyphicon { 66 | font-size: 8px; 67 | top: -5px; 68 | } 69 | .spinner.input-group.input-group-lg .input-group-addon .spin-up, 70 | .spinner.input-group.input-group-lg .input-group-addon .spin-down { 71 | height: 12px; 72 | width: 12px; 73 | } 74 | .spinner.input-group.input-group-lg .input-group-addon .spin-up .fas, 75 | .spinner.input-group.input-group-lg .input-group-addon .spin-down .fas { 76 | margin-top: -16px; 77 | } 78 | .spinner.input-group.input-group-lg .input-group-addon .spin-up .glyphicon, 79 | .spinner.input-group.input-group-lg .input-group-addon .spin-down .glyphicon { 80 | font-size: 12px; 81 | top: -6px; 82 | } 83 | -------------------------------------------------------------------------------- /docs/dist/input-spinner.js: -------------------------------------------------------------------------------- 1 | /* 2 | * input-spinner 3 | * https://github.com/vsn4ik/input-spinner 4 | * Copyright Vasilii A., 2015–2018 5 | * Copyright xixilive, 2013–2015 6 | * Licensed under the MIT license 7 | */ 8 | 9 | 'use strict'; 10 | 11 | (function(factory) { 12 | if (typeof define === 'function' && define.amd) { 13 | // AMD. Register as an anonymous module 14 | define(['jquery'], factory); 15 | } else if (typeof exports === 'object') { 16 | // Node/CommonJS 17 | module.exports = factory(require('jquery')); 18 | } else { 19 | // Browser globals 20 | factory(jQuery); 21 | } 22 | })(function($) { 23 | var Spinner; 24 | var Spinning = function($element, options) { 25 | this.$el = $element; 26 | this.options = Object.assign({}, Spinning.rules.defaults, Spinning.rules[options.rule] || {}, options); 27 | this.min = Number(this.options.min) || 0; 28 | this.max = Number(this.options.max) || 0; 29 | this.spinningTimer = null; 30 | 31 | this.$el.on({ 32 | 'focus.spinner': (function(e) { 33 | e.preventDefault(); 34 | $(this.$el).trigger('mouseup.spinner'); 35 | this.oldValue = this.value(); 36 | }).bind(this), 37 | 'change.spinner': (function(e) { 38 | e.preventDefault(); 39 | this.value(this.$el.val()); 40 | }).bind(this), 41 | 'keydown.spinner': (function(e) { 42 | var dir = { 43 | 38: 'up', 44 | 40: 'down' 45 | }[e.keyCode]; 46 | 47 | if (dir) { 48 | e.preventDefault(); 49 | this.spin(dir); 50 | } 51 | }).bind(this) 52 | }); 53 | 54 | //init input value 55 | this.oldValue = this.value(); 56 | this.value(this.$el.val()); 57 | return this; 58 | }; 59 | 60 | Spinning.rules = { 61 | defaults: { min: null, max: null, step: 1, precision: 0 }, 62 | currency: { min: 0.00, max: null, step: 0.01, precision: 2 }, 63 | quantity: { min: 1, max: 999, step: 1, precision: 0 }, 64 | percent: { min: 1, max: 100, step: 1, precision: 0 }, 65 | month: { min: 1, max: 12, step: 1, precision: 0 }, 66 | day: { min: 1, max: 31, step: 1, precision: 0 }, 67 | hour: { min: 0, max: 23, step: 1, precision: 0 }, 68 | minute: { min: 1, max: 59, step: 1, precision: 0 }, 69 | second: { min: 1, max: 59, step: 1, precision: 0 } 70 | }; 71 | 72 | Spinning.prototype = { 73 | spin: function(dir) { 74 | if (this.$el.prop('disabled')) { 75 | return; 76 | } 77 | 78 | this.oldValue = this.value(); 79 | var step = typeof this.options.step === 'function' ? this.options.step.call(this, dir) : this.options.step; 80 | var multipler = dir === 'up' ? 1 : -1; 81 | 82 | this.value(this.oldValue + Number(step) * multipler); 83 | }, 84 | 85 | value: function(v) { 86 | if (v === null || v === undefined) { 87 | return this.numeric(this.$el.val()); 88 | } 89 | v = this.numeric(v); 90 | 91 | var valid = this.validate(v); 92 | if (valid !== 0) { 93 | v = valid === -1 ? this.min : this.max; 94 | } 95 | this.$el.val(v.toFixed(this.options.precision)); 96 | 97 | if (this.oldValue !== this.value()) { 98 | // changing.spinner 99 | this.$el.trigger('changing.spinner', [this.value(), this.oldValue]); 100 | 101 | // lazy changed.spinner 102 | clearTimeout(this.spinningTimer); 103 | this.spinningTimer = setTimeout((function() { 104 | this.$el.trigger('changed.spinner', [this.value(), this.oldValue]); 105 | }).bind(this), Spinner.delay); 106 | } 107 | }, 108 | 109 | numeric: function(v) { 110 | v = this.options.precision > 0 ? parseFloat(v, 10) : parseInt(v, 10); 111 | 112 | // If the variable is a number 113 | if (isFinite(v)) { 114 | return v; 115 | } 116 | 117 | return v || this.options.min || 0; 118 | }, 119 | 120 | validate: function(val) { 121 | if (this.options.min !== null && val < this.min) { 122 | return -1; 123 | } 124 | 125 | if (this.options.max !== null && val > this.max) { 126 | return 1; 127 | } 128 | 129 | return 0; 130 | } 131 | }; 132 | 133 | Spinner = function(element, options) { 134 | this.$el = $(element); 135 | this.$spinning = this.$el.find('[data-spin="spinner"]'); 136 | 137 | if (this.$spinning.length === 0) { 138 | this.$spinning = this.$el.find('input[type="text"]'); 139 | } 140 | 141 | options = Object.assign({}, options, this.$spinning.data()); 142 | 143 | this.spinning = new Spinning(this.$spinning, options); 144 | 145 | this.$el 146 | .on('click.spinner', '[data-spin="up"], [data-spin="down"]', this.spin.bind(this)) 147 | .on('mousedown.spinner', '[data-spin="up"], [data-spin="down"]', this.spin.bind(this)) 148 | .on('mouseup.spinner', '[data-spin="up"], [data-spin="down"]', this.spin.bind(this)); 149 | 150 | if (options.delay) { 151 | this.delay(options.delay); 152 | } 153 | 154 | if (options.changed) { 155 | this.changed(options.changed); 156 | } 157 | 158 | if (options.changing) { 159 | this.changing(options.changing); 160 | } 161 | }; 162 | 163 | Spinner.delay = 500; 164 | 165 | Spinner.prototype = { 166 | constructor: Spinner, 167 | 168 | spin: function(e) { 169 | var dir = $(e.currentTarget).data('spin'); 170 | 171 | switch (e.type) { 172 | case 'click': 173 | e.preventDefault(); 174 | this.spinning.spin(dir); 175 | break; 176 | case 'mousedown': 177 | if (e.keyCode === 1) { 178 | this.spinTimeout = setTimeout(this.beginSpin.bind(this, dir), 300); 179 | } 180 | break; 181 | case 'mouseup': 182 | clearTimeout(this.spinTimeout); 183 | clearInterval(this.spinInterval); 184 | break; 185 | } 186 | }, 187 | 188 | delay: function(ms) { 189 | var delay = Number(ms); 190 | 191 | if (delay >= 0) { 192 | this.constructor.delay = delay + 100; 193 | } 194 | }, 195 | 196 | value: function() { 197 | return this.spinning.value(); 198 | }, 199 | 200 | changed: function(fn) { 201 | this.bindHandler('changed.spinner', fn); 202 | }, 203 | 204 | changing: function(fn) { 205 | this.bindHandler('changing.spinner', fn); 206 | }, 207 | 208 | bindHandler: function(t, fn) { 209 | if (typeof fn === 'function') { 210 | this.$spinning.on(t, fn); 211 | } else { 212 | this.$spinning.off(t); 213 | } 214 | }, 215 | 216 | beginSpin: function(dir) { 217 | this.spinInterval = setInterval(this.spinning.spin.bind(this.spinning, dir), 100); 218 | } 219 | }; 220 | 221 | var old = $.fn.spinner; 222 | 223 | $.fn.spinner = function(options, value) { 224 | return this.each(function() { 225 | var data = $.data(this, 'spinner'); 226 | 227 | if (!data) { 228 | data = new Spinner(this, options); 229 | 230 | $.data(this, 'spinner', data); 231 | } 232 | if (options === 'delay' || options === 'changed' || options === 'changing') { 233 | data[options](value); 234 | } else if (options === 'step' && value) { 235 | data.spinning.step = value; 236 | } else if (options === 'spin' && value) { 237 | data.spinning.spin(value); 238 | } 239 | }); 240 | }; 241 | 242 | $.fn.spinner.Constructor = Spinner; 243 | $.fn.spinner.noConflict = function() { 244 | $.fn.spinner = old; 245 | return this; 246 | }; 247 | 248 | $(function() { 249 | $('[data-trigger="spinner"]').spinner(); 250 | }); 251 | 252 | return $.fn.spinner; 253 | }); 254 | -------------------------------------------------------------------------------- /docs/dist/input-spinner.min.css: -------------------------------------------------------------------------------- 1 | .input-group.spinner .input-group-text{flex-direction:column;justify-content:center;padding-top:0;padding-bottom:0}.input-group.spinner .input-group-text .spin-down,.input-group.spinner .input-group-text .spin-up{display:flex;background:0 0;border:none;padding:0;color:#999}.input-group.spinner .input-group-text .spin-down:focus,.input-group.spinner .input-group-text .spin-down:hover,.input-group.spinner .input-group-text .spin-up:focus,.input-group.spinner .input-group-text .spin-up:hover{color:#555}.spinner.input-group .input-group-addon .spin-down,.spinner.input-group .input-group-addon .spin-up{height:10px;width:10px;overflow:hidden;display:block;text-align:center;color:#999}.spinner.input-group .input-group-addon .spin-down:hover,.spinner.input-group .input-group-addon .spin-up:hover{color:#555}.spinner.input-group .input-group-addon .spin-down .fas,.spinner.input-group .input-group-addon .spin-up .fas{margin-top:-6px;vertical-align:middle}.spinner.input-group .input-group-addon .spin-down .glyphicon,.spinner.input-group .input-group-addon .spin-up .glyphicon{font-size:10px;top:-2px}.spinner.input-group .input-group-addon a.spin-down,.spinner.input-group .input-group-addon a.spin-up{text-decoration:none}.spinner.input-group .input-group-addon button.spin-down,.spinner.input-group .input-group-addon button.spin-up{background:0 0;border:none;padding:0}.spinner.input-group.input-group-sm .input-group-addon .spin-down,.spinner.input-group.input-group-sm .input-group-addon .spin-up{height:8px}.spinner.input-group.input-group-sm .input-group-addon .spin-down .fas,.spinner.input-group.input-group-sm .input-group-addon .spin-up .fas{margin-top:-10px}.spinner.input-group.input-group-sm .input-group-addon .spin-down .glyphicon,.spinner.input-group.input-group-sm .input-group-addon .spin-up .glyphicon{font-size:8px;top:-5px}.spinner.input-group.input-group-lg .input-group-addon .spin-down,.spinner.input-group.input-group-lg .input-group-addon .spin-up{height:12px;width:12px}.spinner.input-group.input-group-lg .input-group-addon .spin-down .fas,.spinner.input-group.input-group-lg .input-group-addon .spin-up .fas{margin-top:-16px}.spinner.input-group.input-group-lg .input-group-addon .spin-down .glyphicon,.spinner.input-group.input-group-lg .input-group-addon .spin-up .glyphicon{font-size:12px;top:-6px} 2 | /*# sourceMappingURL=input-spinner.min.css.map */ -------------------------------------------------------------------------------- /docs/dist/input-spinner.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["dist/input-spinner.css"],"names":[],"mappings":"AACA,uCACE,eAAgB,OAChB,gBAAiB,OACjB,YAAa,EACb,eAAgB,EAGlB,kDADA,gDAEE,QAAS,KACT,WAAY,IACZ,OAAQ,KACR,QAAS,EACT,MAAO,KAKT,wDAFA,wDACA,sDAFA,sDAIE,MAAO,KAIT,mDADA,iDAEE,OAAQ,KACR,MAAO,KACP,SAAU,OACV,QAAS,MACT,WAAY,OACZ,MAAO,KAGT,yDADA,uDAEE,MAAO,KAGT,wDADA,sDAEE,WAAY,KACZ,eAAgB,OAGlB,8DADA,4DAEE,UAAW,KACX,IAAK,KAGP,oDADA,kDAEE,gBAAiB,KAGnB,yDADA,uDAEE,WAAY,IACZ,OAAQ,KACR,QAAS,EAGX,kEADA,gEAEE,OAAQ,IAGV,uEADA,qEAEE,WAAY,MAGd,6EADA,2EAEE,UAAW,IACX,IAAK,KAGP,kEADA,gEAEE,OAAQ,KACR,MAAO,KAGT,uEADA,qEAEE,WAAY,MAGd,6EADA,2EAEE,UAAW,KACX,IAAK","sourcesContent":["/* bootstrap@4 */\n.input-group.spinner .input-group-text {\n flex-direction: column;\n justify-content: center;\n padding-top: 0;\n padding-bottom: 0;\n}\n.input-group.spinner .input-group-text .spin-up,\n.input-group.spinner .input-group-text .spin-down {\n display: flex;\n background: none;\n border: none;\n padding: 0;\n color: #999;\n}\n.input-group.spinner .input-group-text .spin-up:hover,\n.input-group.spinner .input-group-text .spin-down:hover,\n.input-group.spinner .input-group-text .spin-up:focus,\n.input-group.spinner .input-group-text .spin-down:focus {\n color: #555;\n}\n/* bootstrap@3 */\n.spinner.input-group .input-group-addon .spin-up,\n.spinner.input-group .input-group-addon .spin-down {\n height: 10px;\n width: 10px;\n overflow: hidden;\n display: block;\n text-align: center;\n color: #999;\n}\n.spinner.input-group .input-group-addon .spin-up:hover,\n.spinner.input-group .input-group-addon .spin-down:hover {\n color: #555;\n}\n.spinner.input-group .input-group-addon .spin-up .fas,\n.spinner.input-group .input-group-addon .spin-down .fas {\n margin-top: -6px;\n vertical-align: middle;\n}\n.spinner.input-group .input-group-addon .spin-up .glyphicon,\n.spinner.input-group .input-group-addon .spin-down .glyphicon {\n font-size: 10px;\n top: -2px;\n}\n.spinner.input-group .input-group-addon a.spin-up,\n.spinner.input-group .input-group-addon a.spin-down {\n text-decoration: none;\n}\n.spinner.input-group .input-group-addon button.spin-up,\n.spinner.input-group .input-group-addon button.spin-down {\n background: none;\n border: none;\n padding: 0;\n}\n.spinner.input-group.input-group-sm .input-group-addon .spin-up,\n.spinner.input-group.input-group-sm .input-group-addon .spin-down {\n height: 8px;\n}\n.spinner.input-group.input-group-sm .input-group-addon .spin-up .fas,\n.spinner.input-group.input-group-sm .input-group-addon .spin-down .fas {\n margin-top: -10px;\n}\n.spinner.input-group.input-group-sm .input-group-addon .spin-up .glyphicon,\n.spinner.input-group.input-group-sm .input-group-addon .spin-down .glyphicon {\n font-size: 8px;\n top: -5px;\n}\n.spinner.input-group.input-group-lg .input-group-addon .spin-up,\n.spinner.input-group.input-group-lg .input-group-addon .spin-down {\n height: 12px;\n width: 12px;\n}\n.spinner.input-group.input-group-lg .input-group-addon .spin-up .fas,\n.spinner.input-group.input-group-lg .input-group-addon .spin-down .fas {\n margin-top: -16px;\n}\n.spinner.input-group.input-group-lg .input-group-addon .spin-up .glyphicon,\n.spinner.input-group.input-group-lg .input-group-addon .spin-down .glyphicon {\n font-size: 12px;\n top: -6px;\n}\n"]} -------------------------------------------------------------------------------- /docs/dist/input-spinner.min.js: -------------------------------------------------------------------------------- 1 | "use strict";!function(factory){"function"==typeof define&&define.amd?define(["jquery"],factory):"object"==typeof exports?module.exports=factory(require("jquery")):factory(jQuery)}((function($){var Spinner,Spinning=function($element,options){return this.$el=$element,this.options=Object.assign({},Spinning.rules.defaults,Spinning.rules[options.rule]||{},options),this.min=Number(this.options.min)||0,this.max=Number(this.options.max)||0,this.spinningTimer=null,this.$el.on({"focus.spinner":function(e){e.preventDefault(),$(this.$el).trigger("mouseup.spinner"),this.oldValue=this.value()}.bind(this),"change.spinner":function(e){e.preventDefault(),this.value(this.$el.val())}.bind(this),"keydown.spinner":function(e){var dir={38:"up",40:"down"}[e.keyCode];dir&&(e.preventDefault(),this.spin(dir))}.bind(this)}),this.oldValue=this.value(),this.value(this.$el.val()),this};Spinning.rules={defaults:{min:null,max:null,step:1,precision:0},currency:{min:0,max:null,step:.01,precision:2},quantity:{min:1,max:999,step:1,precision:0},percent:{min:1,max:100,step:1,precision:0},month:{min:1,max:12,step:1,precision:0},day:{min:1,max:31,step:1,precision:0},hour:{min:0,max:23,step:1,precision:0},minute:{min:1,max:59,step:1,precision:0},second:{min:1,max:59,step:1,precision:0}},Spinning.prototype={spin:function(dir){if(!this.$el.prop("disabled")){this.oldValue=this.value();var step="function"==typeof this.options.step?this.options.step.call(this,dir):this.options.step,multipler="up"===dir?1:-1;this.value(this.oldValue+Number(step)*multipler)}},value:function(v){if(null==v)return this.numeric(this.$el.val());v=this.numeric(v);var valid=this.validate(v);0!==valid&&(v=-1===valid?this.min:this.max),this.$el.val(v.toFixed(this.options.precision)),this.oldValue!==this.value()&&(this.$el.trigger("changing.spinner",[this.value(),this.oldValue]),clearTimeout(this.spinningTimer),this.spinningTimer=setTimeout(function(){this.$el.trigger("changed.spinner",[this.value(),this.oldValue])}.bind(this),Spinner.delay))},numeric:function(v){return v=this.options.precision>0?parseFloat(v,10):parseInt(v,10),isFinite(v)?v:v||this.options.min||0},validate:function(val){return null!==this.options.min&&valthis.max?1:0}},(Spinner=function(element,options){this.$el=$(element),this.$spinning=this.$el.find('[data-spin="spinner"]'),0===this.$spinning.length&&(this.$spinning=this.$el.find('input[type="text"]')),options=Object.assign({},options,this.$spinning.data()),this.spinning=new Spinning(this.$spinning,options),this.$el.on("click.spinner",'[data-spin="up"], [data-spin="down"]',this.spin.bind(this)).on("mousedown.spinner",'[data-spin="up"], [data-spin="down"]',this.spin.bind(this)).on("mouseup.spinner",'[data-spin="up"], [data-spin="down"]',this.spin.bind(this)),options.delay&&this.delay(options.delay),options.changed&&this.changed(options.changed),options.changing&&this.changing(options.changing)}).delay=500,Spinner.prototype={constructor:Spinner,spin:function(e){var dir=$(e.currentTarget).data("spin");switch(e.type){case"click":e.preventDefault(),this.spinning.spin(dir);break;case"mousedown":1===e.keyCode&&(this.spinTimeout=setTimeout(this.beginSpin.bind(this,dir),300));break;case"mouseup":clearTimeout(this.spinTimeout),clearInterval(this.spinInterval)}},delay:function(ms){var delay=Number(ms);delay>=0&&(this.constructor.delay=delay+100)},value:function(){return this.spinning.value()},changed:function(fn){this.bindHandler("changed.spinner",fn)},changing:function(fn){this.bindHandler("changing.spinner",fn)},bindHandler:function(t,fn){"function"==typeof fn?this.$spinning.on(t,fn):this.$spinning.off(t)},beginSpin:function(dir){this.spinInterval=setInterval(this.spinning.spin.bind(this.spinning,dir),100)}};var old=$.fn.spinner;return $.fn.spinner=function(options,value){return this.each((function(){var data=$.data(this,"spinner");data||(data=new Spinner(this,options),$.data(this,"spinner",data)),"delay"===options||"changed"===options||"changing"===options?data[options](value):"step"===options&&value?data.spinning.step=value:"spin"===options&&value&&data.spinning.spin(value)}))},$.fn.spinner.Constructor=Spinner,$.fn.spinner.noConflict=function(){return $.fn.spinner=old,this},$((function(){$('[data-trigger="spinner"]').spinner()})),$.fn.spinner})); -------------------------------------------------------------------------------- /docs/example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Input Spinner - Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 23 | 24 | 25 |
26 |

Examples

27 |
    28 |
  • Arrow-up for increment
  • 29 |
  • Arrow-down for decrement
  • 30 |
  • Press Arrows or Left-mouse cause continuous changing
  • 31 |
32 | 33 |
34 |

Quantity:

35 |
36 | 37 | 38 |
39 |
40 | 41 | 42 |
43 |
44 |
45 |
46 | 47 |
48 |

Currency:

49 |
50 | 51 | 52 |
53 |
54 | 55 | 56 |
57 |
58 |
59 |
60 | 61 |
62 |

Percent:

63 |
64 | 65 | 66 |
67 |
68 | 69 | 70 |
71 |
72 |
73 |
74 | 75 |
76 |

Month:

77 |
78 | 79 | 80 |
81 |
82 | 83 | 84 |
85 |
86 |
87 |
88 | 89 |
90 |

Customize (even number less than 200):

91 |
92 | 93 | 94 |
95 |
96 | 97 | 98 |
99 |
100 |
101 |

Event handler: changed

102 |

103 | Old = , New = 104 |

105 |
106 | 107 |
108 |

Disabled input:

109 |
110 | 111 | 112 |
113 |
114 | 115 | 116 |
117 |
118 |
119 |
120 | 121 |
122 |

Control sizing:

123 |
124 | 125 | 126 |
127 |
128 | 129 | 130 |
131 |
132 |
133 | 134 |
135 | 136 |
137 | 138 | 139 |
140 |
141 | 142 | 143 |
144 |
145 |
146 |
147 |
148 | 149 | 150 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Input Spinner 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 |

Input Spinner

23 |

A Number-Spinner, Support keyboard operations and continuous changing.

24 | 25 |
26 | 27 | 28 | Download 29 | 30 | 31 |
32 | 38 | 39 |
40 |
41 | 42 |
43 |
44 |
45 |
46 |
47 | 48 |
49 |

Examples

50 |
    51 |
  • Arrow-up for increment
  • 52 |
  • Arrow-down for decrement
  • 53 |
  • Press Arrows or Left-mouse cause continuous changing
  • 54 |
55 | 56 |
57 |

Quantity:

58 |
59 | 60 | 61 |
62 |
63 | 64 | 65 |
66 |
67 |
68 |
69 | 70 |
71 |

Currency:

72 |
73 | 74 | 75 |
76 |
77 | 78 | 79 |
80 |
81 |
82 |
83 | 84 |
85 |

Percent:

86 |
87 | 88 | 89 |
90 |
91 | 92 | 93 |
94 |
95 |
96 |
97 | 98 |
99 |

Month:

100 |
101 | 102 | 103 |
104 |
105 | 106 | 107 |
108 |
109 |
110 |
111 | 112 |
113 |

Hour:

114 |
115 | 116 | 117 |
118 |
119 | 120 | 121 |
122 |
123 |
124 |
125 | 126 |

Customize

127 |
128 |

even number less than 200

129 |
130 | 131 | 132 |
133 |
134 | 135 | 136 |
137 |
138 |
139 |

Event handler: changed

140 |

141 | Old = , New = 142 |

143 |
144 | 145 |
146 |

Pass step option as a function

147 |
To skip 0 for this example
148 |
149 | 150 | 151 |
152 |
153 | 154 | 155 |
156 |
157 |
158 |
159 |
160 |
161 | 162 | 163 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "input-spinner", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "input-spinner", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "clean-css-cli": "^5.6.2", 13 | "jquery": "^3.5.1", 14 | "karma": "^6.4.1", 15 | "karma-chrome-launcher": "^3.1.0", 16 | "karma-qunit": "^4.1.1", 17 | "less": "^4.1.3", 18 | "puppeteer": "^19.7.2", 19 | "qunit": "^2.10.1", 20 | "serve": "^14.2.1", 21 | "terser": "^5.0.0" 22 | } 23 | }, 24 | "node_modules/@babel/code-frame": { 25 | "version": "7.18.6", 26 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 27 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 28 | "dev": true, 29 | "dependencies": { 30 | "@babel/highlight": "^7.18.6" 31 | }, 32 | "engines": { 33 | "node": ">=6.9.0" 34 | } 35 | }, 36 | "node_modules/@babel/helper-validator-identifier": { 37 | "version": "7.19.1", 38 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 39 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 40 | "dev": true, 41 | "engines": { 42 | "node": ">=6.9.0" 43 | } 44 | }, 45 | "node_modules/@babel/highlight": { 46 | "version": "7.18.6", 47 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 48 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 49 | "dev": true, 50 | "dependencies": { 51 | "@babel/helper-validator-identifier": "^7.18.6", 52 | "chalk": "^2.0.0", 53 | "js-tokens": "^4.0.0" 54 | }, 55 | "engines": { 56 | "node": ">=6.9.0" 57 | } 58 | }, 59 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 60 | "version": "3.2.1", 61 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 62 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 63 | "dev": true, 64 | "dependencies": { 65 | "color-convert": "^1.9.0" 66 | }, 67 | "engines": { 68 | "node": ">=4" 69 | } 70 | }, 71 | "node_modules/@babel/highlight/node_modules/chalk": { 72 | "version": "2.4.2", 73 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 74 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 75 | "dev": true, 76 | "dependencies": { 77 | "ansi-styles": "^3.2.1", 78 | "escape-string-regexp": "^1.0.5", 79 | "supports-color": "^5.3.0" 80 | }, 81 | "engines": { 82 | "node": ">=4" 83 | } 84 | }, 85 | "node_modules/@babel/highlight/node_modules/color-convert": { 86 | "version": "1.9.3", 87 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 88 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 89 | "dev": true, 90 | "dependencies": { 91 | "color-name": "1.1.3" 92 | } 93 | }, 94 | "node_modules/@babel/highlight/node_modules/color-name": { 95 | "version": "1.1.3", 96 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 97 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 98 | "dev": true 99 | }, 100 | "node_modules/@babel/highlight/node_modules/has-flag": { 101 | "version": "3.0.0", 102 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 103 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 104 | "dev": true, 105 | "engines": { 106 | "node": ">=4" 107 | } 108 | }, 109 | "node_modules/@babel/highlight/node_modules/supports-color": { 110 | "version": "5.5.0", 111 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 112 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 113 | "dev": true, 114 | "dependencies": { 115 | "has-flag": "^3.0.0" 116 | }, 117 | "engines": { 118 | "node": ">=4" 119 | } 120 | }, 121 | "node_modules/@colors/colors": { 122 | "version": "1.5.0", 123 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 124 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 125 | "dev": true, 126 | "engines": { 127 | "node": ">=0.1.90" 128 | } 129 | }, 130 | "node_modules/@jridgewell/gen-mapping": { 131 | "version": "0.3.2", 132 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 133 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 134 | "dev": true, 135 | "dependencies": { 136 | "@jridgewell/set-array": "^1.0.1", 137 | "@jridgewell/sourcemap-codec": "^1.4.10", 138 | "@jridgewell/trace-mapping": "^0.3.9" 139 | }, 140 | "engines": { 141 | "node": ">=6.0.0" 142 | } 143 | }, 144 | "node_modules/@jridgewell/resolve-uri": { 145 | "version": "3.1.0", 146 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 147 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 148 | "dev": true, 149 | "engines": { 150 | "node": ">=6.0.0" 151 | } 152 | }, 153 | "node_modules/@jridgewell/set-array": { 154 | "version": "1.1.2", 155 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 156 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 157 | "dev": true, 158 | "engines": { 159 | "node": ">=6.0.0" 160 | } 161 | }, 162 | "node_modules/@jridgewell/source-map": { 163 | "version": "0.3.2", 164 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 165 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 166 | "dev": true, 167 | "dependencies": { 168 | "@jridgewell/gen-mapping": "^0.3.0", 169 | "@jridgewell/trace-mapping": "^0.3.9" 170 | } 171 | }, 172 | "node_modules/@jridgewell/sourcemap-codec": { 173 | "version": "1.4.14", 174 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 175 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 176 | "dev": true 177 | }, 178 | "node_modules/@jridgewell/trace-mapping": { 179 | "version": "0.3.17", 180 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 181 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 182 | "dev": true, 183 | "dependencies": { 184 | "@jridgewell/resolve-uri": "3.1.0", 185 | "@jridgewell/sourcemap-codec": "1.4.14" 186 | } 187 | }, 188 | "node_modules/@socket.io/component-emitter": { 189 | "version": "3.1.0", 190 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", 191 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", 192 | "dev": true 193 | }, 194 | "node_modules/@types/cookie": { 195 | "version": "0.4.1", 196 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 197 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", 198 | "dev": true 199 | }, 200 | "node_modules/@types/cors": { 201 | "version": "2.8.13", 202 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", 203 | "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", 204 | "dev": true, 205 | "dependencies": { 206 | "@types/node": "*" 207 | } 208 | }, 209 | "node_modules/@types/node": { 210 | "version": "18.14.1", 211 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", 212 | "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==", 213 | "dev": true 214 | }, 215 | "node_modules/@types/yauzl": { 216 | "version": "2.10.0", 217 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 218 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 219 | "dev": true, 220 | "optional": true, 221 | "dependencies": { 222 | "@types/node": "*" 223 | } 224 | }, 225 | "node_modules/@zeit/schemas": { 226 | "version": "2.29.0", 227 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.29.0.tgz", 228 | "integrity": "sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==", 229 | "dev": true 230 | }, 231 | "node_modules/accepts": { 232 | "version": "1.3.8", 233 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 234 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 235 | "dev": true, 236 | "dependencies": { 237 | "mime-types": "~2.1.34", 238 | "negotiator": "0.6.3" 239 | }, 240 | "engines": { 241 | "node": ">= 0.6" 242 | } 243 | }, 244 | "node_modules/acorn": { 245 | "version": "8.8.2", 246 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 247 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 248 | "dev": true, 249 | "bin": { 250 | "acorn": "bin/acorn" 251 | }, 252 | "engines": { 253 | "node": ">=0.4.0" 254 | } 255 | }, 256 | "node_modules/agent-base": { 257 | "version": "6.0.2", 258 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 259 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 260 | "dev": true, 261 | "dependencies": { 262 | "debug": "4" 263 | }, 264 | "engines": { 265 | "node": ">= 6.0.0" 266 | } 267 | }, 268 | "node_modules/agent-base/node_modules/debug": { 269 | "version": "4.3.4", 270 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 271 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 272 | "dev": true, 273 | "dependencies": { 274 | "ms": "2.1.2" 275 | }, 276 | "engines": { 277 | "node": ">=6.0" 278 | }, 279 | "peerDependenciesMeta": { 280 | "supports-color": { 281 | "optional": true 282 | } 283 | } 284 | }, 285 | "node_modules/agent-base/node_modules/ms": { 286 | "version": "2.1.2", 287 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 288 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 289 | "dev": true 290 | }, 291 | "node_modules/ajv": { 292 | "version": "8.11.0", 293 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", 294 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", 295 | "dev": true, 296 | "dependencies": { 297 | "fast-deep-equal": "^3.1.1", 298 | "json-schema-traverse": "^1.0.0", 299 | "require-from-string": "^2.0.2", 300 | "uri-js": "^4.2.2" 301 | }, 302 | "funding": { 303 | "type": "github", 304 | "url": "https://github.com/sponsors/epoberezkin" 305 | } 306 | }, 307 | "node_modules/ansi-align": { 308 | "version": "3.0.1", 309 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", 310 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", 311 | "dev": true, 312 | "dependencies": { 313 | "string-width": "^4.1.0" 314 | } 315 | }, 316 | "node_modules/ansi-align/node_modules/ansi-regex": { 317 | "version": "5.0.1", 318 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 319 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 320 | "dev": true, 321 | "engines": { 322 | "node": ">=8" 323 | } 324 | }, 325 | "node_modules/ansi-align/node_modules/string-width": { 326 | "version": "4.2.3", 327 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 328 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 329 | "dev": true, 330 | "dependencies": { 331 | "emoji-regex": "^8.0.0", 332 | "is-fullwidth-code-point": "^3.0.0", 333 | "strip-ansi": "^6.0.1" 334 | }, 335 | "engines": { 336 | "node": ">=8" 337 | } 338 | }, 339 | "node_modules/ansi-align/node_modules/strip-ansi": { 340 | "version": "6.0.1", 341 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 342 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 343 | "dev": true, 344 | "dependencies": { 345 | "ansi-regex": "^5.0.1" 346 | }, 347 | "engines": { 348 | "node": ">=8" 349 | } 350 | }, 351 | "node_modules/ansi-regex": { 352 | "version": "6.0.1", 353 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 354 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 355 | "dev": true, 356 | "engines": { 357 | "node": ">=12" 358 | }, 359 | "funding": { 360 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 361 | } 362 | }, 363 | "node_modules/ansi-styles": { 364 | "version": "6.2.1", 365 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 366 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 367 | "dev": true, 368 | "engines": { 369 | "node": ">=12" 370 | }, 371 | "funding": { 372 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 373 | } 374 | }, 375 | "node_modules/anymatch": { 376 | "version": "3.1.3", 377 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 378 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 379 | "dev": true, 380 | "dependencies": { 381 | "normalize-path": "^3.0.0", 382 | "picomatch": "^2.0.4" 383 | }, 384 | "engines": { 385 | "node": ">= 8" 386 | } 387 | }, 388 | "node_modules/arch": { 389 | "version": "2.2.0", 390 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", 391 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", 392 | "dev": true, 393 | "funding": [ 394 | { 395 | "type": "github", 396 | "url": "https://github.com/sponsors/feross" 397 | }, 398 | { 399 | "type": "patreon", 400 | "url": "https://www.patreon.com/feross" 401 | }, 402 | { 403 | "type": "consulting", 404 | "url": "https://feross.org/support" 405 | } 406 | ] 407 | }, 408 | "node_modules/arg": { 409 | "version": "5.0.2", 410 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 411 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 412 | "dev": true 413 | }, 414 | "node_modules/argparse": { 415 | "version": "2.0.1", 416 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 417 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 418 | "dev": true 419 | }, 420 | "node_modules/balanced-match": { 421 | "version": "1.0.2", 422 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 423 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 424 | "dev": true 425 | }, 426 | "node_modules/base64-js": { 427 | "version": "1.5.1", 428 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 429 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 430 | "dev": true, 431 | "funding": [ 432 | { 433 | "type": "github", 434 | "url": "https://github.com/sponsors/feross" 435 | }, 436 | { 437 | "type": "patreon", 438 | "url": "https://www.patreon.com/feross" 439 | }, 440 | { 441 | "type": "consulting", 442 | "url": "https://feross.org/support" 443 | } 444 | ] 445 | }, 446 | "node_modules/base64id": { 447 | "version": "2.0.0", 448 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 449 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 450 | "dev": true, 451 | "engines": { 452 | "node": "^4.5.0 || >= 5.9" 453 | } 454 | }, 455 | "node_modules/binary-extensions": { 456 | "version": "2.2.0", 457 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 458 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 459 | "dev": true, 460 | "engines": { 461 | "node": ">=8" 462 | } 463 | }, 464 | "node_modules/bl": { 465 | "version": "4.1.0", 466 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 467 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 468 | "dev": true, 469 | "dependencies": { 470 | "buffer": "^5.5.0", 471 | "inherits": "^2.0.4", 472 | "readable-stream": "^3.4.0" 473 | } 474 | }, 475 | "node_modules/body-parser": { 476 | "version": "1.20.2", 477 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", 478 | "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", 479 | "dev": true, 480 | "dependencies": { 481 | "bytes": "3.1.2", 482 | "content-type": "~1.0.5", 483 | "debug": "2.6.9", 484 | "depd": "2.0.0", 485 | "destroy": "1.2.0", 486 | "http-errors": "2.0.0", 487 | "iconv-lite": "0.4.24", 488 | "on-finished": "2.4.1", 489 | "qs": "6.11.0", 490 | "raw-body": "2.5.2", 491 | "type-is": "~1.6.18", 492 | "unpipe": "1.0.0" 493 | }, 494 | "engines": { 495 | "node": ">= 0.8", 496 | "npm": "1.2.8000 || >= 1.4.16" 497 | } 498 | }, 499 | "node_modules/boxen": { 500 | "version": "7.0.0", 501 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", 502 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", 503 | "dev": true, 504 | "dependencies": { 505 | "ansi-align": "^3.0.1", 506 | "camelcase": "^7.0.0", 507 | "chalk": "^5.0.1", 508 | "cli-boxes": "^3.0.0", 509 | "string-width": "^5.1.2", 510 | "type-fest": "^2.13.0", 511 | "widest-line": "^4.0.1", 512 | "wrap-ansi": "^8.0.1" 513 | }, 514 | "engines": { 515 | "node": ">=14.16" 516 | }, 517 | "funding": { 518 | "url": "https://github.com/sponsors/sindresorhus" 519 | } 520 | }, 521 | "node_modules/boxen/node_modules/wrap-ansi": { 522 | "version": "8.1.0", 523 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 524 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 525 | "dev": true, 526 | "dependencies": { 527 | "ansi-styles": "^6.1.0", 528 | "string-width": "^5.0.1", 529 | "strip-ansi": "^7.0.1" 530 | }, 531 | "engines": { 532 | "node": ">=12" 533 | }, 534 | "funding": { 535 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 536 | } 537 | }, 538 | "node_modules/brace-expansion": { 539 | "version": "1.1.11", 540 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 541 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 542 | "dev": true, 543 | "dependencies": { 544 | "balanced-match": "^1.0.0", 545 | "concat-map": "0.0.1" 546 | } 547 | }, 548 | "node_modules/braces": { 549 | "version": "3.0.2", 550 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 551 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 552 | "dev": true, 553 | "dependencies": { 554 | "fill-range": "^7.0.1" 555 | }, 556 | "engines": { 557 | "node": ">=8" 558 | } 559 | }, 560 | "node_modules/buffer": { 561 | "version": "5.7.1", 562 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 563 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 564 | "dev": true, 565 | "funding": [ 566 | { 567 | "type": "github", 568 | "url": "https://github.com/sponsors/feross" 569 | }, 570 | { 571 | "type": "patreon", 572 | "url": "https://www.patreon.com/feross" 573 | }, 574 | { 575 | "type": "consulting", 576 | "url": "https://feross.org/support" 577 | } 578 | ], 579 | "dependencies": { 580 | "base64-js": "^1.3.1", 581 | "ieee754": "^1.1.13" 582 | } 583 | }, 584 | "node_modules/buffer-crc32": { 585 | "version": "0.2.13", 586 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 587 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 588 | "dev": true, 589 | "engines": { 590 | "node": "*" 591 | } 592 | }, 593 | "node_modules/buffer-from": { 594 | "version": "1.1.2", 595 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 596 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 597 | "dev": true 598 | }, 599 | "node_modules/bytes": { 600 | "version": "3.1.2", 601 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 602 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 603 | "dev": true, 604 | "engines": { 605 | "node": ">= 0.8" 606 | } 607 | }, 608 | "node_modules/call-bind": { 609 | "version": "1.0.2", 610 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 611 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 612 | "dev": true, 613 | "dependencies": { 614 | "function-bind": "^1.1.1", 615 | "get-intrinsic": "^1.0.2" 616 | }, 617 | "funding": { 618 | "url": "https://github.com/sponsors/ljharb" 619 | } 620 | }, 621 | "node_modules/callsites": { 622 | "version": "3.1.0", 623 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 624 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 625 | "dev": true, 626 | "engines": { 627 | "node": ">=6" 628 | } 629 | }, 630 | "node_modules/camelcase": { 631 | "version": "7.0.1", 632 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", 633 | "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", 634 | "dev": true, 635 | "engines": { 636 | "node": ">=14.16" 637 | }, 638 | "funding": { 639 | "url": "https://github.com/sponsors/sindresorhus" 640 | } 641 | }, 642 | "node_modules/chalk": { 643 | "version": "5.0.1", 644 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", 645 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", 646 | "dev": true, 647 | "engines": { 648 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 649 | }, 650 | "funding": { 651 | "url": "https://github.com/chalk/chalk?sponsor=1" 652 | } 653 | }, 654 | "node_modules/chalk-template": { 655 | "version": "0.4.0", 656 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", 657 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", 658 | "dev": true, 659 | "dependencies": { 660 | "chalk": "^4.1.2" 661 | }, 662 | "engines": { 663 | "node": ">=12" 664 | }, 665 | "funding": { 666 | "url": "https://github.com/chalk/chalk-template?sponsor=1" 667 | } 668 | }, 669 | "node_modules/chalk-template/node_modules/ansi-styles": { 670 | "version": "4.3.0", 671 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 672 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 673 | "dev": true, 674 | "dependencies": { 675 | "color-convert": "^2.0.1" 676 | }, 677 | "engines": { 678 | "node": ">=8" 679 | }, 680 | "funding": { 681 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 682 | } 683 | }, 684 | "node_modules/chalk-template/node_modules/chalk": { 685 | "version": "4.1.2", 686 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 687 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 688 | "dev": true, 689 | "dependencies": { 690 | "ansi-styles": "^4.1.0", 691 | "supports-color": "^7.1.0" 692 | }, 693 | "engines": { 694 | "node": ">=10" 695 | }, 696 | "funding": { 697 | "url": "https://github.com/chalk/chalk?sponsor=1" 698 | } 699 | }, 700 | "node_modules/chokidar": { 701 | "version": "3.5.3", 702 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 703 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 704 | "dev": true, 705 | "funding": [ 706 | { 707 | "type": "individual", 708 | "url": "https://paulmillr.com/funding/" 709 | } 710 | ], 711 | "dependencies": { 712 | "anymatch": "~3.1.2", 713 | "braces": "~3.0.2", 714 | "glob-parent": "~5.1.2", 715 | "is-binary-path": "~2.1.0", 716 | "is-glob": "~4.0.1", 717 | "normalize-path": "~3.0.0", 718 | "readdirp": "~3.6.0" 719 | }, 720 | "engines": { 721 | "node": ">= 8.10.0" 722 | }, 723 | "optionalDependencies": { 724 | "fsevents": "~2.3.2" 725 | } 726 | }, 727 | "node_modules/chownr": { 728 | "version": "1.1.4", 729 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 730 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 731 | "dev": true 732 | }, 733 | "node_modules/chromium-bidi": { 734 | "version": "0.4.4", 735 | "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", 736 | "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", 737 | "dev": true, 738 | "dependencies": { 739 | "mitt": "3.0.0" 740 | }, 741 | "peerDependencies": { 742 | "devtools-protocol": "*" 743 | } 744 | }, 745 | "node_modules/clean-css": { 746 | "version": "5.3.2", 747 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", 748 | "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", 749 | "dev": true, 750 | "dependencies": { 751 | "source-map": "~0.6.0" 752 | }, 753 | "engines": { 754 | "node": ">= 10.0" 755 | } 756 | }, 757 | "node_modules/clean-css-cli": { 758 | "version": "5.6.2", 759 | "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.2.tgz", 760 | "integrity": "sha512-GDQkr6zVqHJhO3yWTy3sA22sMCT6iUqaJuBdqZMW6oI25MtiJ2iZXDmWzErpjoRotsB+TYPTpuZSNSgaC1n4lA==", 761 | "dev": true, 762 | "dependencies": { 763 | "chokidar": "^3.5.2", 764 | "clean-css": "^5.3.2", 765 | "commander": "7.x", 766 | "glob": "^7.1.6" 767 | }, 768 | "bin": { 769 | "cleancss": "bin/cleancss" 770 | }, 771 | "engines": { 772 | "node": ">= 10.12.0" 773 | } 774 | }, 775 | "node_modules/clean-css-cli/node_modules/commander": { 776 | "version": "7.2.0", 777 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 778 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 779 | "dev": true, 780 | "engines": { 781 | "node": ">= 10" 782 | } 783 | }, 784 | "node_modules/cli-boxes": { 785 | "version": "3.0.0", 786 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", 787 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", 788 | "dev": true, 789 | "engines": { 790 | "node": ">=10" 791 | }, 792 | "funding": { 793 | "url": "https://github.com/sponsors/sindresorhus" 794 | } 795 | }, 796 | "node_modules/clipboardy": { 797 | "version": "3.0.0", 798 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", 799 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", 800 | "dev": true, 801 | "dependencies": { 802 | "arch": "^2.2.0", 803 | "execa": "^5.1.1", 804 | "is-wsl": "^2.2.0" 805 | }, 806 | "engines": { 807 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 808 | }, 809 | "funding": { 810 | "url": "https://github.com/sponsors/sindresorhus" 811 | } 812 | }, 813 | "node_modules/cliui": { 814 | "version": "7.0.4", 815 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 816 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 817 | "dev": true, 818 | "dependencies": { 819 | "string-width": "^4.2.0", 820 | "strip-ansi": "^6.0.0", 821 | "wrap-ansi": "^7.0.0" 822 | } 823 | }, 824 | "node_modules/cliui/node_modules/ansi-regex": { 825 | "version": "5.0.1", 826 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 827 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 828 | "dev": true, 829 | "engines": { 830 | "node": ">=8" 831 | } 832 | }, 833 | "node_modules/cliui/node_modules/string-width": { 834 | "version": "4.2.3", 835 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 836 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 837 | "dev": true, 838 | "dependencies": { 839 | "emoji-regex": "^8.0.0", 840 | "is-fullwidth-code-point": "^3.0.0", 841 | "strip-ansi": "^6.0.1" 842 | }, 843 | "engines": { 844 | "node": ">=8" 845 | } 846 | }, 847 | "node_modules/cliui/node_modules/strip-ansi": { 848 | "version": "6.0.1", 849 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 850 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 851 | "dev": true, 852 | "dependencies": { 853 | "ansi-regex": "^5.0.1" 854 | }, 855 | "engines": { 856 | "node": ">=8" 857 | } 858 | }, 859 | "node_modules/color-convert": { 860 | "version": "2.0.1", 861 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 862 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 863 | "dev": true, 864 | "dependencies": { 865 | "color-name": "~1.1.4" 866 | }, 867 | "engines": { 868 | "node": ">=7.0.0" 869 | } 870 | }, 871 | "node_modules/color-name": { 872 | "version": "1.1.4", 873 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 874 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 875 | "dev": true 876 | }, 877 | "node_modules/commander": { 878 | "version": "2.20.3", 879 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 880 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 881 | "dev": true 882 | }, 883 | "node_modules/compressible": { 884 | "version": "2.0.18", 885 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", 886 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", 887 | "dev": true, 888 | "dependencies": { 889 | "mime-db": ">= 1.43.0 < 2" 890 | }, 891 | "engines": { 892 | "node": ">= 0.6" 893 | } 894 | }, 895 | "node_modules/compression": { 896 | "version": "1.7.4", 897 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", 898 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", 899 | "dev": true, 900 | "dependencies": { 901 | "accepts": "~1.3.5", 902 | "bytes": "3.0.0", 903 | "compressible": "~2.0.16", 904 | "debug": "2.6.9", 905 | "on-headers": "~1.0.2", 906 | "safe-buffer": "5.1.2", 907 | "vary": "~1.1.2" 908 | }, 909 | "engines": { 910 | "node": ">= 0.8.0" 911 | } 912 | }, 913 | "node_modules/compression/node_modules/bytes": { 914 | "version": "3.0.0", 915 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 916 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", 917 | "dev": true, 918 | "engines": { 919 | "node": ">= 0.8" 920 | } 921 | }, 922 | "node_modules/concat-map": { 923 | "version": "0.0.1", 924 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 925 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 926 | "dev": true 927 | }, 928 | "node_modules/connect": { 929 | "version": "3.7.0", 930 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 931 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 932 | "dev": true, 933 | "dependencies": { 934 | "debug": "2.6.9", 935 | "finalhandler": "1.1.2", 936 | "parseurl": "~1.3.3", 937 | "utils-merge": "1.0.1" 938 | }, 939 | "engines": { 940 | "node": ">= 0.10.0" 941 | } 942 | }, 943 | "node_modules/content-disposition": { 944 | "version": "0.5.2", 945 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 946 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", 947 | "dev": true, 948 | "engines": { 949 | "node": ">= 0.6" 950 | } 951 | }, 952 | "node_modules/content-type": { 953 | "version": "1.0.5", 954 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 955 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 956 | "dev": true, 957 | "engines": { 958 | "node": ">= 0.6" 959 | } 960 | }, 961 | "node_modules/cookie": { 962 | "version": "0.4.2", 963 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 964 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 965 | "dev": true, 966 | "engines": { 967 | "node": ">= 0.6" 968 | } 969 | }, 970 | "node_modules/copy-anything": { 971 | "version": "2.0.6", 972 | "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", 973 | "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", 974 | "dev": true, 975 | "dependencies": { 976 | "is-what": "^3.14.1" 977 | }, 978 | "funding": { 979 | "url": "https://github.com/sponsors/mesqueeb" 980 | } 981 | }, 982 | "node_modules/cors": { 983 | "version": "2.8.5", 984 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 985 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 986 | "dev": true, 987 | "dependencies": { 988 | "object-assign": "^4", 989 | "vary": "^1" 990 | }, 991 | "engines": { 992 | "node": ">= 0.10" 993 | } 994 | }, 995 | "node_modules/cosmiconfig": { 996 | "version": "8.0.0", 997 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", 998 | "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", 999 | "dev": true, 1000 | "dependencies": { 1001 | "import-fresh": "^3.2.1", 1002 | "js-yaml": "^4.1.0", 1003 | "parse-json": "^5.0.0", 1004 | "path-type": "^4.0.0" 1005 | }, 1006 | "engines": { 1007 | "node": ">=14" 1008 | } 1009 | }, 1010 | "node_modules/cross-fetch": { 1011 | "version": "3.1.5", 1012 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 1013 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 1014 | "dev": true, 1015 | "dependencies": { 1016 | "node-fetch": "2.6.7" 1017 | } 1018 | }, 1019 | "node_modules/cross-spawn": { 1020 | "version": "7.0.3", 1021 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1022 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1023 | "dev": true, 1024 | "dependencies": { 1025 | "path-key": "^3.1.0", 1026 | "shebang-command": "^2.0.0", 1027 | "which": "^2.0.1" 1028 | }, 1029 | "engines": { 1030 | "node": ">= 8" 1031 | } 1032 | }, 1033 | "node_modules/cross-spawn/node_modules/which": { 1034 | "version": "2.0.2", 1035 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1036 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1037 | "dev": true, 1038 | "dependencies": { 1039 | "isexe": "^2.0.0" 1040 | }, 1041 | "bin": { 1042 | "node-which": "bin/node-which" 1043 | }, 1044 | "engines": { 1045 | "node": ">= 8" 1046 | } 1047 | }, 1048 | "node_modules/custom-event": { 1049 | "version": "1.0.1", 1050 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 1051 | "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", 1052 | "dev": true 1053 | }, 1054 | "node_modules/date-format": { 1055 | "version": "4.0.14", 1056 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", 1057 | "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", 1058 | "dev": true, 1059 | "engines": { 1060 | "node": ">=4.0" 1061 | } 1062 | }, 1063 | "node_modules/debug": { 1064 | "version": "2.6.9", 1065 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1066 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1067 | "dev": true, 1068 | "dependencies": { 1069 | "ms": "2.0.0" 1070 | } 1071 | }, 1072 | "node_modules/deep-extend": { 1073 | "version": "0.6.0", 1074 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1075 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1076 | "dev": true, 1077 | "engines": { 1078 | "node": ">=4.0.0" 1079 | } 1080 | }, 1081 | "node_modules/depd": { 1082 | "version": "2.0.0", 1083 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1084 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 1085 | "dev": true, 1086 | "engines": { 1087 | "node": ">= 0.8" 1088 | } 1089 | }, 1090 | "node_modules/destroy": { 1091 | "version": "1.2.0", 1092 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1093 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 1094 | "dev": true, 1095 | "engines": { 1096 | "node": ">= 0.8", 1097 | "npm": "1.2.8000 || >= 1.4.16" 1098 | } 1099 | }, 1100 | "node_modules/devtools-protocol": { 1101 | "version": "0.0.1094867", 1102 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", 1103 | "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", 1104 | "dev": true 1105 | }, 1106 | "node_modules/di": { 1107 | "version": "0.0.1", 1108 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 1109 | "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", 1110 | "dev": true 1111 | }, 1112 | "node_modules/dom-serialize": { 1113 | "version": "2.2.1", 1114 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 1115 | "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", 1116 | "dev": true, 1117 | "dependencies": { 1118 | "custom-event": "~1.0.0", 1119 | "ent": "~2.2.0", 1120 | "extend": "^3.0.0", 1121 | "void-elements": "^2.0.0" 1122 | } 1123 | }, 1124 | "node_modules/eastasianwidth": { 1125 | "version": "0.2.0", 1126 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1127 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1128 | "dev": true 1129 | }, 1130 | "node_modules/ee-first": { 1131 | "version": "1.1.1", 1132 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1133 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 1134 | "dev": true 1135 | }, 1136 | "node_modules/emoji-regex": { 1137 | "version": "8.0.0", 1138 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1139 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1140 | "dev": true 1141 | }, 1142 | "node_modules/encodeurl": { 1143 | "version": "1.0.2", 1144 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1145 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 1146 | "dev": true, 1147 | "engines": { 1148 | "node": ">= 0.8" 1149 | } 1150 | }, 1151 | "node_modules/end-of-stream": { 1152 | "version": "1.4.4", 1153 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1154 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1155 | "dev": true, 1156 | "dependencies": { 1157 | "once": "^1.4.0" 1158 | } 1159 | }, 1160 | "node_modules/engine.io": { 1161 | "version": "6.4.1", 1162 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", 1163 | "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", 1164 | "dev": true, 1165 | "dependencies": { 1166 | "@types/cookie": "^0.4.1", 1167 | "@types/cors": "^2.8.12", 1168 | "@types/node": ">=10.0.0", 1169 | "accepts": "~1.3.4", 1170 | "base64id": "2.0.0", 1171 | "cookie": "~0.4.1", 1172 | "cors": "~2.8.5", 1173 | "debug": "~4.3.1", 1174 | "engine.io-parser": "~5.0.3", 1175 | "ws": "~8.11.0" 1176 | }, 1177 | "engines": { 1178 | "node": ">=10.0.0" 1179 | } 1180 | }, 1181 | "node_modules/engine.io-parser": { 1182 | "version": "5.0.6", 1183 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", 1184 | "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", 1185 | "dev": true, 1186 | "engines": { 1187 | "node": ">=10.0.0" 1188 | } 1189 | }, 1190 | "node_modules/engine.io/node_modules/debug": { 1191 | "version": "4.3.4", 1192 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1193 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1194 | "dev": true, 1195 | "dependencies": { 1196 | "ms": "2.1.2" 1197 | }, 1198 | "engines": { 1199 | "node": ">=6.0" 1200 | }, 1201 | "peerDependenciesMeta": { 1202 | "supports-color": { 1203 | "optional": true 1204 | } 1205 | } 1206 | }, 1207 | "node_modules/engine.io/node_modules/ms": { 1208 | "version": "2.1.2", 1209 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1210 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1211 | "dev": true 1212 | }, 1213 | "node_modules/ent": { 1214 | "version": "2.2.0", 1215 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 1216 | "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", 1217 | "dev": true 1218 | }, 1219 | "node_modules/errno": { 1220 | "version": "0.1.8", 1221 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", 1222 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 1223 | "dev": true, 1224 | "optional": true, 1225 | "dependencies": { 1226 | "prr": "~1.0.1" 1227 | }, 1228 | "bin": { 1229 | "errno": "cli.js" 1230 | } 1231 | }, 1232 | "node_modules/error-ex": { 1233 | "version": "1.3.2", 1234 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1235 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1236 | "dev": true, 1237 | "dependencies": { 1238 | "is-arrayish": "^0.2.1" 1239 | } 1240 | }, 1241 | "node_modules/escalade": { 1242 | "version": "3.1.1", 1243 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1244 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1245 | "dev": true, 1246 | "engines": { 1247 | "node": ">=6" 1248 | } 1249 | }, 1250 | "node_modules/escape-html": { 1251 | "version": "1.0.3", 1252 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1253 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 1254 | "dev": true 1255 | }, 1256 | "node_modules/escape-string-regexp": { 1257 | "version": "1.0.5", 1258 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1259 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1260 | "dev": true, 1261 | "engines": { 1262 | "node": ">=0.8.0" 1263 | } 1264 | }, 1265 | "node_modules/eventemitter3": { 1266 | "version": "4.0.7", 1267 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 1268 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 1269 | "dev": true 1270 | }, 1271 | "node_modules/execa": { 1272 | "version": "5.1.1", 1273 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 1274 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 1275 | "dev": true, 1276 | "dependencies": { 1277 | "cross-spawn": "^7.0.3", 1278 | "get-stream": "^6.0.0", 1279 | "human-signals": "^2.1.0", 1280 | "is-stream": "^2.0.0", 1281 | "merge-stream": "^2.0.0", 1282 | "npm-run-path": "^4.0.1", 1283 | "onetime": "^5.1.2", 1284 | "signal-exit": "^3.0.3", 1285 | "strip-final-newline": "^2.0.0" 1286 | }, 1287 | "engines": { 1288 | "node": ">=10" 1289 | }, 1290 | "funding": { 1291 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 1292 | } 1293 | }, 1294 | "node_modules/execa/node_modules/get-stream": { 1295 | "version": "6.0.1", 1296 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 1297 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 1298 | "dev": true, 1299 | "engines": { 1300 | "node": ">=10" 1301 | }, 1302 | "funding": { 1303 | "url": "https://github.com/sponsors/sindresorhus" 1304 | } 1305 | }, 1306 | "node_modules/extend": { 1307 | "version": "3.0.2", 1308 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1309 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1310 | "dev": true 1311 | }, 1312 | "node_modules/extract-zip": { 1313 | "version": "2.0.1", 1314 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 1315 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 1316 | "dev": true, 1317 | "dependencies": { 1318 | "debug": "^4.1.1", 1319 | "get-stream": "^5.1.0", 1320 | "yauzl": "^2.10.0" 1321 | }, 1322 | "bin": { 1323 | "extract-zip": "cli.js" 1324 | }, 1325 | "engines": { 1326 | "node": ">= 10.17.0" 1327 | }, 1328 | "optionalDependencies": { 1329 | "@types/yauzl": "^2.9.1" 1330 | } 1331 | }, 1332 | "node_modules/extract-zip/node_modules/debug": { 1333 | "version": "4.3.4", 1334 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1335 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1336 | "dev": true, 1337 | "dependencies": { 1338 | "ms": "2.1.2" 1339 | }, 1340 | "engines": { 1341 | "node": ">=6.0" 1342 | }, 1343 | "peerDependenciesMeta": { 1344 | "supports-color": { 1345 | "optional": true 1346 | } 1347 | } 1348 | }, 1349 | "node_modules/extract-zip/node_modules/ms": { 1350 | "version": "2.1.2", 1351 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1352 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1353 | "dev": true 1354 | }, 1355 | "node_modules/fast-deep-equal": { 1356 | "version": "3.1.3", 1357 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1358 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1359 | "dev": true 1360 | }, 1361 | "node_modules/fast-url-parser": { 1362 | "version": "1.1.3", 1363 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", 1364 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", 1365 | "dev": true, 1366 | "dependencies": { 1367 | "punycode": "^1.3.2" 1368 | } 1369 | }, 1370 | "node_modules/fd-slicer": { 1371 | "version": "1.1.0", 1372 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1373 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 1374 | "dev": true, 1375 | "dependencies": { 1376 | "pend": "~1.2.0" 1377 | } 1378 | }, 1379 | "node_modules/fill-range": { 1380 | "version": "7.0.1", 1381 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1382 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1383 | "dev": true, 1384 | "dependencies": { 1385 | "to-regex-range": "^5.0.1" 1386 | }, 1387 | "engines": { 1388 | "node": ">=8" 1389 | } 1390 | }, 1391 | "node_modules/finalhandler": { 1392 | "version": "1.1.2", 1393 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1394 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1395 | "dev": true, 1396 | "dependencies": { 1397 | "debug": "2.6.9", 1398 | "encodeurl": "~1.0.2", 1399 | "escape-html": "~1.0.3", 1400 | "on-finished": "~2.3.0", 1401 | "parseurl": "~1.3.3", 1402 | "statuses": "~1.5.0", 1403 | "unpipe": "~1.0.0" 1404 | }, 1405 | "engines": { 1406 | "node": ">= 0.8" 1407 | } 1408 | }, 1409 | "node_modules/finalhandler/node_modules/on-finished": { 1410 | "version": "2.3.0", 1411 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1412 | "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 1413 | "dev": true, 1414 | "dependencies": { 1415 | "ee-first": "1.1.1" 1416 | }, 1417 | "engines": { 1418 | "node": ">= 0.8" 1419 | } 1420 | }, 1421 | "node_modules/flatted": { 1422 | "version": "3.2.7", 1423 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 1424 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 1425 | "dev": true 1426 | }, 1427 | "node_modules/follow-redirects": { 1428 | "version": "1.15.2", 1429 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1430 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 1431 | "dev": true, 1432 | "funding": [ 1433 | { 1434 | "type": "individual", 1435 | "url": "https://github.com/sponsors/RubenVerborgh" 1436 | } 1437 | ], 1438 | "engines": { 1439 | "node": ">=4.0" 1440 | }, 1441 | "peerDependenciesMeta": { 1442 | "debug": { 1443 | "optional": true 1444 | } 1445 | } 1446 | }, 1447 | "node_modules/fs-constants": { 1448 | "version": "1.0.0", 1449 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1450 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 1451 | "dev": true 1452 | }, 1453 | "node_modules/fs-extra": { 1454 | "version": "8.1.0", 1455 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1456 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1457 | "dev": true, 1458 | "dependencies": { 1459 | "graceful-fs": "^4.2.0", 1460 | "jsonfile": "^4.0.0", 1461 | "universalify": "^0.1.0" 1462 | }, 1463 | "engines": { 1464 | "node": ">=6 <7 || >=8" 1465 | } 1466 | }, 1467 | "node_modules/fs.realpath": { 1468 | "version": "1.0.0", 1469 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1470 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1471 | "dev": true 1472 | }, 1473 | "node_modules/function-bind": { 1474 | "version": "1.1.1", 1475 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1476 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1477 | "dev": true 1478 | }, 1479 | "node_modules/get-caller-file": { 1480 | "version": "2.0.5", 1481 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1482 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1483 | "dev": true, 1484 | "engines": { 1485 | "node": "6.* || 8.* || >= 10.*" 1486 | } 1487 | }, 1488 | "node_modules/get-intrinsic": { 1489 | "version": "1.2.0", 1490 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1491 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1492 | "dev": true, 1493 | "dependencies": { 1494 | "function-bind": "^1.1.1", 1495 | "has": "^1.0.3", 1496 | "has-symbols": "^1.0.3" 1497 | }, 1498 | "funding": { 1499 | "url": "https://github.com/sponsors/ljharb" 1500 | } 1501 | }, 1502 | "node_modules/get-stream": { 1503 | "version": "5.2.0", 1504 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1505 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1506 | "dev": true, 1507 | "dependencies": { 1508 | "pump": "^3.0.0" 1509 | }, 1510 | "engines": { 1511 | "node": ">=8" 1512 | }, 1513 | "funding": { 1514 | "url": "https://github.com/sponsors/sindresorhus" 1515 | } 1516 | }, 1517 | "node_modules/glob": { 1518 | "version": "7.2.3", 1519 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1520 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1521 | "dev": true, 1522 | "dependencies": { 1523 | "fs.realpath": "^1.0.0", 1524 | "inflight": "^1.0.4", 1525 | "inherits": "2", 1526 | "minimatch": "^3.1.1", 1527 | "once": "^1.3.0", 1528 | "path-is-absolute": "^1.0.0" 1529 | }, 1530 | "engines": { 1531 | "node": "*" 1532 | }, 1533 | "funding": { 1534 | "url": "https://github.com/sponsors/isaacs" 1535 | } 1536 | }, 1537 | "node_modules/glob-parent": { 1538 | "version": "5.1.2", 1539 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1540 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1541 | "dev": true, 1542 | "dependencies": { 1543 | "is-glob": "^4.0.1" 1544 | }, 1545 | "engines": { 1546 | "node": ">= 6" 1547 | } 1548 | }, 1549 | "node_modules/globalyzer": { 1550 | "version": "0.1.0", 1551 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 1552 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", 1553 | "dev": true 1554 | }, 1555 | "node_modules/globrex": { 1556 | "version": "0.1.2", 1557 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 1558 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", 1559 | "dev": true 1560 | }, 1561 | "node_modules/graceful-fs": { 1562 | "version": "4.2.10", 1563 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1564 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 1565 | "dev": true 1566 | }, 1567 | "node_modules/has": { 1568 | "version": "1.0.3", 1569 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1570 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1571 | "dev": true, 1572 | "dependencies": { 1573 | "function-bind": "^1.1.1" 1574 | }, 1575 | "engines": { 1576 | "node": ">= 0.4.0" 1577 | } 1578 | }, 1579 | "node_modules/has-flag": { 1580 | "version": "4.0.0", 1581 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1582 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1583 | "dev": true, 1584 | "engines": { 1585 | "node": ">=8" 1586 | } 1587 | }, 1588 | "node_modules/has-symbols": { 1589 | "version": "1.0.3", 1590 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1591 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1592 | "dev": true, 1593 | "engines": { 1594 | "node": ">= 0.4" 1595 | }, 1596 | "funding": { 1597 | "url": "https://github.com/sponsors/ljharb" 1598 | } 1599 | }, 1600 | "node_modules/http-errors": { 1601 | "version": "2.0.0", 1602 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1603 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1604 | "dev": true, 1605 | "dependencies": { 1606 | "depd": "2.0.0", 1607 | "inherits": "2.0.4", 1608 | "setprototypeof": "1.2.0", 1609 | "statuses": "2.0.1", 1610 | "toidentifier": "1.0.1" 1611 | }, 1612 | "engines": { 1613 | "node": ">= 0.8" 1614 | } 1615 | }, 1616 | "node_modules/http-errors/node_modules/statuses": { 1617 | "version": "2.0.1", 1618 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1619 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1620 | "dev": true, 1621 | "engines": { 1622 | "node": ">= 0.8" 1623 | } 1624 | }, 1625 | "node_modules/http-proxy": { 1626 | "version": "1.18.1", 1627 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 1628 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 1629 | "dev": true, 1630 | "dependencies": { 1631 | "eventemitter3": "^4.0.0", 1632 | "follow-redirects": "^1.0.0", 1633 | "requires-port": "^1.0.0" 1634 | }, 1635 | "engines": { 1636 | "node": ">=8.0.0" 1637 | } 1638 | }, 1639 | "node_modules/https-proxy-agent": { 1640 | "version": "5.0.1", 1641 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1642 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1643 | "dev": true, 1644 | "dependencies": { 1645 | "agent-base": "6", 1646 | "debug": "4" 1647 | }, 1648 | "engines": { 1649 | "node": ">= 6" 1650 | } 1651 | }, 1652 | "node_modules/https-proxy-agent/node_modules/debug": { 1653 | "version": "4.3.4", 1654 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1655 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1656 | "dev": true, 1657 | "dependencies": { 1658 | "ms": "2.1.2" 1659 | }, 1660 | "engines": { 1661 | "node": ">=6.0" 1662 | }, 1663 | "peerDependenciesMeta": { 1664 | "supports-color": { 1665 | "optional": true 1666 | } 1667 | } 1668 | }, 1669 | "node_modules/https-proxy-agent/node_modules/ms": { 1670 | "version": "2.1.2", 1671 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1672 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1673 | "dev": true 1674 | }, 1675 | "node_modules/human-signals": { 1676 | "version": "2.1.0", 1677 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 1678 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 1679 | "dev": true, 1680 | "engines": { 1681 | "node": ">=10.17.0" 1682 | } 1683 | }, 1684 | "node_modules/iconv-lite": { 1685 | "version": "0.4.24", 1686 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1687 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1688 | "dev": true, 1689 | "dependencies": { 1690 | "safer-buffer": ">= 2.1.2 < 3" 1691 | }, 1692 | "engines": { 1693 | "node": ">=0.10.0" 1694 | } 1695 | }, 1696 | "node_modules/ieee754": { 1697 | "version": "1.2.1", 1698 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1699 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1700 | "dev": true, 1701 | "funding": [ 1702 | { 1703 | "type": "github", 1704 | "url": "https://github.com/sponsors/feross" 1705 | }, 1706 | { 1707 | "type": "patreon", 1708 | "url": "https://www.patreon.com/feross" 1709 | }, 1710 | { 1711 | "type": "consulting", 1712 | "url": "https://feross.org/support" 1713 | } 1714 | ] 1715 | }, 1716 | "node_modules/image-size": { 1717 | "version": "0.5.5", 1718 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", 1719 | "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 1720 | "dev": true, 1721 | "optional": true, 1722 | "bin": { 1723 | "image-size": "bin/image-size.js" 1724 | }, 1725 | "engines": { 1726 | "node": ">=0.10.0" 1727 | } 1728 | }, 1729 | "node_modules/import-fresh": { 1730 | "version": "3.3.0", 1731 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1732 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1733 | "dev": true, 1734 | "dependencies": { 1735 | "parent-module": "^1.0.0", 1736 | "resolve-from": "^4.0.0" 1737 | }, 1738 | "engines": { 1739 | "node": ">=6" 1740 | }, 1741 | "funding": { 1742 | "url": "https://github.com/sponsors/sindresorhus" 1743 | } 1744 | }, 1745 | "node_modules/inflight": { 1746 | "version": "1.0.6", 1747 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1748 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1749 | "dev": true, 1750 | "dependencies": { 1751 | "once": "^1.3.0", 1752 | "wrappy": "1" 1753 | } 1754 | }, 1755 | "node_modules/inherits": { 1756 | "version": "2.0.4", 1757 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1758 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1759 | "dev": true 1760 | }, 1761 | "node_modules/ini": { 1762 | "version": "1.3.8", 1763 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1764 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1765 | "dev": true 1766 | }, 1767 | "node_modules/is-arrayish": { 1768 | "version": "0.2.1", 1769 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1770 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 1771 | "dev": true 1772 | }, 1773 | "node_modules/is-binary-path": { 1774 | "version": "2.1.0", 1775 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1776 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1777 | "dev": true, 1778 | "dependencies": { 1779 | "binary-extensions": "^2.0.0" 1780 | }, 1781 | "engines": { 1782 | "node": ">=8" 1783 | } 1784 | }, 1785 | "node_modules/is-docker": { 1786 | "version": "2.2.1", 1787 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 1788 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 1789 | "dev": true, 1790 | "bin": { 1791 | "is-docker": "cli.js" 1792 | }, 1793 | "engines": { 1794 | "node": ">=8" 1795 | }, 1796 | "funding": { 1797 | "url": "https://github.com/sponsors/sindresorhus" 1798 | } 1799 | }, 1800 | "node_modules/is-extglob": { 1801 | "version": "2.1.1", 1802 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1803 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1804 | "dev": true, 1805 | "engines": { 1806 | "node": ">=0.10.0" 1807 | } 1808 | }, 1809 | "node_modules/is-fullwidth-code-point": { 1810 | "version": "3.0.0", 1811 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1812 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1813 | "dev": true, 1814 | "engines": { 1815 | "node": ">=8" 1816 | } 1817 | }, 1818 | "node_modules/is-glob": { 1819 | "version": "4.0.3", 1820 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1821 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1822 | "dev": true, 1823 | "dependencies": { 1824 | "is-extglob": "^2.1.1" 1825 | }, 1826 | "engines": { 1827 | "node": ">=0.10.0" 1828 | } 1829 | }, 1830 | "node_modules/is-number": { 1831 | "version": "7.0.0", 1832 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1833 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1834 | "dev": true, 1835 | "engines": { 1836 | "node": ">=0.12.0" 1837 | } 1838 | }, 1839 | "node_modules/is-port-reachable": { 1840 | "version": "4.0.0", 1841 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", 1842 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", 1843 | "dev": true, 1844 | "engines": { 1845 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1846 | }, 1847 | "funding": { 1848 | "url": "https://github.com/sponsors/sindresorhus" 1849 | } 1850 | }, 1851 | "node_modules/is-stream": { 1852 | "version": "2.0.1", 1853 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1854 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1855 | "dev": true, 1856 | "engines": { 1857 | "node": ">=8" 1858 | }, 1859 | "funding": { 1860 | "url": "https://github.com/sponsors/sindresorhus" 1861 | } 1862 | }, 1863 | "node_modules/is-what": { 1864 | "version": "3.14.1", 1865 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", 1866 | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", 1867 | "dev": true 1868 | }, 1869 | "node_modules/is-wsl": { 1870 | "version": "2.2.0", 1871 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 1872 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 1873 | "dev": true, 1874 | "dependencies": { 1875 | "is-docker": "^2.0.0" 1876 | }, 1877 | "engines": { 1878 | "node": ">=8" 1879 | } 1880 | }, 1881 | "node_modules/isbinaryfile": { 1882 | "version": "4.0.10", 1883 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", 1884 | "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", 1885 | "dev": true, 1886 | "engines": { 1887 | "node": ">= 8.0.0" 1888 | }, 1889 | "funding": { 1890 | "url": "https://github.com/sponsors/gjtorikian/" 1891 | } 1892 | }, 1893 | "node_modules/isexe": { 1894 | "version": "2.0.0", 1895 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1896 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1897 | "dev": true 1898 | }, 1899 | "node_modules/jquery": { 1900 | "version": "3.6.3", 1901 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", 1902 | "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==", 1903 | "dev": true 1904 | }, 1905 | "node_modules/js-tokens": { 1906 | "version": "4.0.0", 1907 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1908 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1909 | "dev": true 1910 | }, 1911 | "node_modules/js-yaml": { 1912 | "version": "4.1.0", 1913 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1914 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1915 | "dev": true, 1916 | "dependencies": { 1917 | "argparse": "^2.0.1" 1918 | }, 1919 | "bin": { 1920 | "js-yaml": "bin/js-yaml.js" 1921 | } 1922 | }, 1923 | "node_modules/json-parse-even-better-errors": { 1924 | "version": "2.3.1", 1925 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1926 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1927 | "dev": true 1928 | }, 1929 | "node_modules/json-schema-traverse": { 1930 | "version": "1.0.0", 1931 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1932 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1933 | "dev": true 1934 | }, 1935 | "node_modules/jsonfile": { 1936 | "version": "4.0.0", 1937 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1938 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1939 | "dev": true, 1940 | "optionalDependencies": { 1941 | "graceful-fs": "^4.1.6" 1942 | } 1943 | }, 1944 | "node_modules/karma": { 1945 | "version": "6.4.1", 1946 | "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", 1947 | "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", 1948 | "dev": true, 1949 | "dependencies": { 1950 | "@colors/colors": "1.5.0", 1951 | "body-parser": "^1.19.0", 1952 | "braces": "^3.0.2", 1953 | "chokidar": "^3.5.1", 1954 | "connect": "^3.7.0", 1955 | "di": "^0.0.1", 1956 | "dom-serialize": "^2.2.1", 1957 | "glob": "^7.1.7", 1958 | "graceful-fs": "^4.2.6", 1959 | "http-proxy": "^1.18.1", 1960 | "isbinaryfile": "^4.0.8", 1961 | "lodash": "^4.17.21", 1962 | "log4js": "^6.4.1", 1963 | "mime": "^2.5.2", 1964 | "minimatch": "^3.0.4", 1965 | "mkdirp": "^0.5.5", 1966 | "qjobs": "^1.2.0", 1967 | "range-parser": "^1.2.1", 1968 | "rimraf": "^3.0.2", 1969 | "socket.io": "^4.4.1", 1970 | "source-map": "^0.6.1", 1971 | "tmp": "^0.2.1", 1972 | "ua-parser-js": "^0.7.30", 1973 | "yargs": "^16.1.1" 1974 | }, 1975 | "bin": { 1976 | "karma": "bin/karma" 1977 | }, 1978 | "engines": { 1979 | "node": ">= 10" 1980 | } 1981 | }, 1982 | "node_modules/karma-chrome-launcher": { 1983 | "version": "3.1.1", 1984 | "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", 1985 | "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", 1986 | "dev": true, 1987 | "dependencies": { 1988 | "which": "^1.2.1" 1989 | } 1990 | }, 1991 | "node_modules/karma-qunit": { 1992 | "version": "4.1.2", 1993 | "resolved": "https://registry.npmjs.org/karma-qunit/-/karma-qunit-4.1.2.tgz", 1994 | "integrity": "sha512-taTPqBeHCOlkeKTSzQgIKzAUb79vw3rfbCph+xwwh63tyGjNtljwx91VArhIM9DzIIR3gB9G214wQg+oXI9ycw==", 1995 | "dev": true, 1996 | "peerDependencies": { 1997 | "karma": "^4.0.0 || ^5.0.0 || ^6.0.0", 1998 | "qunit": "^2.0.0" 1999 | } 2000 | }, 2001 | "node_modules/less": { 2002 | "version": "4.1.3", 2003 | "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", 2004 | "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", 2005 | "dev": true, 2006 | "dependencies": { 2007 | "copy-anything": "^2.0.1", 2008 | "parse-node-version": "^1.0.1", 2009 | "tslib": "^2.3.0" 2010 | }, 2011 | "bin": { 2012 | "lessc": "bin/lessc" 2013 | }, 2014 | "engines": { 2015 | "node": ">=6" 2016 | }, 2017 | "optionalDependencies": { 2018 | "errno": "^0.1.1", 2019 | "graceful-fs": "^4.1.2", 2020 | "image-size": "~0.5.0", 2021 | "make-dir": "^2.1.0", 2022 | "mime": "^1.4.1", 2023 | "needle": "^3.1.0", 2024 | "source-map": "~0.6.0" 2025 | } 2026 | }, 2027 | "node_modules/less/node_modules/mime": { 2028 | "version": "1.6.0", 2029 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2030 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 2031 | "dev": true, 2032 | "optional": true, 2033 | "bin": { 2034 | "mime": "cli.js" 2035 | }, 2036 | "engines": { 2037 | "node": ">=4" 2038 | } 2039 | }, 2040 | "node_modules/lines-and-columns": { 2041 | "version": "1.2.4", 2042 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 2043 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 2044 | "dev": true 2045 | }, 2046 | "node_modules/lodash": { 2047 | "version": "4.17.21", 2048 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2049 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2050 | "dev": true 2051 | }, 2052 | "node_modules/log4js": { 2053 | "version": "6.8.0", 2054 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.8.0.tgz", 2055 | "integrity": "sha512-g+V8gZyurIexrOvWQ+AcZsIvuK/lBnx2argejZxL4gVZ4Hq02kUYH6WZOnqxgBml+zzQZYdaEoTN84B6Hzm8Fg==", 2056 | "dev": true, 2057 | "dependencies": { 2058 | "date-format": "^4.0.14", 2059 | "debug": "^4.3.4", 2060 | "flatted": "^3.2.7", 2061 | "rfdc": "^1.3.0", 2062 | "streamroller": "^3.1.5" 2063 | }, 2064 | "engines": { 2065 | "node": ">=8.0" 2066 | } 2067 | }, 2068 | "node_modules/log4js/node_modules/debug": { 2069 | "version": "4.3.4", 2070 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2071 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2072 | "dev": true, 2073 | "dependencies": { 2074 | "ms": "2.1.2" 2075 | }, 2076 | "engines": { 2077 | "node": ">=6.0" 2078 | }, 2079 | "peerDependenciesMeta": { 2080 | "supports-color": { 2081 | "optional": true 2082 | } 2083 | } 2084 | }, 2085 | "node_modules/log4js/node_modules/ms": { 2086 | "version": "2.1.2", 2087 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2088 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2089 | "dev": true 2090 | }, 2091 | "node_modules/make-dir": { 2092 | "version": "2.1.0", 2093 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 2094 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 2095 | "dev": true, 2096 | "optional": true, 2097 | "dependencies": { 2098 | "pify": "^4.0.1", 2099 | "semver": "^5.6.0" 2100 | }, 2101 | "engines": { 2102 | "node": ">=6" 2103 | } 2104 | }, 2105 | "node_modules/media-typer": { 2106 | "version": "0.3.0", 2107 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2108 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 2109 | "dev": true, 2110 | "engines": { 2111 | "node": ">= 0.6" 2112 | } 2113 | }, 2114 | "node_modules/merge-stream": { 2115 | "version": "2.0.0", 2116 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2117 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2118 | "dev": true 2119 | }, 2120 | "node_modules/mime": { 2121 | "version": "2.6.0", 2122 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 2123 | "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 2124 | "dev": true, 2125 | "bin": { 2126 | "mime": "cli.js" 2127 | }, 2128 | "engines": { 2129 | "node": ">=4.0.0" 2130 | } 2131 | }, 2132 | "node_modules/mime-db": { 2133 | "version": "1.52.0", 2134 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2135 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2136 | "dev": true, 2137 | "engines": { 2138 | "node": ">= 0.6" 2139 | } 2140 | }, 2141 | "node_modules/mime-types": { 2142 | "version": "2.1.35", 2143 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2144 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2145 | "dev": true, 2146 | "dependencies": { 2147 | "mime-db": "1.52.0" 2148 | }, 2149 | "engines": { 2150 | "node": ">= 0.6" 2151 | } 2152 | }, 2153 | "node_modules/mimic-fn": { 2154 | "version": "2.1.0", 2155 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2156 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2157 | "dev": true, 2158 | "engines": { 2159 | "node": ">=6" 2160 | } 2161 | }, 2162 | "node_modules/minimatch": { 2163 | "version": "3.1.2", 2164 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2165 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2166 | "dev": true, 2167 | "dependencies": { 2168 | "brace-expansion": "^1.1.7" 2169 | }, 2170 | "engines": { 2171 | "node": "*" 2172 | } 2173 | }, 2174 | "node_modules/minimist": { 2175 | "version": "1.2.8", 2176 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2177 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2178 | "dev": true, 2179 | "funding": { 2180 | "url": "https://github.com/sponsors/ljharb" 2181 | } 2182 | }, 2183 | "node_modules/mitt": { 2184 | "version": "3.0.0", 2185 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 2186 | "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", 2187 | "dev": true 2188 | }, 2189 | "node_modules/mkdirp": { 2190 | "version": "0.5.6", 2191 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2192 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2193 | "dev": true, 2194 | "dependencies": { 2195 | "minimist": "^1.2.6" 2196 | }, 2197 | "bin": { 2198 | "mkdirp": "bin/cmd.js" 2199 | } 2200 | }, 2201 | "node_modules/mkdirp-classic": { 2202 | "version": "0.5.3", 2203 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 2204 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 2205 | "dev": true 2206 | }, 2207 | "node_modules/ms": { 2208 | "version": "2.0.0", 2209 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2210 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 2211 | "dev": true 2212 | }, 2213 | "node_modules/needle": { 2214 | "version": "3.2.0", 2215 | "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", 2216 | "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", 2217 | "dev": true, 2218 | "optional": true, 2219 | "dependencies": { 2220 | "debug": "^3.2.6", 2221 | "iconv-lite": "^0.6.3", 2222 | "sax": "^1.2.4" 2223 | }, 2224 | "bin": { 2225 | "needle": "bin/needle" 2226 | }, 2227 | "engines": { 2228 | "node": ">= 4.4.x" 2229 | } 2230 | }, 2231 | "node_modules/needle/node_modules/debug": { 2232 | "version": "3.2.7", 2233 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 2234 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 2235 | "dev": true, 2236 | "optional": true, 2237 | "dependencies": { 2238 | "ms": "^2.1.1" 2239 | } 2240 | }, 2241 | "node_modules/needle/node_modules/iconv-lite": { 2242 | "version": "0.6.3", 2243 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 2244 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 2245 | "dev": true, 2246 | "optional": true, 2247 | "dependencies": { 2248 | "safer-buffer": ">= 2.1.2 < 3.0.0" 2249 | }, 2250 | "engines": { 2251 | "node": ">=0.10.0" 2252 | } 2253 | }, 2254 | "node_modules/needle/node_modules/ms": { 2255 | "version": "2.1.3", 2256 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2257 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2258 | "dev": true, 2259 | "optional": true 2260 | }, 2261 | "node_modules/negotiator": { 2262 | "version": "0.6.3", 2263 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 2264 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 2265 | "dev": true, 2266 | "engines": { 2267 | "node": ">= 0.6" 2268 | } 2269 | }, 2270 | "node_modules/node-fetch": { 2271 | "version": "2.6.7", 2272 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2273 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2274 | "dev": true, 2275 | "dependencies": { 2276 | "whatwg-url": "^5.0.0" 2277 | }, 2278 | "engines": { 2279 | "node": "4.x || >=6.0.0" 2280 | }, 2281 | "peerDependencies": { 2282 | "encoding": "^0.1.0" 2283 | }, 2284 | "peerDependenciesMeta": { 2285 | "encoding": { 2286 | "optional": true 2287 | } 2288 | } 2289 | }, 2290 | "node_modules/node-watch": { 2291 | "version": "0.7.3", 2292 | "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", 2293 | "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", 2294 | "dev": true, 2295 | "engines": { 2296 | "node": ">=6" 2297 | } 2298 | }, 2299 | "node_modules/normalize-path": { 2300 | "version": "3.0.0", 2301 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2302 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2303 | "dev": true, 2304 | "engines": { 2305 | "node": ">=0.10.0" 2306 | } 2307 | }, 2308 | "node_modules/npm-run-path": { 2309 | "version": "4.0.1", 2310 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 2311 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 2312 | "dev": true, 2313 | "dependencies": { 2314 | "path-key": "^3.0.0" 2315 | }, 2316 | "engines": { 2317 | "node": ">=8" 2318 | } 2319 | }, 2320 | "node_modules/object-assign": { 2321 | "version": "4.1.1", 2322 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2323 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 2324 | "dev": true, 2325 | "engines": { 2326 | "node": ">=0.10.0" 2327 | } 2328 | }, 2329 | "node_modules/object-inspect": { 2330 | "version": "1.12.3", 2331 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 2332 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 2333 | "dev": true, 2334 | "funding": { 2335 | "url": "https://github.com/sponsors/ljharb" 2336 | } 2337 | }, 2338 | "node_modules/on-finished": { 2339 | "version": "2.4.1", 2340 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 2341 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 2342 | "dev": true, 2343 | "dependencies": { 2344 | "ee-first": "1.1.1" 2345 | }, 2346 | "engines": { 2347 | "node": ">= 0.8" 2348 | } 2349 | }, 2350 | "node_modules/on-headers": { 2351 | "version": "1.0.2", 2352 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 2353 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 2354 | "dev": true, 2355 | "engines": { 2356 | "node": ">= 0.8" 2357 | } 2358 | }, 2359 | "node_modules/once": { 2360 | "version": "1.4.0", 2361 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2362 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2363 | "dev": true, 2364 | "dependencies": { 2365 | "wrappy": "1" 2366 | } 2367 | }, 2368 | "node_modules/onetime": { 2369 | "version": "5.1.2", 2370 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 2371 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 2372 | "dev": true, 2373 | "dependencies": { 2374 | "mimic-fn": "^2.1.0" 2375 | }, 2376 | "engines": { 2377 | "node": ">=6" 2378 | }, 2379 | "funding": { 2380 | "url": "https://github.com/sponsors/sindresorhus" 2381 | } 2382 | }, 2383 | "node_modules/parent-module": { 2384 | "version": "1.0.1", 2385 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2386 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2387 | "dev": true, 2388 | "dependencies": { 2389 | "callsites": "^3.0.0" 2390 | }, 2391 | "engines": { 2392 | "node": ">=6" 2393 | } 2394 | }, 2395 | "node_modules/parse-json": { 2396 | "version": "5.2.0", 2397 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2398 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2399 | "dev": true, 2400 | "dependencies": { 2401 | "@babel/code-frame": "^7.0.0", 2402 | "error-ex": "^1.3.1", 2403 | "json-parse-even-better-errors": "^2.3.0", 2404 | "lines-and-columns": "^1.1.6" 2405 | }, 2406 | "engines": { 2407 | "node": ">=8" 2408 | }, 2409 | "funding": { 2410 | "url": "https://github.com/sponsors/sindresorhus" 2411 | } 2412 | }, 2413 | "node_modules/parse-node-version": { 2414 | "version": "1.0.1", 2415 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", 2416 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", 2417 | "dev": true, 2418 | "engines": { 2419 | "node": ">= 0.10" 2420 | } 2421 | }, 2422 | "node_modules/parseurl": { 2423 | "version": "1.3.3", 2424 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2425 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 2426 | "dev": true, 2427 | "engines": { 2428 | "node": ">= 0.8" 2429 | } 2430 | }, 2431 | "node_modules/path-is-absolute": { 2432 | "version": "1.0.1", 2433 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2434 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2435 | "dev": true, 2436 | "engines": { 2437 | "node": ">=0.10.0" 2438 | } 2439 | }, 2440 | "node_modules/path-is-inside": { 2441 | "version": "1.0.2", 2442 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2443 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", 2444 | "dev": true 2445 | }, 2446 | "node_modules/path-key": { 2447 | "version": "3.1.1", 2448 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2449 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2450 | "dev": true, 2451 | "engines": { 2452 | "node": ">=8" 2453 | } 2454 | }, 2455 | "node_modules/path-to-regexp": { 2456 | "version": "2.2.1", 2457 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", 2458 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", 2459 | "dev": true 2460 | }, 2461 | "node_modules/path-type": { 2462 | "version": "4.0.0", 2463 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2464 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2465 | "dev": true, 2466 | "engines": { 2467 | "node": ">=8" 2468 | } 2469 | }, 2470 | "node_modules/pend": { 2471 | "version": "1.2.0", 2472 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 2473 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", 2474 | "dev": true 2475 | }, 2476 | "node_modules/picomatch": { 2477 | "version": "2.3.1", 2478 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2479 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2480 | "dev": true, 2481 | "engines": { 2482 | "node": ">=8.6" 2483 | }, 2484 | "funding": { 2485 | "url": "https://github.com/sponsors/jonschlinkert" 2486 | } 2487 | }, 2488 | "node_modules/pify": { 2489 | "version": "4.0.1", 2490 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2491 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2492 | "dev": true, 2493 | "optional": true, 2494 | "engines": { 2495 | "node": ">=6" 2496 | } 2497 | }, 2498 | "node_modules/progress": { 2499 | "version": "2.0.3", 2500 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2501 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2502 | "dev": true, 2503 | "engines": { 2504 | "node": ">=0.4.0" 2505 | } 2506 | }, 2507 | "node_modules/proxy-from-env": { 2508 | "version": "1.1.0", 2509 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 2510 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 2511 | "dev": true 2512 | }, 2513 | "node_modules/prr": { 2514 | "version": "1.0.1", 2515 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 2516 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 2517 | "dev": true, 2518 | "optional": true 2519 | }, 2520 | "node_modules/pump": { 2521 | "version": "3.0.0", 2522 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2523 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2524 | "dev": true, 2525 | "dependencies": { 2526 | "end-of-stream": "^1.1.0", 2527 | "once": "^1.3.1" 2528 | } 2529 | }, 2530 | "node_modules/punycode": { 2531 | "version": "1.4.1", 2532 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2533 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 2534 | "dev": true 2535 | }, 2536 | "node_modules/puppeteer": { 2537 | "version": "19.7.2", 2538 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", 2539 | "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", 2540 | "dev": true, 2541 | "hasInstallScript": true, 2542 | "dependencies": { 2543 | "cosmiconfig": "8.0.0", 2544 | "https-proxy-agent": "5.0.1", 2545 | "progress": "2.0.3", 2546 | "proxy-from-env": "1.1.0", 2547 | "puppeteer-core": "19.7.2" 2548 | }, 2549 | "engines": { 2550 | "node": ">=14.1.0" 2551 | } 2552 | }, 2553 | "node_modules/puppeteer-core": { 2554 | "version": "19.7.2", 2555 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", 2556 | "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", 2557 | "dev": true, 2558 | "dependencies": { 2559 | "chromium-bidi": "0.4.4", 2560 | "cross-fetch": "3.1.5", 2561 | "debug": "4.3.4", 2562 | "devtools-protocol": "0.0.1094867", 2563 | "extract-zip": "2.0.1", 2564 | "https-proxy-agent": "5.0.1", 2565 | "proxy-from-env": "1.1.0", 2566 | "rimraf": "3.0.2", 2567 | "tar-fs": "2.1.1", 2568 | "unbzip2-stream": "1.4.3", 2569 | "ws": "8.11.0" 2570 | }, 2571 | "engines": { 2572 | "node": ">=14.1.0" 2573 | }, 2574 | "peerDependencies": { 2575 | "typescript": ">= 4.7.4" 2576 | }, 2577 | "peerDependenciesMeta": { 2578 | "typescript": { 2579 | "optional": true 2580 | } 2581 | } 2582 | }, 2583 | "node_modules/puppeteer-core/node_modules/debug": { 2584 | "version": "4.3.4", 2585 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2586 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2587 | "dev": true, 2588 | "dependencies": { 2589 | "ms": "2.1.2" 2590 | }, 2591 | "engines": { 2592 | "node": ">=6.0" 2593 | }, 2594 | "peerDependenciesMeta": { 2595 | "supports-color": { 2596 | "optional": true 2597 | } 2598 | } 2599 | }, 2600 | "node_modules/puppeteer-core/node_modules/ms": { 2601 | "version": "2.1.2", 2602 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2603 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2604 | "dev": true 2605 | }, 2606 | "node_modules/qjobs": { 2607 | "version": "1.2.0", 2608 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", 2609 | "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", 2610 | "dev": true, 2611 | "engines": { 2612 | "node": ">=0.9" 2613 | } 2614 | }, 2615 | "node_modules/qs": { 2616 | "version": "6.11.0", 2617 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 2618 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 2619 | "dev": true, 2620 | "dependencies": { 2621 | "side-channel": "^1.0.4" 2622 | }, 2623 | "engines": { 2624 | "node": ">=0.6" 2625 | }, 2626 | "funding": { 2627 | "url": "https://github.com/sponsors/ljharb" 2628 | } 2629 | }, 2630 | "node_modules/qunit": { 2631 | "version": "2.19.4", 2632 | "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.19.4.tgz", 2633 | "integrity": "sha512-aqUzzUeCqlleWYKlpgfdHHw9C6KxkB9H3wNfiBg5yHqQMzy0xw/pbCRHYFkjl8MsP/t8qkTQE+JTYL71azgiew==", 2634 | "dev": true, 2635 | "dependencies": { 2636 | "commander": "7.2.0", 2637 | "node-watch": "0.7.3", 2638 | "tiny-glob": "0.2.9" 2639 | }, 2640 | "bin": { 2641 | "qunit": "bin/qunit.js" 2642 | }, 2643 | "engines": { 2644 | "node": ">=10" 2645 | } 2646 | }, 2647 | "node_modules/qunit/node_modules/commander": { 2648 | "version": "7.2.0", 2649 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 2650 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 2651 | "dev": true, 2652 | "engines": { 2653 | "node": ">= 10" 2654 | } 2655 | }, 2656 | "node_modules/range-parser": { 2657 | "version": "1.2.1", 2658 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2659 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 2660 | "dev": true, 2661 | "engines": { 2662 | "node": ">= 0.6" 2663 | } 2664 | }, 2665 | "node_modules/raw-body": { 2666 | "version": "2.5.2", 2667 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 2668 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 2669 | "dev": true, 2670 | "dependencies": { 2671 | "bytes": "3.1.2", 2672 | "http-errors": "2.0.0", 2673 | "iconv-lite": "0.4.24", 2674 | "unpipe": "1.0.0" 2675 | }, 2676 | "engines": { 2677 | "node": ">= 0.8" 2678 | } 2679 | }, 2680 | "node_modules/rc": { 2681 | "version": "1.2.8", 2682 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2683 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2684 | "dev": true, 2685 | "dependencies": { 2686 | "deep-extend": "^0.6.0", 2687 | "ini": "~1.3.0", 2688 | "minimist": "^1.2.0", 2689 | "strip-json-comments": "~2.0.1" 2690 | }, 2691 | "bin": { 2692 | "rc": "cli.js" 2693 | } 2694 | }, 2695 | "node_modules/readable-stream": { 2696 | "version": "3.6.1", 2697 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", 2698 | "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", 2699 | "dev": true, 2700 | "dependencies": { 2701 | "inherits": "^2.0.3", 2702 | "string_decoder": "^1.1.1", 2703 | "util-deprecate": "^1.0.1" 2704 | }, 2705 | "engines": { 2706 | "node": ">= 6" 2707 | } 2708 | }, 2709 | "node_modules/readdirp": { 2710 | "version": "3.6.0", 2711 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2712 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2713 | "dev": true, 2714 | "dependencies": { 2715 | "picomatch": "^2.2.1" 2716 | }, 2717 | "engines": { 2718 | "node": ">=8.10.0" 2719 | } 2720 | }, 2721 | "node_modules/registry-auth-token": { 2722 | "version": "3.3.2", 2723 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", 2724 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", 2725 | "dev": true, 2726 | "dependencies": { 2727 | "rc": "^1.1.6", 2728 | "safe-buffer": "^5.0.1" 2729 | } 2730 | }, 2731 | "node_modules/registry-url": { 2732 | "version": "3.1.0", 2733 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 2734 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", 2735 | "dev": true, 2736 | "dependencies": { 2737 | "rc": "^1.0.1" 2738 | }, 2739 | "engines": { 2740 | "node": ">=0.10.0" 2741 | } 2742 | }, 2743 | "node_modules/require-directory": { 2744 | "version": "2.1.1", 2745 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2746 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 2747 | "dev": true, 2748 | "engines": { 2749 | "node": ">=0.10.0" 2750 | } 2751 | }, 2752 | "node_modules/require-from-string": { 2753 | "version": "2.0.2", 2754 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2755 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2756 | "dev": true, 2757 | "engines": { 2758 | "node": ">=0.10.0" 2759 | } 2760 | }, 2761 | "node_modules/requires-port": { 2762 | "version": "1.0.0", 2763 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2764 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 2765 | "dev": true 2766 | }, 2767 | "node_modules/resolve-from": { 2768 | "version": "4.0.0", 2769 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2770 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2771 | "dev": true, 2772 | "engines": { 2773 | "node": ">=4" 2774 | } 2775 | }, 2776 | "node_modules/rfdc": { 2777 | "version": "1.3.0", 2778 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 2779 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 2780 | "dev": true 2781 | }, 2782 | "node_modules/rimraf": { 2783 | "version": "3.0.2", 2784 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2785 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2786 | "dev": true, 2787 | "dependencies": { 2788 | "glob": "^7.1.3" 2789 | }, 2790 | "bin": { 2791 | "rimraf": "bin.js" 2792 | }, 2793 | "funding": { 2794 | "url": "https://github.com/sponsors/isaacs" 2795 | } 2796 | }, 2797 | "node_modules/safe-buffer": { 2798 | "version": "5.1.2", 2799 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2800 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2801 | "dev": true 2802 | }, 2803 | "node_modules/safer-buffer": { 2804 | "version": "2.1.2", 2805 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2806 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2807 | "dev": true 2808 | }, 2809 | "node_modules/sax": { 2810 | "version": "1.2.4", 2811 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 2812 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 2813 | "dev": true, 2814 | "optional": true 2815 | }, 2816 | "node_modules/semver": { 2817 | "version": "5.7.1", 2818 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2819 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2820 | "dev": true, 2821 | "optional": true, 2822 | "bin": { 2823 | "semver": "bin/semver" 2824 | } 2825 | }, 2826 | "node_modules/serve": { 2827 | "version": "14.2.1", 2828 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.1.tgz", 2829 | "integrity": "sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==", 2830 | "dev": true, 2831 | "dependencies": { 2832 | "@zeit/schemas": "2.29.0", 2833 | "ajv": "8.11.0", 2834 | "arg": "5.0.2", 2835 | "boxen": "7.0.0", 2836 | "chalk": "5.0.1", 2837 | "chalk-template": "0.4.0", 2838 | "clipboardy": "3.0.0", 2839 | "compression": "1.7.4", 2840 | "is-port-reachable": "4.0.0", 2841 | "serve-handler": "6.1.5", 2842 | "update-check": "1.5.4" 2843 | }, 2844 | "bin": { 2845 | "serve": "build/main.js" 2846 | }, 2847 | "engines": { 2848 | "node": ">= 14" 2849 | } 2850 | }, 2851 | "node_modules/serve-handler": { 2852 | "version": "6.1.5", 2853 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", 2854 | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", 2855 | "dev": true, 2856 | "dependencies": { 2857 | "bytes": "3.0.0", 2858 | "content-disposition": "0.5.2", 2859 | "fast-url-parser": "1.1.3", 2860 | "mime-types": "2.1.18", 2861 | "minimatch": "3.1.2", 2862 | "path-is-inside": "1.0.2", 2863 | "path-to-regexp": "2.2.1", 2864 | "range-parser": "1.2.0" 2865 | } 2866 | }, 2867 | "node_modules/serve-handler/node_modules/bytes": { 2868 | "version": "3.0.0", 2869 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 2870 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", 2871 | "dev": true, 2872 | "engines": { 2873 | "node": ">= 0.8" 2874 | } 2875 | }, 2876 | "node_modules/serve-handler/node_modules/mime-db": { 2877 | "version": "1.33.0", 2878 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 2879 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", 2880 | "dev": true, 2881 | "engines": { 2882 | "node": ">= 0.6" 2883 | } 2884 | }, 2885 | "node_modules/serve-handler/node_modules/mime-types": { 2886 | "version": "2.1.18", 2887 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 2888 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 2889 | "dev": true, 2890 | "dependencies": { 2891 | "mime-db": "~1.33.0" 2892 | }, 2893 | "engines": { 2894 | "node": ">= 0.6" 2895 | } 2896 | }, 2897 | "node_modules/serve-handler/node_modules/range-parser": { 2898 | "version": "1.2.0", 2899 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 2900 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", 2901 | "dev": true, 2902 | "engines": { 2903 | "node": ">= 0.6" 2904 | } 2905 | }, 2906 | "node_modules/setprototypeof": { 2907 | "version": "1.2.0", 2908 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2909 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 2910 | "dev": true 2911 | }, 2912 | "node_modules/shebang-command": { 2913 | "version": "2.0.0", 2914 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2915 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2916 | "dev": true, 2917 | "dependencies": { 2918 | "shebang-regex": "^3.0.0" 2919 | }, 2920 | "engines": { 2921 | "node": ">=8" 2922 | } 2923 | }, 2924 | "node_modules/shebang-regex": { 2925 | "version": "3.0.0", 2926 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2927 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2928 | "dev": true, 2929 | "engines": { 2930 | "node": ">=8" 2931 | } 2932 | }, 2933 | "node_modules/side-channel": { 2934 | "version": "1.0.4", 2935 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2936 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2937 | "dev": true, 2938 | "dependencies": { 2939 | "call-bind": "^1.0.0", 2940 | "get-intrinsic": "^1.0.2", 2941 | "object-inspect": "^1.9.0" 2942 | }, 2943 | "funding": { 2944 | "url": "https://github.com/sponsors/ljharb" 2945 | } 2946 | }, 2947 | "node_modules/signal-exit": { 2948 | "version": "3.0.7", 2949 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2950 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2951 | "dev": true 2952 | }, 2953 | "node_modules/socket.io": { 2954 | "version": "4.6.1", 2955 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", 2956 | "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", 2957 | "dev": true, 2958 | "dependencies": { 2959 | "accepts": "~1.3.4", 2960 | "base64id": "~2.0.0", 2961 | "debug": "~4.3.2", 2962 | "engine.io": "~6.4.1", 2963 | "socket.io-adapter": "~2.5.2", 2964 | "socket.io-parser": "~4.2.1" 2965 | }, 2966 | "engines": { 2967 | "node": ">=10.0.0" 2968 | } 2969 | }, 2970 | "node_modules/socket.io-adapter": { 2971 | "version": "2.5.2", 2972 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", 2973 | "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", 2974 | "dev": true, 2975 | "dependencies": { 2976 | "ws": "~8.11.0" 2977 | } 2978 | }, 2979 | "node_modules/socket.io-parser": { 2980 | "version": "4.2.2", 2981 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", 2982 | "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", 2983 | "dev": true, 2984 | "dependencies": { 2985 | "@socket.io/component-emitter": "~3.1.0", 2986 | "debug": "~4.3.1" 2987 | }, 2988 | "engines": { 2989 | "node": ">=10.0.0" 2990 | } 2991 | }, 2992 | "node_modules/socket.io-parser/node_modules/debug": { 2993 | "version": "4.3.4", 2994 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2995 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2996 | "dev": true, 2997 | "dependencies": { 2998 | "ms": "2.1.2" 2999 | }, 3000 | "engines": { 3001 | "node": ">=6.0" 3002 | }, 3003 | "peerDependenciesMeta": { 3004 | "supports-color": { 3005 | "optional": true 3006 | } 3007 | } 3008 | }, 3009 | "node_modules/socket.io-parser/node_modules/ms": { 3010 | "version": "2.1.2", 3011 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3012 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3013 | "dev": true 3014 | }, 3015 | "node_modules/socket.io/node_modules/debug": { 3016 | "version": "4.3.4", 3017 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3018 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3019 | "dev": true, 3020 | "dependencies": { 3021 | "ms": "2.1.2" 3022 | }, 3023 | "engines": { 3024 | "node": ">=6.0" 3025 | }, 3026 | "peerDependenciesMeta": { 3027 | "supports-color": { 3028 | "optional": true 3029 | } 3030 | } 3031 | }, 3032 | "node_modules/socket.io/node_modules/ms": { 3033 | "version": "2.1.2", 3034 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3035 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3036 | "dev": true 3037 | }, 3038 | "node_modules/source-map": { 3039 | "version": "0.6.1", 3040 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3041 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3042 | "dev": true, 3043 | "engines": { 3044 | "node": ">=0.10.0" 3045 | } 3046 | }, 3047 | "node_modules/source-map-support": { 3048 | "version": "0.5.21", 3049 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3050 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3051 | "dev": true, 3052 | "dependencies": { 3053 | "buffer-from": "^1.0.0", 3054 | "source-map": "^0.6.0" 3055 | } 3056 | }, 3057 | "node_modules/statuses": { 3058 | "version": "1.5.0", 3059 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3060 | "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", 3061 | "dev": true, 3062 | "engines": { 3063 | "node": ">= 0.6" 3064 | } 3065 | }, 3066 | "node_modules/streamroller": { 3067 | "version": "3.1.5", 3068 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", 3069 | "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", 3070 | "dev": true, 3071 | "dependencies": { 3072 | "date-format": "^4.0.14", 3073 | "debug": "^4.3.4", 3074 | "fs-extra": "^8.1.0" 3075 | }, 3076 | "engines": { 3077 | "node": ">=8.0" 3078 | } 3079 | }, 3080 | "node_modules/streamroller/node_modules/debug": { 3081 | "version": "4.3.4", 3082 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3083 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3084 | "dev": true, 3085 | "dependencies": { 3086 | "ms": "2.1.2" 3087 | }, 3088 | "engines": { 3089 | "node": ">=6.0" 3090 | }, 3091 | "peerDependenciesMeta": { 3092 | "supports-color": { 3093 | "optional": true 3094 | } 3095 | } 3096 | }, 3097 | "node_modules/streamroller/node_modules/ms": { 3098 | "version": "2.1.2", 3099 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3100 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3101 | "dev": true 3102 | }, 3103 | "node_modules/string_decoder": { 3104 | "version": "1.3.0", 3105 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 3106 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 3107 | "dev": true, 3108 | "dependencies": { 3109 | "safe-buffer": "~5.2.0" 3110 | } 3111 | }, 3112 | "node_modules/string_decoder/node_modules/safe-buffer": { 3113 | "version": "5.2.1", 3114 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3115 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3116 | "dev": true, 3117 | "funding": [ 3118 | { 3119 | "type": "github", 3120 | "url": "https://github.com/sponsors/feross" 3121 | }, 3122 | { 3123 | "type": "patreon", 3124 | "url": "https://www.patreon.com/feross" 3125 | }, 3126 | { 3127 | "type": "consulting", 3128 | "url": "https://feross.org/support" 3129 | } 3130 | ] 3131 | }, 3132 | "node_modules/string-width": { 3133 | "version": "5.1.2", 3134 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 3135 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 3136 | "dev": true, 3137 | "dependencies": { 3138 | "eastasianwidth": "^0.2.0", 3139 | "emoji-regex": "^9.2.2", 3140 | "strip-ansi": "^7.0.1" 3141 | }, 3142 | "engines": { 3143 | "node": ">=12" 3144 | }, 3145 | "funding": { 3146 | "url": "https://github.com/sponsors/sindresorhus" 3147 | } 3148 | }, 3149 | "node_modules/string-width/node_modules/emoji-regex": { 3150 | "version": "9.2.2", 3151 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 3152 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 3153 | "dev": true 3154 | }, 3155 | "node_modules/strip-ansi": { 3156 | "version": "7.0.1", 3157 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 3158 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 3159 | "dev": true, 3160 | "dependencies": { 3161 | "ansi-regex": "^6.0.1" 3162 | }, 3163 | "engines": { 3164 | "node": ">=12" 3165 | }, 3166 | "funding": { 3167 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 3168 | } 3169 | }, 3170 | "node_modules/strip-final-newline": { 3171 | "version": "2.0.0", 3172 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 3173 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 3174 | "dev": true, 3175 | "engines": { 3176 | "node": ">=6" 3177 | } 3178 | }, 3179 | "node_modules/strip-json-comments": { 3180 | "version": "2.0.1", 3181 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3182 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 3183 | "dev": true, 3184 | "engines": { 3185 | "node": ">=0.10.0" 3186 | } 3187 | }, 3188 | "node_modules/supports-color": { 3189 | "version": "7.2.0", 3190 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3191 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3192 | "dev": true, 3193 | "dependencies": { 3194 | "has-flag": "^4.0.0" 3195 | }, 3196 | "engines": { 3197 | "node": ">=8" 3198 | } 3199 | }, 3200 | "node_modules/tar-fs": { 3201 | "version": "2.1.1", 3202 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 3203 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 3204 | "dev": true, 3205 | "dependencies": { 3206 | "chownr": "^1.1.1", 3207 | "mkdirp-classic": "^0.5.2", 3208 | "pump": "^3.0.0", 3209 | "tar-stream": "^2.1.4" 3210 | } 3211 | }, 3212 | "node_modules/tar-stream": { 3213 | "version": "2.2.0", 3214 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 3215 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 3216 | "dev": true, 3217 | "dependencies": { 3218 | "bl": "^4.0.3", 3219 | "end-of-stream": "^1.4.1", 3220 | "fs-constants": "^1.0.0", 3221 | "inherits": "^2.0.3", 3222 | "readable-stream": "^3.1.1" 3223 | }, 3224 | "engines": { 3225 | "node": ">=6" 3226 | } 3227 | }, 3228 | "node_modules/terser": { 3229 | "version": "5.16.5", 3230 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", 3231 | "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", 3232 | "dev": true, 3233 | "dependencies": { 3234 | "@jridgewell/source-map": "^0.3.2", 3235 | "acorn": "^8.5.0", 3236 | "commander": "^2.20.0", 3237 | "source-map-support": "~0.5.20" 3238 | }, 3239 | "bin": { 3240 | "terser": "bin/terser" 3241 | }, 3242 | "engines": { 3243 | "node": ">=10" 3244 | } 3245 | }, 3246 | "node_modules/through": { 3247 | "version": "2.3.8", 3248 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3249 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 3250 | "dev": true 3251 | }, 3252 | "node_modules/tiny-glob": { 3253 | "version": "0.2.9", 3254 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 3255 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 3256 | "dev": true, 3257 | "dependencies": { 3258 | "globalyzer": "0.1.0", 3259 | "globrex": "^0.1.2" 3260 | } 3261 | }, 3262 | "node_modules/tmp": { 3263 | "version": "0.2.1", 3264 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 3265 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 3266 | "dev": true, 3267 | "dependencies": { 3268 | "rimraf": "^3.0.0" 3269 | }, 3270 | "engines": { 3271 | "node": ">=8.17.0" 3272 | } 3273 | }, 3274 | "node_modules/to-regex-range": { 3275 | "version": "5.0.1", 3276 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3277 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3278 | "dev": true, 3279 | "dependencies": { 3280 | "is-number": "^7.0.0" 3281 | }, 3282 | "engines": { 3283 | "node": ">=8.0" 3284 | } 3285 | }, 3286 | "node_modules/toidentifier": { 3287 | "version": "1.0.1", 3288 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 3289 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 3290 | "dev": true, 3291 | "engines": { 3292 | "node": ">=0.6" 3293 | } 3294 | }, 3295 | "node_modules/tr46": { 3296 | "version": "0.0.3", 3297 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 3298 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 3299 | "dev": true 3300 | }, 3301 | "node_modules/tslib": { 3302 | "version": "2.5.0", 3303 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 3304 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 3305 | "dev": true 3306 | }, 3307 | "node_modules/type-fest": { 3308 | "version": "2.19.0", 3309 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", 3310 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", 3311 | "dev": true, 3312 | "engines": { 3313 | "node": ">=12.20" 3314 | }, 3315 | "funding": { 3316 | "url": "https://github.com/sponsors/sindresorhus" 3317 | } 3318 | }, 3319 | "node_modules/type-is": { 3320 | "version": "1.6.18", 3321 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3322 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3323 | "dev": true, 3324 | "dependencies": { 3325 | "media-typer": "0.3.0", 3326 | "mime-types": "~2.1.24" 3327 | }, 3328 | "engines": { 3329 | "node": ">= 0.6" 3330 | } 3331 | }, 3332 | "node_modules/ua-parser-js": { 3333 | "version": "0.7.33", 3334 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", 3335 | "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", 3336 | "dev": true, 3337 | "funding": [ 3338 | { 3339 | "type": "opencollective", 3340 | "url": "https://opencollective.com/ua-parser-js" 3341 | }, 3342 | { 3343 | "type": "paypal", 3344 | "url": "https://paypal.me/faisalman" 3345 | } 3346 | ], 3347 | "engines": { 3348 | "node": "*" 3349 | } 3350 | }, 3351 | "node_modules/unbzip2-stream": { 3352 | "version": "1.4.3", 3353 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 3354 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 3355 | "dev": true, 3356 | "dependencies": { 3357 | "buffer": "^5.2.1", 3358 | "through": "^2.3.8" 3359 | } 3360 | }, 3361 | "node_modules/universalify": { 3362 | "version": "0.1.2", 3363 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3364 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3365 | "dev": true, 3366 | "engines": { 3367 | "node": ">= 4.0.0" 3368 | } 3369 | }, 3370 | "node_modules/unpipe": { 3371 | "version": "1.0.0", 3372 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3373 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 3374 | "dev": true, 3375 | "engines": { 3376 | "node": ">= 0.8" 3377 | } 3378 | }, 3379 | "node_modules/update-check": { 3380 | "version": "1.5.4", 3381 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", 3382 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", 3383 | "dev": true, 3384 | "dependencies": { 3385 | "registry-auth-token": "3.3.2", 3386 | "registry-url": "3.1.0" 3387 | } 3388 | }, 3389 | "node_modules/uri-js": { 3390 | "version": "4.4.1", 3391 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3392 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3393 | "dev": true, 3394 | "dependencies": { 3395 | "punycode": "^2.1.0" 3396 | } 3397 | }, 3398 | "node_modules/uri-js/node_modules/punycode": { 3399 | "version": "2.3.0", 3400 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 3401 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 3402 | "dev": true, 3403 | "engines": { 3404 | "node": ">=6" 3405 | } 3406 | }, 3407 | "node_modules/util-deprecate": { 3408 | "version": "1.0.2", 3409 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3410 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3411 | "dev": true 3412 | }, 3413 | "node_modules/utils-merge": { 3414 | "version": "1.0.1", 3415 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3416 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 3417 | "dev": true, 3418 | "engines": { 3419 | "node": ">= 0.4.0" 3420 | } 3421 | }, 3422 | "node_modules/vary": { 3423 | "version": "1.1.2", 3424 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3425 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 3426 | "dev": true, 3427 | "engines": { 3428 | "node": ">= 0.8" 3429 | } 3430 | }, 3431 | "node_modules/void-elements": { 3432 | "version": "2.0.1", 3433 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 3434 | "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", 3435 | "dev": true, 3436 | "engines": { 3437 | "node": ">=0.10.0" 3438 | } 3439 | }, 3440 | "node_modules/webidl-conversions": { 3441 | "version": "3.0.1", 3442 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 3443 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 3444 | "dev": true 3445 | }, 3446 | "node_modules/whatwg-url": { 3447 | "version": "5.0.0", 3448 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 3449 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 3450 | "dev": true, 3451 | "dependencies": { 3452 | "tr46": "~0.0.3", 3453 | "webidl-conversions": "^3.0.0" 3454 | } 3455 | }, 3456 | "node_modules/which": { 3457 | "version": "1.3.1", 3458 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3459 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3460 | "dev": true, 3461 | "dependencies": { 3462 | "isexe": "^2.0.0" 3463 | }, 3464 | "bin": { 3465 | "which": "bin/which" 3466 | } 3467 | }, 3468 | "node_modules/widest-line": { 3469 | "version": "4.0.1", 3470 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", 3471 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", 3472 | "dev": true, 3473 | "dependencies": { 3474 | "string-width": "^5.0.1" 3475 | }, 3476 | "engines": { 3477 | "node": ">=12" 3478 | }, 3479 | "funding": { 3480 | "url": "https://github.com/sponsors/sindresorhus" 3481 | } 3482 | }, 3483 | "node_modules/wrap-ansi": { 3484 | "version": "7.0.0", 3485 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3486 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3487 | "dev": true, 3488 | "dependencies": { 3489 | "ansi-styles": "^4.0.0", 3490 | "string-width": "^4.1.0", 3491 | "strip-ansi": "^6.0.0" 3492 | }, 3493 | "engines": { 3494 | "node": ">=10" 3495 | }, 3496 | "funding": { 3497 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3498 | } 3499 | }, 3500 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 3501 | "version": "5.0.1", 3502 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3503 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3504 | "dev": true, 3505 | "engines": { 3506 | "node": ">=8" 3507 | } 3508 | }, 3509 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 3510 | "version": "4.3.0", 3511 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3512 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3513 | "dev": true, 3514 | "dependencies": { 3515 | "color-convert": "^2.0.1" 3516 | }, 3517 | "engines": { 3518 | "node": ">=8" 3519 | }, 3520 | "funding": { 3521 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3522 | } 3523 | }, 3524 | "node_modules/wrap-ansi/node_modules/string-width": { 3525 | "version": "4.2.3", 3526 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3527 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3528 | "dev": true, 3529 | "dependencies": { 3530 | "emoji-regex": "^8.0.0", 3531 | "is-fullwidth-code-point": "^3.0.0", 3532 | "strip-ansi": "^6.0.1" 3533 | }, 3534 | "engines": { 3535 | "node": ">=8" 3536 | } 3537 | }, 3538 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 3539 | "version": "6.0.1", 3540 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3541 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3542 | "dev": true, 3543 | "dependencies": { 3544 | "ansi-regex": "^5.0.1" 3545 | }, 3546 | "engines": { 3547 | "node": ">=8" 3548 | } 3549 | }, 3550 | "node_modules/wrappy": { 3551 | "version": "1.0.2", 3552 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3553 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3554 | "dev": true 3555 | }, 3556 | "node_modules/ws": { 3557 | "version": "8.11.0", 3558 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", 3559 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", 3560 | "dev": true, 3561 | "engines": { 3562 | "node": ">=10.0.0" 3563 | }, 3564 | "peerDependencies": { 3565 | "bufferutil": "^4.0.1", 3566 | "utf-8-validate": "^5.0.2" 3567 | }, 3568 | "peerDependenciesMeta": { 3569 | "bufferutil": { 3570 | "optional": true 3571 | }, 3572 | "utf-8-validate": { 3573 | "optional": true 3574 | } 3575 | } 3576 | }, 3577 | "node_modules/y18n": { 3578 | "version": "5.0.8", 3579 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3580 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3581 | "dev": true, 3582 | "engines": { 3583 | "node": ">=10" 3584 | } 3585 | }, 3586 | "node_modules/yargs": { 3587 | "version": "16.2.0", 3588 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3589 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3590 | "dev": true, 3591 | "dependencies": { 3592 | "cliui": "^7.0.2", 3593 | "escalade": "^3.1.1", 3594 | "get-caller-file": "^2.0.5", 3595 | "require-directory": "^2.1.1", 3596 | "string-width": "^4.2.0", 3597 | "y18n": "^5.0.5", 3598 | "yargs-parser": "^20.2.2" 3599 | }, 3600 | "engines": { 3601 | "node": ">=10" 3602 | } 3603 | }, 3604 | "node_modules/yargs-parser": { 3605 | "version": "20.2.9", 3606 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 3607 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 3608 | "dev": true, 3609 | "engines": { 3610 | "node": ">=10" 3611 | } 3612 | }, 3613 | "node_modules/yargs/node_modules/ansi-regex": { 3614 | "version": "5.0.1", 3615 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3616 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3617 | "dev": true, 3618 | "engines": { 3619 | "node": ">=8" 3620 | } 3621 | }, 3622 | "node_modules/yargs/node_modules/string-width": { 3623 | "version": "4.2.3", 3624 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3625 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3626 | "dev": true, 3627 | "dependencies": { 3628 | "emoji-regex": "^8.0.0", 3629 | "is-fullwidth-code-point": "^3.0.0", 3630 | "strip-ansi": "^6.0.1" 3631 | }, 3632 | "engines": { 3633 | "node": ">=8" 3634 | } 3635 | }, 3636 | "node_modules/yargs/node_modules/strip-ansi": { 3637 | "version": "6.0.1", 3638 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3639 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3640 | "dev": true, 3641 | "dependencies": { 3642 | "ansi-regex": "^5.0.1" 3643 | }, 3644 | "engines": { 3645 | "node": ">=8" 3646 | } 3647 | }, 3648 | "node_modules/yauzl": { 3649 | "version": "2.10.0", 3650 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 3651 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 3652 | "dev": true, 3653 | "dependencies": { 3654 | "buffer-crc32": "~0.2.3", 3655 | "fd-slicer": "~1.1.0" 3656 | } 3657 | } 3658 | } 3659 | } 3660 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "input-spinner", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "A Number-Spinner, Support keyboard operations and continuous changing", 6 | "keywords": [ 7 | "spinner", 8 | "number-steps", 9 | "number-spinner", 10 | "continuous" 11 | ], 12 | "homepage": "https://vsn4ik.github.io/input-spinner/", 13 | "repository": "vsn4ik/input-spinner", 14 | "license": "MIT", 15 | "author": { 16 | "name": "xixilive", 17 | "email": "xixilive@gmail.com", 18 | "url": "https://github.com/xixilive" 19 | }, 20 | "contributors": [ 21 | { 22 | "name": "Vasilii A.", 23 | "url": "https://github.com/vsn4ik" 24 | } 25 | ], 26 | "main": "dist/input-spinner.js", 27 | "files": [ 28 | "dist", 29 | "src" 30 | ], 31 | "scripts": { 32 | "css": "npm run css-compile; npm run css-minify", 33 | "css-compile": "lessc src/$npm_package_name.less dist/$npm_package_name.css", 34 | "css-minify": "cleancss --source-map --source-map-inline-sources --output dist/$npm_package_name.min.css dist/$npm_package_name.css", 35 | "js": "npm run js-compile; npm run js-minify", 36 | "js-compile": "mkdir dist; cp -rf src/*.js dist/", 37 | "js-minify": "terser --compress --output dist/$npm_package_name.min.js dist/$npm_package_name.js", 38 | "release-zip": "rm -rf $npm_package_name-$npm_package_version-dist && cp -r dist/ $npm_package_name-$npm_package_version-dist && zip -r9 $npm_package_name-$npm_package_version-dist.zip $npm_package_name-$npm_package_version-dist && rm -rf $npm_package_name-$npm_package_version-dist", 39 | "test": "npm run css; npm run js; karma start tests/karma.conf.js", 40 | "serve": "serve --listen 5000 --no-clipboard ./docs/" 41 | }, 42 | "devDependencies": { 43 | "clean-css-cli": "^5.6.2", 44 | "jquery": "^3.5.1", 45 | "karma": "^6.4.1", 46 | "karma-chrome-launcher": "^3.1.0", 47 | "karma-qunit": "^4.1.1", 48 | "less": "^4.1.3", 49 | "puppeteer": "^19.7.2", 50 | "qunit": "^2.10.1", 51 | "serve": "^14.2.1", 52 | "terser": "^5.0.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/input-spinner.js: -------------------------------------------------------------------------------- 1 | /* 2 | * input-spinner 3 | * https://github.com/vsn4ik/input-spinner 4 | * Copyright Vasilii A., 2015–2018 5 | * Copyright xixilive, 2013–2015 6 | * Licensed under the MIT license 7 | */ 8 | 9 | 'use strict'; 10 | 11 | (function(factory) { 12 | if (typeof define === 'function' && define.amd) { 13 | // AMD. Register as an anonymous module 14 | define(['jquery'], factory); 15 | } else if (typeof exports === 'object') { 16 | // Node/CommonJS 17 | module.exports = factory(require('jquery')); 18 | } else { 19 | // Browser globals 20 | factory(jQuery); 21 | } 22 | })(function($) { 23 | var Spinner; 24 | var Spinning = function($element, options) { 25 | this.$el = $element; 26 | this.options = Object.assign({}, Spinning.rules.defaults, Spinning.rules[options.rule] || {}, options); 27 | this.min = Number(this.options.min) || 0; 28 | this.max = Number(this.options.max) || 0; 29 | this.spinningTimer = null; 30 | 31 | this.$el.on({ 32 | 'focus.spinner': (function(e) { 33 | e.preventDefault(); 34 | $(this.$el).trigger('mouseup.spinner'); 35 | this.oldValue = this.value(); 36 | }).bind(this), 37 | 'change.spinner': (function(e) { 38 | e.preventDefault(); 39 | this.value(this.$el.val()); 40 | }).bind(this), 41 | 'keydown.spinner': (function(e) { 42 | var dir = { 43 | 38: 'up', 44 | 40: 'down' 45 | }[e.keyCode]; 46 | 47 | if (dir) { 48 | e.preventDefault(); 49 | this.spin(dir); 50 | } 51 | }).bind(this) 52 | }); 53 | 54 | //init input value 55 | this.oldValue = this.value(); 56 | this.value(this.$el.val()); 57 | return this; 58 | }; 59 | 60 | Spinning.rules = { 61 | defaults: { min: null, max: null, step: 1, precision: 0 }, 62 | currency: { min: 0.00, max: null, step: 0.01, precision: 2 }, 63 | quantity: { min: 1, max: 999, step: 1, precision: 0 }, 64 | percent: { min: 1, max: 100, step: 1, precision: 0 }, 65 | month: { min: 1, max: 12, step: 1, precision: 0 }, 66 | day: { min: 1, max: 31, step: 1, precision: 0 }, 67 | hour: { min: 0, max: 23, step: 1, precision: 0 }, 68 | minute: { min: 1, max: 59, step: 1, precision: 0 }, 69 | second: { min: 1, max: 59, step: 1, precision: 0 } 70 | }; 71 | 72 | Spinning.prototype = { 73 | spin: function(dir) { 74 | if (this.$el.prop('disabled')) { 75 | return; 76 | } 77 | 78 | this.oldValue = this.value(); 79 | var step = typeof this.options.step === 'function' ? this.options.step.call(this, dir) : this.options.step; 80 | var multipler = dir === 'up' ? 1 : -1; 81 | 82 | this.value(this.oldValue + Number(step) * multipler); 83 | }, 84 | 85 | value: function(v) { 86 | if (v === null || v === undefined) { 87 | return this.numeric(this.$el.val()); 88 | } 89 | v = this.numeric(v); 90 | 91 | var valid = this.validate(v); 92 | if (valid !== 0) { 93 | v = valid === -1 ? this.min : this.max; 94 | } 95 | this.$el.val(v.toFixed(this.options.precision)); 96 | 97 | if (this.oldValue !== this.value()) { 98 | // changing.spinner 99 | this.$el.trigger('changing.spinner', [this.value(), this.oldValue]); 100 | 101 | // lazy changed.spinner 102 | clearTimeout(this.spinningTimer); 103 | this.spinningTimer = setTimeout((function() { 104 | this.$el.trigger('changed.spinner', [this.value(), this.oldValue]); 105 | }).bind(this), Spinner.delay); 106 | } 107 | }, 108 | 109 | numeric: function(v) { 110 | v = this.options.precision > 0 ? parseFloat(v, 10) : parseInt(v, 10); 111 | 112 | // If the variable is a number 113 | if (isFinite(v)) { 114 | return v; 115 | } 116 | 117 | return v || this.options.min || 0; 118 | }, 119 | 120 | validate: function(val) { 121 | if (this.options.min !== null && val < this.min) { 122 | return -1; 123 | } 124 | 125 | if (this.options.max !== null && val > this.max) { 126 | return 1; 127 | } 128 | 129 | return 0; 130 | } 131 | }; 132 | 133 | Spinner = function(element, options) { 134 | this.$el = $(element); 135 | this.$spinning = this.$el.find('[data-spin="spinner"]'); 136 | 137 | if (this.$spinning.length === 0) { 138 | this.$spinning = this.$el.find('input[type="text"]'); 139 | } 140 | 141 | options = Object.assign({}, options, this.$spinning.data()); 142 | 143 | this.spinning = new Spinning(this.$spinning, options); 144 | 145 | this.$el 146 | .on('click.spinner', '[data-spin="up"], [data-spin="down"]', this.spin.bind(this)) 147 | .on('mousedown.spinner', '[data-spin="up"], [data-spin="down"]', this.spin.bind(this)) 148 | .on('mouseup.spinner', '[data-spin="up"], [data-spin="down"]', this.spin.bind(this)); 149 | 150 | if (options.delay) { 151 | this.delay(options.delay); 152 | } 153 | 154 | if (options.changed) { 155 | this.changed(options.changed); 156 | } 157 | 158 | if (options.changing) { 159 | this.changing(options.changing); 160 | } 161 | }; 162 | 163 | Spinner.delay = 500; 164 | 165 | Spinner.prototype = { 166 | constructor: Spinner, 167 | 168 | spin: function(e) { 169 | var dir = $(e.currentTarget).data('spin'); 170 | 171 | switch (e.type) { 172 | case 'click': 173 | e.preventDefault(); 174 | this.spinning.spin(dir); 175 | break; 176 | case 'mousedown': 177 | if (e.keyCode === 1) { 178 | this.spinTimeout = setTimeout(this.beginSpin.bind(this, dir), 300); 179 | } 180 | break; 181 | case 'mouseup': 182 | clearTimeout(this.spinTimeout); 183 | clearInterval(this.spinInterval); 184 | break; 185 | } 186 | }, 187 | 188 | delay: function(ms) { 189 | var delay = Number(ms); 190 | 191 | if (delay >= 0) { 192 | this.constructor.delay = delay + 100; 193 | } 194 | }, 195 | 196 | value: function() { 197 | return this.spinning.value(); 198 | }, 199 | 200 | changed: function(fn) { 201 | this.bindHandler('changed.spinner', fn); 202 | }, 203 | 204 | changing: function(fn) { 205 | this.bindHandler('changing.spinner', fn); 206 | }, 207 | 208 | bindHandler: function(t, fn) { 209 | if (typeof fn === 'function') { 210 | this.$spinning.on(t, fn); 211 | } else { 212 | this.$spinning.off(t); 213 | } 214 | }, 215 | 216 | beginSpin: function(dir) { 217 | this.spinInterval = setInterval(this.spinning.spin.bind(this.spinning, dir), 100); 218 | } 219 | }; 220 | 221 | var old = $.fn.spinner; 222 | 223 | $.fn.spinner = function(options, value) { 224 | return this.each(function() { 225 | var data = $.data(this, 'spinner'); 226 | 227 | if (!data) { 228 | data = new Spinner(this, options); 229 | 230 | $.data(this, 'spinner', data); 231 | } 232 | if (options === 'delay' || options === 'changed' || options === 'changing') { 233 | data[options](value); 234 | } else if (options === 'step' && value) { 235 | data.spinning.step = value; 236 | } else if (options === 'spin' && value) { 237 | data.spinning.spin(value); 238 | } 239 | }); 240 | }; 241 | 242 | $.fn.spinner.Constructor = Spinner; 243 | $.fn.spinner.noConflict = function() { 244 | $.fn.spinner = old; 245 | return this; 246 | }; 247 | 248 | $(function() { 249 | $('[data-trigger="spinner"]').spinner(); 250 | }); 251 | 252 | return $.fn.spinner; 253 | }); 254 | -------------------------------------------------------------------------------- /src/input-spinner.less: -------------------------------------------------------------------------------- 1 | /* bootstrap@4 */ 2 | .input-group.spinner .input-group-text { 3 | flex-direction: column; 4 | justify-content: center; 5 | padding-top: 0; 6 | padding-bottom: 0; 7 | 8 | .spin-up, 9 | .spin-down { 10 | display: flex; 11 | background: none; 12 | border: none; 13 | padding: 0; 14 | color: #999; 15 | } 16 | 17 | .spin-up:hover, 18 | .spin-down:hover, 19 | .spin-up:focus, 20 | .spin-down:focus { 21 | color: #555; 22 | } 23 | } 24 | 25 | /* bootstrap@3 */ 26 | .spinner.input-group .input-group-addon { 27 | .spin-up, 28 | .spin-down { 29 | height: 10px; 30 | width: 10px; 31 | overflow: hidden; 32 | display: block; 33 | text-align: center; 34 | color: #999; 35 | 36 | &:hover { 37 | color: #555; 38 | } 39 | 40 | .fas { 41 | margin-top: -6px; 42 | vertical-align: middle; 43 | } 44 | 45 | .glyphicon { 46 | font-size: 10px; 47 | top: -2px; 48 | } 49 | } 50 | 51 | a.spin-up, 52 | a.spin-down { 53 | text-decoration: none; 54 | } 55 | 56 | button.spin-up, 57 | button.spin-down { 58 | background: none; 59 | border: none; 60 | padding: 0; 61 | } 62 | } 63 | 64 | .spinner.input-group.input-group-sm .input-group-addon { 65 | .spin-up, 66 | .spin-down { 67 | height: 8px; 68 | 69 | .fas { 70 | margin-top: -10px; 71 | } 72 | 73 | .glyphicon { 74 | font-size: 8px; 75 | top: -5px; 76 | } 77 | } 78 | } 79 | 80 | .spinner.input-group.input-group-lg .input-group-addon { 81 | .spin-up, 82 | .spin-down { 83 | height: 12px; 84 | width: 12px; 85 | 86 | .fas { 87 | margin-top: -16px; 88 | } 89 | 90 | .glyphicon { 91 | font-size: 12px; 92 | top: -6px; 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Test Suite 14 | 15 | 16 |
17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/karma.conf.js: -------------------------------------------------------------------------------- 1 | // process.env.CHROME_BIN = require('puppeteer').executablePath(); 2 | 3 | const conf = { 4 | browsers: [ 5 | 'ChromeHeadless' 6 | // 'ChromeHeadlessCustom' 7 | ], 8 | // customLaunchers: { 9 | // ChromeHeadlessCustom: { 10 | // base: 'ChromiumHeadless', 11 | // flags: [ 12 | // '--no-sandbox', 13 | // '--headless', 14 | // '--disable-gpu', 15 | // '--disable-translate', 16 | // '--disable-extensions' 17 | // ] 18 | // } 19 | // }, 20 | basePath: '..', 21 | colors: true, 22 | frameworks: [ 23 | 'qunit' 24 | ], 25 | plugins: [ 26 | 'karma-qunit', 27 | 'karma-chrome-launcher' 28 | ], 29 | files: [ 30 | 'node_modules/jquery/dist/jquery.slim.js', 31 | 'src/input-spinner.js', 32 | 'tests/unit/unit.js' 33 | ], 34 | autoWatch: false, 35 | singleRun: true, 36 | concurrency: Infinity 37 | }; 38 | 39 | module.exports = (config) => { 40 | config.set(conf); 41 | }; 42 | -------------------------------------------------------------------------------- /tests/unit/unit.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function() { 2 | 'use strict'; 3 | 4 | QUnit.test('should be defined on jquery object', function(assert) { 5 | assert.expect(1); 6 | assert.ok($.fn.spinner, 'spinner method is defined'); 7 | }); 8 | 9 | QUnit.module('Spinner', { 10 | beforeEach: function() { 11 | this.$el = $(` 12 |
13 | 14 | 15 | 16 |
17 | `).spinner(); 18 | 19 | this.$spinUp = this.$el.find('[data-spin="up"]'); 20 | this.$spinDown = this.$el.find('[data-spin="down"]'); 21 | this.spinner = this.$el.data('spinner'); 22 | }, 23 | afterEach: function() { 24 | this.$el 25 | .spinner('delay', 500) 26 | .spinner('changed', null) 27 | .spinner('changing', null); 28 | 29 | this.spinner.spinning.$el.val(1); 30 | } 31 | }); 32 | 33 | QUnit.test('spinner#value', function(assert) { 34 | assert.expect(1); 35 | assert.ok(this.spinner.value() === 1); 36 | }); 37 | 38 | QUnit.test('Spinner#delay', function(assert) { 39 | assert.expect(2); 40 | assert.ok(this.spinner.constructor.delay === 600); 41 | this.$el.spinner('delay', 300, 'should plus 100'); 42 | assert.ok(this.spinner.constructor.delay === 400); 43 | }); 44 | 45 | QUnit.test('Spinner#changed', function(assert) { 46 | var x = this.spinner.value(); 47 | var y = 0; 48 | 49 | this.$el.spinner('delay', 50).spinner('changed', function(e, newVal) { 50 | y = newVal; 51 | }); 52 | this.$spinUp.trigger('click'); 53 | var done = assert.async(); 54 | setTimeout(function() { 55 | assert.ok(y === x + 1); 56 | done(); 57 | }, 200); 58 | }); 59 | 60 | QUnit.test('Spinner#changing', function(assert) { 61 | this.$el.spinner('changing', function(e, newVal) { 62 | assert.ok(newVal === 2); 63 | }); 64 | this.$spinUp.trigger('click'); 65 | }); 66 | 67 | QUnit.test('spin via mouse click', function(assert) { 68 | assert.ok(this.spinner.value() === 1); 69 | this.$spinUp.trigger('click'); 70 | assert.ok(this.spinner.value() === 2); 71 | this.$spinDown.trigger('click'); 72 | assert.ok(this.spinner.value() === 1); 73 | }); 74 | 75 | QUnit.test('pass step as a function', function(assert) { 76 | assert.ok(this.spinner.value() === 1); 77 | this.spinner.spinning.options.step = function(dir) { //to skip 0 78 | if ((this.oldValue === 1 && dir === 'down') || (this.oldValue === -1 && dir === 'up')) { 79 | return 2; 80 | } 81 | 82 | return 1; 83 | }; 84 | this.$spinDown.trigger('click'); 85 | assert.ok(this.spinner.value() === -1); 86 | this.$spinUp.trigger('click'); 87 | assert.ok(this.spinner.value() === 1); 88 | }); 89 | 90 | QUnit.test('no spinning on disabled input', function(assert) { 91 | this.spinner.spinning.$el.prop('disabled', true); 92 | assert.ok(this.spinner.value() === 1); 93 | this.$spinUp.trigger('click'); 94 | assert.ok(this.spinner.value() === 1); 95 | this.spinner.spinning.$el.val(2); 96 | this.$spinDown.trigger('click'); 97 | assert.ok(this.spinner.value() === 2); 98 | this.spinner.spinning.$el.prop('disabled', false); 99 | }); 100 | }); 101 | --------------------------------------------------------------------------------