├── .env.default ├── .gitignore ├── Dockerfile ├── README.md ├── docker-compose.yml ├── image.png ├── nginx-include.conf ├── package-lock.json ├── package.json ├── public ├── android-chrome-72x72.png ├── apple-touch-icon.png ├── browserconfig.xml ├── css │ ├── bootstrap.min.css │ └── global.css ├── favicon-16x16.png ├── favicon-32x32.png ├── images │ ├── logo.ai │ ├── logo.png │ └── logo.svg ├── index.html ├── mstile-150x150.png ├── mstile-310x150.png ├── mstile-70x70.png ├── safari-pinned-tab.svg └── site.webmanifest ├── rollup.config.js └── src ├── App.svelte └── main.js /.env.default: -------------------------------------------------------------------------------- 1 | DEVICE_ID=888 2 | MQTT_PROTOCOL=wss 3 | MQTT_HOST=test.mosquitto.org 4 | MQTT_PORT=8081 5 | MQTT_USERNAME= 6 | MQTT_PASSWORD= 7 | MQTT_PATH=ws 8 | MQTT_SUBSCRIBE_TOPIC=/test/# 9 | MQTT_MAX_MESSAGES=100 10 | DATE_FORMAT="DD.MM.YYYY hh:mm:ss" 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | public/build/ 2 | .DS_Store 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | 11 | # Runtime data 12 | pids 13 | *.pid 14 | *.seed 15 | *.pid.lock 16 | 17 | # Directory for instrumented libs generated by jscoverage/JSCover 18 | lib-cov 19 | 20 | # Coverage directory used by tools like istanbul 21 | coverage 22 | 23 | # Dependency directories 24 | node_modules/ 25 | jspm_packages/ 26 | 27 | # TypeScript v1 declaration files 28 | typings/ 29 | 30 | # Optional npm cache directory 31 | .npm 32 | 33 | # Optional eslint cache 34 | .eslintcache 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | 39 | # Output of 'npm pack' 40 | *.tgz 41 | 42 | # dotenv environment variables file 43 | .env 44 | 45 | #history 46 | .history 47 | 48 | *.code-workspace 49 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12.18-alpine 2 | 3 | RUN npm install -g rollup sirv-cli 4 | 5 | RUN mkdir -p /app 6 | 7 | WORKDIR /app 8 | 9 | ENV NODE_ENV production 10 | 11 | COPY . . 12 | 13 | RUN npm install && npm run build 14 | 15 | EXPOSE 5000 16 | 17 | ENV HOST=0.0.0.0 18 | 19 | CMD [ "npm", "start" ] 20 | 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![GitHub last commit](https://img.shields.io/github/last-commit/4refr0nt/svelte-mqtt-monitor) 2 | # Svelte MQTT Monitor 3 | 4 | ![Svelte MQTT Monitor](https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/master/image.png) 5 | 6 | ## Demos 7 | 8 | [https://svelte-mqtt-monitor.vercel.app](https://svelte-mqtt-monitor.vercel.app/) 9 | 10 | ## Get started 11 | 12 | ### Requiring 13 | 14 | - [Node.JS](https://nodejs.org/) installed (not required for docker install) 15 | - MQTT broker with [enabled MQTT over WebSockets or MQTT over WebSockets Secure](https://www.google.com/webhp?newwindow=1&q=mqtt+over+websockets) (ws or wss) 16 | 17 | ### Development 18 | 19 | ```bash 20 | git clone https://github.com/4refr0nt/svelte-mqtt-monitor.git 21 | cd svelte-mqtt-monitor 22 | npm i 23 | cp .env.sample .env 24 | ``` 25 | …then edit .env - broker settigs 26 | 27 | ```bash 28 | nano .env 29 | ``` 30 | and run app 31 | 32 | ```bash 33 | npm run dev 34 | ``` 35 | 36 | ...then open browser link [http://localhost:5000](http://localhost:5000) 37 | 38 | ### docker install 39 | 40 | ```bash 41 | git clone https://github.com/4refr0nt/svelte-mqtt-monitor.git 42 | cd svelte-mqtt-monitor 43 | npm i 44 | cp .env.sample .env 45 | ``` 46 | …then edit .env - broker connection settings 47 | 48 | ```bash 49 | nano .env 50 | ``` 51 | then run 52 | 53 | ```bash 54 | npm run build 55 | docker-compose up -d 56 | ``` 57 | configure `nginx` or `traefik` as reverse-proxy to `5000` port 58 | (see example part of config `nginx-include.conf`) or 59 | open browser `http://address:5000` 60 | 61 | Enjoy! 62 | 63 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | services: 3 | mqtt-monitor: 4 | image: mqtt-monitor 5 | container_name: mqtt-monitor 6 | restart: unless-stopped 7 | build: . 8 | ports: 9 | - "127.0.0.1:5000:5000" 10 | volumes: 11 | - ./:/app 12 | network_mode: host -------------------------------------------------------------------------------- /image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/image.png -------------------------------------------------------------------------------- /nginx-include.conf: -------------------------------------------------------------------------------- 1 | location /monitor/ { 2 | rewrite ^/monitor/(.*) /$1 break; 3 | proxy_pass http://localhost:5000/; 4 | proxy_http_version 1.1; 5 | proxy_set_header Upgrade $http_upgrade; 6 | proxy_set_header Connection 'upgrade'; 7 | proxy_set_header Host $host; 8 | proxy_cache_bypass $http_upgrade; 9 | proxy_set_header X-Real-Ip $remote_addr; 10 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 11 | proxy_set_header X-Forwarded-Proto $scheme; 12 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-app", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.10.4", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 19 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.10.4", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 25 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.10.4", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | } 32 | }, 33 | "@polka/url": { 34 | "version": "1.0.0-next.11", 35 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", 36 | "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" 37 | }, 38 | "@rollup/plugin-commonjs": { 39 | "version": "14.0.0", 40 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz", 41 | "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==", 42 | "dev": true, 43 | "requires": { 44 | "@rollup/pluginutils": "^3.0.8", 45 | "commondir": "^1.0.1", 46 | "estree-walker": "^1.0.1", 47 | "glob": "^7.1.2", 48 | "is-reference": "^1.1.2", 49 | "magic-string": "^0.25.2", 50 | "resolve": "^1.11.0" 51 | } 52 | }, 53 | "@rollup/plugin-node-resolve": { 54 | "version": "8.4.0", 55 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", 56 | "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", 57 | "dev": true, 58 | "requires": { 59 | "@rollup/pluginutils": "^3.1.0", 60 | "@types/resolve": "1.17.1", 61 | "builtin-modules": "^3.1.0", 62 | "deep-freeze": "^0.0.1", 63 | "deepmerge": "^4.2.2", 64 | "is-module": "^1.0.0", 65 | "resolve": "^1.17.0" 66 | } 67 | }, 68 | "@rollup/plugin-replace": { 69 | "version": "2.3.3", 70 | "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz", 71 | "integrity": "sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==", 72 | "dev": true, 73 | "requires": { 74 | "@rollup/pluginutils": "^3.0.8", 75 | "magic-string": "^0.25.5" 76 | } 77 | }, 78 | "@rollup/pluginutils": { 79 | "version": "3.1.0", 80 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 81 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 82 | "dev": true, 83 | "requires": { 84 | "@types/estree": "0.0.39", 85 | "estree-walker": "^1.0.1", 86 | "picomatch": "^2.2.2" 87 | } 88 | }, 89 | "@types/estree": { 90 | "version": "0.0.39", 91 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 92 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 93 | "dev": true 94 | }, 95 | "@types/node": { 96 | "version": "14.0.23", 97 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.23.tgz", 98 | "integrity": "sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==", 99 | "dev": true 100 | }, 101 | "@types/resolve": { 102 | "version": "1.17.1", 103 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 104 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 105 | "dev": true, 106 | "requires": { 107 | "@types/node": "*" 108 | } 109 | }, 110 | "accepts": { 111 | "version": "1.3.7", 112 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 113 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 114 | "dev": true, 115 | "requires": { 116 | "mime-types": "~2.1.24", 117 | "negotiator": "0.6.2" 118 | } 119 | }, 120 | "acorn": { 121 | "version": "7.3.1", 122 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", 123 | "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", 124 | "dev": true, 125 | "optional": true 126 | }, 127 | "ansi-regex": { 128 | "version": "2.1.1", 129 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 130 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 131 | "dev": true 132 | }, 133 | "ansi-styles": { 134 | "version": "3.2.1", 135 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 136 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 137 | "dev": true, 138 | "requires": { 139 | "color-convert": "^1.9.0" 140 | } 141 | }, 142 | "anymatch": { 143 | "version": "3.1.1", 144 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 145 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 146 | "dev": true, 147 | "requires": { 148 | "normalize-path": "^3.0.0", 149 | "picomatch": "^2.0.4" 150 | } 151 | }, 152 | "array-flatten": { 153 | "version": "1.1.1", 154 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 155 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", 156 | "dev": true 157 | }, 158 | "async-limiter": { 159 | "version": "1.0.1", 160 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 161 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" 162 | }, 163 | "balanced-match": { 164 | "version": "1.0.0", 165 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 166 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 167 | }, 168 | "base64-js": { 169 | "version": "1.3.1", 170 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 171 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" 172 | }, 173 | "big.js": { 174 | "version": "5.2.2", 175 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 176 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 177 | "dev": true 178 | }, 179 | "binary-extensions": { 180 | "version": "2.1.0", 181 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", 182 | "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", 183 | "dev": true 184 | }, 185 | "bl": { 186 | "version": "1.2.3", 187 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 188 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 189 | "requires": { 190 | "readable-stream": "^2.3.5", 191 | "safe-buffer": "^5.1.1" 192 | } 193 | }, 194 | "body-parser": { 195 | "version": "1.19.0", 196 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 197 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 198 | "dev": true, 199 | "requires": { 200 | "bytes": "3.1.0", 201 | "content-type": "~1.0.4", 202 | "debug": "2.6.9", 203 | "depd": "~1.1.2", 204 | "http-errors": "1.7.2", 205 | "iconv-lite": "0.4.24", 206 | "on-finished": "~2.3.0", 207 | "qs": "6.7.0", 208 | "raw-body": "2.4.0", 209 | "type-is": "~1.6.17" 210 | } 211 | }, 212 | "brace-expansion": { 213 | "version": "1.1.11", 214 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 215 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 216 | "requires": { 217 | "balanced-match": "^1.0.0", 218 | "concat-map": "0.0.1" 219 | } 220 | }, 221 | "braces": { 222 | "version": "3.0.2", 223 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 224 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 225 | "dev": true, 226 | "requires": { 227 | "fill-range": "^7.0.1" 228 | } 229 | }, 230 | "buffer-from": { 231 | "version": "1.1.1", 232 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 233 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 234 | }, 235 | "builtin-modules": { 236 | "version": "3.1.0", 237 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", 238 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", 239 | "dev": true 240 | }, 241 | "bytes": { 242 | "version": "3.1.0", 243 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 244 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 245 | "dev": true 246 | }, 247 | "callback-stream": { 248 | "version": "1.1.0", 249 | "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", 250 | "integrity": "sha1-RwGlEmbwbgbqpx/BcjOCLYdfSQg=", 251 | "requires": { 252 | "inherits": "^2.0.1", 253 | "readable-stream": "> 1.0.0 < 3.0.0" 254 | } 255 | }, 256 | "chalk": { 257 | "version": "2.4.2", 258 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 259 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 260 | "dev": true, 261 | "requires": { 262 | "ansi-styles": "^3.2.1", 263 | "escape-string-regexp": "^1.0.5", 264 | "supports-color": "^5.3.0" 265 | } 266 | }, 267 | "chokidar": { 268 | "version": "3.4.0", 269 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", 270 | "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", 271 | "dev": true, 272 | "requires": { 273 | "anymatch": "~3.1.1", 274 | "braces": "~3.0.2", 275 | "fsevents": "~2.1.2", 276 | "glob-parent": "~5.1.0", 277 | "is-binary-path": "~2.1.0", 278 | "is-glob": "~4.0.1", 279 | "normalize-path": "~3.0.0", 280 | "readdirp": "~3.4.0" 281 | } 282 | }, 283 | "clsx": { 284 | "version": "1.1.1", 285 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", 286 | "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" 287 | }, 288 | "color-convert": { 289 | "version": "1.9.3", 290 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 291 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 292 | "dev": true, 293 | "requires": { 294 | "color-name": "1.1.3" 295 | } 296 | }, 297 | "color-name": { 298 | "version": "1.1.3", 299 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 300 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 301 | "dev": true 302 | }, 303 | "commander": { 304 | "version": "2.20.3", 305 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 306 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 307 | "dev": true 308 | }, 309 | "commist": { 310 | "version": "1.1.0", 311 | "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", 312 | "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", 313 | "requires": { 314 | "leven": "^2.1.0", 315 | "minimist": "^1.1.0" 316 | }, 317 | "dependencies": { 318 | "leven": { 319 | "version": "2.1.0", 320 | "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", 321 | "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" 322 | } 323 | } 324 | }, 325 | "commondir": { 326 | "version": "1.0.1", 327 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 328 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 329 | "dev": true 330 | }, 331 | "concat-map": { 332 | "version": "0.0.1", 333 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 334 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 335 | }, 336 | "concat-stream": { 337 | "version": "1.6.2", 338 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 339 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 340 | "requires": { 341 | "buffer-from": "^1.0.0", 342 | "inherits": "^2.0.3", 343 | "readable-stream": "^2.2.2", 344 | "typedarray": "^0.0.6" 345 | } 346 | }, 347 | "console-clear": { 348 | "version": "1.1.1", 349 | "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", 350 | "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" 351 | }, 352 | "content-disposition": { 353 | "version": "0.5.3", 354 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 355 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 356 | "dev": true, 357 | "requires": { 358 | "safe-buffer": "5.1.2" 359 | } 360 | }, 361 | "content-type": { 362 | "version": "1.0.4", 363 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 364 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 365 | "dev": true 366 | }, 367 | "convert-source-map": { 368 | "version": "1.7.0", 369 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 370 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 371 | "dev": true, 372 | "optional": true, 373 | "requires": { 374 | "safe-buffer": "~5.1.1" 375 | } 376 | }, 377 | "cookie": { 378 | "version": "0.4.0", 379 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 380 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", 381 | "dev": true 382 | }, 383 | "cookie-signature": { 384 | "version": "1.0.6", 385 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 386 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 387 | "dev": true 388 | }, 389 | "core-js": { 390 | "version": "3.6.5", 391 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", 392 | "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" 393 | }, 394 | "core-util-is": { 395 | "version": "1.0.2", 396 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 397 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 398 | }, 399 | "cors": { 400 | "version": "2.8.5", 401 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 402 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 403 | "dev": true, 404 | "requires": { 405 | "object-assign": "^4", 406 | "vary": "^1" 407 | } 408 | }, 409 | "cross-env": { 410 | "version": "7.0.2", 411 | "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", 412 | "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", 413 | "dev": true, 414 | "requires": { 415 | "cross-spawn": "^7.0.1" 416 | } 417 | }, 418 | "cross-spawn": { 419 | "version": "7.0.3", 420 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 421 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 422 | "dev": true, 423 | "requires": { 424 | "path-key": "^3.1.0", 425 | "shebang-command": "^2.0.0", 426 | "which": "^2.0.1" 427 | } 428 | }, 429 | "d": { 430 | "version": "1.0.1", 431 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 432 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 433 | "requires": { 434 | "es5-ext": "^0.10.50", 435 | "type": "^1.0.1" 436 | } 437 | }, 438 | "debug": { 439 | "version": "2.6.9", 440 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 441 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 442 | "dev": true, 443 | "requires": { 444 | "ms": "2.0.0" 445 | } 446 | }, 447 | "deep-freeze": { 448 | "version": "0.0.1", 449 | "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", 450 | "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", 451 | "dev": true 452 | }, 453 | "deepmerge": { 454 | "version": "4.2.2", 455 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 456 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 457 | "dev": true 458 | }, 459 | "depd": { 460 | "version": "1.1.2", 461 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 462 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 463 | "dev": true 464 | }, 465 | "destroy": { 466 | "version": "1.0.4", 467 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 468 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 469 | "dev": true 470 | }, 471 | "dotenv": { 472 | "version": "8.2.0", 473 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", 474 | "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", 475 | "dev": true 476 | }, 477 | "duplexer": { 478 | "version": "0.1.1", 479 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 480 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", 481 | "dev": true 482 | }, 483 | "duplexify": { 484 | "version": "3.7.1", 485 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", 486 | "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", 487 | "requires": { 488 | "end-of-stream": "^1.0.0", 489 | "inherits": "^2.0.1", 490 | "readable-stream": "^2.0.0", 491 | "stream-shift": "^1.0.0" 492 | } 493 | }, 494 | "ee-first": { 495 | "version": "1.1.1", 496 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 497 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 498 | "dev": true 499 | }, 500 | "emojis-list": { 501 | "version": "3.0.0", 502 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 503 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 504 | "dev": true 505 | }, 506 | "encodeurl": { 507 | "version": "1.0.2", 508 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 509 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 510 | "dev": true 511 | }, 512 | "end-of-stream": { 513 | "version": "1.4.4", 514 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 515 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 516 | "requires": { 517 | "once": "^1.4.0" 518 | } 519 | }, 520 | "es5-ext": { 521 | "version": "0.10.53", 522 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", 523 | "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", 524 | "requires": { 525 | "es6-iterator": "~2.0.3", 526 | "es6-symbol": "~3.1.3", 527 | "next-tick": "~1.0.0" 528 | } 529 | }, 530 | "es6-iterator": { 531 | "version": "2.0.3", 532 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 533 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 534 | "requires": { 535 | "d": "1", 536 | "es5-ext": "^0.10.35", 537 | "es6-symbol": "^3.1.1" 538 | } 539 | }, 540 | "es6-map": { 541 | "version": "0.1.5", 542 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", 543 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", 544 | "requires": { 545 | "d": "1", 546 | "es5-ext": "~0.10.14", 547 | "es6-iterator": "~2.0.1", 548 | "es6-set": "~0.1.5", 549 | "es6-symbol": "~3.1.1", 550 | "event-emitter": "~0.3.5" 551 | } 552 | }, 553 | "es6-promise": { 554 | "version": "4.2.8", 555 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 556 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 557 | "dev": true, 558 | "optional": true 559 | }, 560 | "es6-set": { 561 | "version": "0.1.5", 562 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", 563 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", 564 | "requires": { 565 | "d": "1", 566 | "es5-ext": "~0.10.14", 567 | "es6-iterator": "~2.0.1", 568 | "es6-symbol": "3.1.1", 569 | "event-emitter": "~0.3.5" 570 | }, 571 | "dependencies": { 572 | "es6-symbol": { 573 | "version": "3.1.1", 574 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 575 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 576 | "requires": { 577 | "d": "1", 578 | "es5-ext": "~0.10.14" 579 | } 580 | } 581 | } 582 | }, 583 | "es6-symbol": { 584 | "version": "3.1.3", 585 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 586 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 587 | "requires": { 588 | "d": "^1.0.1", 589 | "ext": "^1.1.2" 590 | } 591 | }, 592 | "escape-html": { 593 | "version": "1.0.3", 594 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 595 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 596 | "dev": true 597 | }, 598 | "escape-string-regexp": { 599 | "version": "1.0.5", 600 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 601 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 602 | "dev": true 603 | }, 604 | "estree-walker": { 605 | "version": "1.0.1", 606 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 607 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 608 | "dev": true 609 | }, 610 | "etag": { 611 | "version": "1.8.1", 612 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 613 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 614 | "dev": true 615 | }, 616 | "event-emitter": { 617 | "version": "0.3.5", 618 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 619 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 620 | "requires": { 621 | "d": "1", 622 | "es5-ext": "~0.10.14" 623 | } 624 | }, 625 | "express": { 626 | "version": "4.17.1", 627 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 628 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 629 | "dev": true, 630 | "requires": { 631 | "accepts": "~1.3.7", 632 | "array-flatten": "1.1.1", 633 | "body-parser": "1.19.0", 634 | "content-disposition": "0.5.3", 635 | "content-type": "~1.0.4", 636 | "cookie": "0.4.0", 637 | "cookie-signature": "1.0.6", 638 | "debug": "2.6.9", 639 | "depd": "~1.1.2", 640 | "encodeurl": "~1.0.2", 641 | "escape-html": "~1.0.3", 642 | "etag": "~1.8.1", 643 | "finalhandler": "~1.1.2", 644 | "fresh": "0.5.2", 645 | "merge-descriptors": "1.0.1", 646 | "methods": "~1.1.2", 647 | "on-finished": "~2.3.0", 648 | "parseurl": "~1.3.3", 649 | "path-to-regexp": "0.1.7", 650 | "proxy-addr": "~2.0.5", 651 | "qs": "6.7.0", 652 | "range-parser": "~1.2.1", 653 | "safe-buffer": "5.1.2", 654 | "send": "0.17.1", 655 | "serve-static": "1.14.1", 656 | "setprototypeof": "1.1.1", 657 | "statuses": "~1.5.0", 658 | "type-is": "~1.6.18", 659 | "utils-merge": "1.0.1", 660 | "vary": "~1.1.2" 661 | } 662 | }, 663 | "express-history-api-fallback": { 664 | "version": "2.2.1", 665 | "resolved": "https://registry.npmjs.org/express-history-api-fallback/-/express-history-api-fallback-2.2.1.tgz", 666 | "integrity": "sha1-OirSf3vryQ/FM9EQ18bYMJe80Fc=", 667 | "dev": true, 668 | "optional": true 669 | }, 670 | "express-http-proxy": { 671 | "version": "1.6.0", 672 | "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-1.6.0.tgz", 673 | "integrity": "sha512-7Re6Lepg96NA2wiv7DC5csChAScn4K76/UgYnC71XiITCT1cgGTJUGK6GS0pIixudg3Fbx3Q6mmEW3mZv5tHFQ==", 674 | "dev": true, 675 | "optional": true, 676 | "requires": { 677 | "debug": "^3.0.1", 678 | "es6-promise": "^4.1.1", 679 | "raw-body": "^2.3.0" 680 | }, 681 | "dependencies": { 682 | "debug": { 683 | "version": "3.2.6", 684 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 685 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 686 | "dev": true, 687 | "optional": true, 688 | "requires": { 689 | "ms": "^2.1.1" 690 | } 691 | }, 692 | "ms": { 693 | "version": "2.1.2", 694 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 695 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 696 | "dev": true, 697 | "optional": true 698 | } 699 | } 700 | }, 701 | "express-ws": { 702 | "version": "4.0.0", 703 | "resolved": "https://registry.npmjs.org/express-ws/-/express-ws-4.0.0.tgz", 704 | "integrity": "sha512-KEyUw8AwRET2iFjFsI1EJQrJ/fHeGiJtgpYgEWG3yDv4l/To/m3a2GaYfeGyB3lsWdvbesjF5XCMx+SVBgAAYw==", 705 | "dev": true, 706 | "optional": true, 707 | "requires": { 708 | "ws": "^5.2.0" 709 | }, 710 | "dependencies": { 711 | "ws": { 712 | "version": "5.2.2", 713 | "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", 714 | "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", 715 | "dev": true, 716 | "optional": true, 717 | "requires": { 718 | "async-limiter": "~1.0.0" 719 | } 720 | } 721 | } 722 | }, 723 | "ext": { 724 | "version": "1.4.0", 725 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", 726 | "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", 727 | "requires": { 728 | "type": "^2.0.0" 729 | }, 730 | "dependencies": { 731 | "type": { 732 | "version": "2.0.0", 733 | "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", 734 | "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" 735 | } 736 | } 737 | }, 738 | "extend": { 739 | "version": "3.0.2", 740 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 741 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 742 | }, 743 | "figures": { 744 | "version": "1.7.0", 745 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 746 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 747 | "dev": true, 748 | "requires": { 749 | "escape-string-regexp": "^1.0.5", 750 | "object-assign": "^4.1.0" 751 | } 752 | }, 753 | "fill-range": { 754 | "version": "7.0.1", 755 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 756 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 757 | "dev": true, 758 | "requires": { 759 | "to-regex-range": "^5.0.1" 760 | } 761 | }, 762 | "finalhandler": { 763 | "version": "1.1.2", 764 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 765 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 766 | "dev": true, 767 | "requires": { 768 | "debug": "2.6.9", 769 | "encodeurl": "~1.0.2", 770 | "escape-html": "~1.0.3", 771 | "on-finished": "~2.3.0", 772 | "parseurl": "~1.3.3", 773 | "statuses": "~1.5.0", 774 | "unpipe": "~1.0.0" 775 | } 776 | }, 777 | "forwarded": { 778 | "version": "0.1.2", 779 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 780 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", 781 | "dev": true 782 | }, 783 | "fresh": { 784 | "version": "0.5.2", 785 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 786 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 787 | "dev": true 788 | }, 789 | "fs.realpath": { 790 | "version": "1.0.0", 791 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 792 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 793 | }, 794 | "fsevents": { 795 | "version": "2.1.3", 796 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 797 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 798 | "dev": true, 799 | "optional": true 800 | }, 801 | "get-port": { 802 | "version": "3.2.0", 803 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", 804 | "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" 805 | }, 806 | "glob": { 807 | "version": "7.1.6", 808 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 809 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 810 | "requires": { 811 | "fs.realpath": "^1.0.0", 812 | "inflight": "^1.0.4", 813 | "inherits": "2", 814 | "minimatch": "^3.0.4", 815 | "once": "^1.3.0", 816 | "path-is-absolute": "^1.0.0" 817 | } 818 | }, 819 | "glob-parent": { 820 | "version": "5.1.1", 821 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 822 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 823 | "dev": true, 824 | "requires": { 825 | "is-glob": "^4.0.1" 826 | } 827 | }, 828 | "glob-stream": { 829 | "version": "6.1.0", 830 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", 831 | "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", 832 | "requires": { 833 | "extend": "^3.0.0", 834 | "glob": "^7.1.1", 835 | "glob-parent": "^3.1.0", 836 | "is-negated-glob": "^1.0.0", 837 | "ordered-read-streams": "^1.0.0", 838 | "pumpify": "^1.3.5", 839 | "readable-stream": "^2.1.5", 840 | "remove-trailing-separator": "^1.0.1", 841 | "to-absolute-glob": "^2.0.0", 842 | "unique-stream": "^2.0.2" 843 | }, 844 | "dependencies": { 845 | "glob-parent": { 846 | "version": "3.1.0", 847 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 848 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 849 | "requires": { 850 | "is-glob": "^3.1.0", 851 | "path-dirname": "^1.0.0" 852 | } 853 | }, 854 | "is-glob": { 855 | "version": "3.1.0", 856 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 857 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 858 | "requires": { 859 | "is-extglob": "^2.1.0" 860 | } 861 | } 862 | } 863 | }, 864 | "gzip-size": { 865 | "version": "3.0.0", 866 | "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", 867 | "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", 868 | "dev": true, 869 | "requires": { 870 | "duplexer": "^0.1.1" 871 | } 872 | }, 873 | "has-ansi": { 874 | "version": "2.0.0", 875 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 876 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 877 | "dev": true, 878 | "requires": { 879 | "ansi-regex": "^2.0.0" 880 | } 881 | }, 882 | "has-flag": { 883 | "version": "3.0.0", 884 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 885 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 886 | "dev": true 887 | }, 888 | "help-me": { 889 | "version": "1.1.0", 890 | "resolved": "https://registry.npmjs.org/help-me/-/help-me-1.1.0.tgz", 891 | "integrity": "sha1-jy1QjQYAtKRW2i8IZVbn5cBWo8Y=", 892 | "requires": { 893 | "callback-stream": "^1.0.2", 894 | "glob-stream": "^6.1.0", 895 | "through2": "^2.0.1", 896 | "xtend": "^4.0.0" 897 | } 898 | }, 899 | "http-errors": { 900 | "version": "1.7.2", 901 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 902 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 903 | "dev": true, 904 | "requires": { 905 | "depd": "~1.1.2", 906 | "inherits": "2.0.3", 907 | "setprototypeof": "1.1.1", 908 | "statuses": ">= 1.5.0 < 2", 909 | "toidentifier": "1.0.0" 910 | }, 911 | "dependencies": { 912 | "inherits": { 913 | "version": "2.0.3", 914 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 915 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 916 | "dev": true 917 | } 918 | } 919 | }, 920 | "iconv-lite": { 921 | "version": "0.4.24", 922 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 923 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 924 | "dev": true, 925 | "requires": { 926 | "safer-buffer": ">= 2.1.2 < 3" 927 | } 928 | }, 929 | "inflight": { 930 | "version": "1.0.6", 931 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 932 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 933 | "requires": { 934 | "once": "^1.3.0", 935 | "wrappy": "1" 936 | } 937 | }, 938 | "inherits": { 939 | "version": "2.0.4", 940 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 941 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 942 | }, 943 | "ipaddr.js": { 944 | "version": "1.9.1", 945 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 946 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 947 | "dev": true 948 | }, 949 | "is-absolute": { 950 | "version": "1.0.0", 951 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 952 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 953 | "requires": { 954 | "is-relative": "^1.0.0", 955 | "is-windows": "^1.0.1" 956 | } 957 | }, 958 | "is-binary-path": { 959 | "version": "2.1.0", 960 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 961 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 962 | "dev": true, 963 | "requires": { 964 | "binary-extensions": "^2.0.0" 965 | } 966 | }, 967 | "is-extglob": { 968 | "version": "2.1.1", 969 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 970 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 971 | }, 972 | "is-glob": { 973 | "version": "4.0.1", 974 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 975 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 976 | "dev": true, 977 | "requires": { 978 | "is-extglob": "^2.1.1" 979 | } 980 | }, 981 | "is-module": { 982 | "version": "1.0.0", 983 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 984 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 985 | "dev": true 986 | }, 987 | "is-negated-glob": { 988 | "version": "1.0.0", 989 | "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", 990 | "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" 991 | }, 992 | "is-number": { 993 | "version": "7.0.0", 994 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 995 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 996 | "dev": true 997 | }, 998 | "is-reference": { 999 | "version": "1.2.1", 1000 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 1001 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 1002 | "dev": true, 1003 | "requires": { 1004 | "@types/estree": "*" 1005 | } 1006 | }, 1007 | "is-relative": { 1008 | "version": "1.0.0", 1009 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 1010 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 1011 | "requires": { 1012 | "is-unc-path": "^1.0.0" 1013 | } 1014 | }, 1015 | "is-unc-path": { 1016 | "version": "1.0.0", 1017 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 1018 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 1019 | "requires": { 1020 | "unc-path-regex": "^0.1.2" 1021 | } 1022 | }, 1023 | "is-windows": { 1024 | "version": "1.0.2", 1025 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1026 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" 1027 | }, 1028 | "isarray": { 1029 | "version": "1.0.0", 1030 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1031 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1032 | }, 1033 | "isexe": { 1034 | "version": "2.0.0", 1035 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1036 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1037 | "dev": true 1038 | }, 1039 | "jest-worker": { 1040 | "version": "26.1.0", 1041 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.1.0.tgz", 1042 | "integrity": "sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==", 1043 | "dev": true, 1044 | "requires": { 1045 | "merge-stream": "^2.0.0", 1046 | "supports-color": "^7.0.0" 1047 | }, 1048 | "dependencies": { 1049 | "has-flag": { 1050 | "version": "4.0.0", 1051 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1052 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1053 | "dev": true 1054 | }, 1055 | "supports-color": { 1056 | "version": "7.1.0", 1057 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 1058 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 1059 | "dev": true, 1060 | "requires": { 1061 | "has-flag": "^4.0.0" 1062 | } 1063 | } 1064 | } 1065 | }, 1066 | "js-tokens": { 1067 | "version": "4.0.0", 1068 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1069 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1070 | "dev": true 1071 | }, 1072 | "json-stable-stringify-without-jsonify": { 1073 | "version": "1.0.1", 1074 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1075 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" 1076 | }, 1077 | "json5": { 1078 | "version": "1.0.1", 1079 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1080 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1081 | "dev": true, 1082 | "requires": { 1083 | "minimist": "^1.2.0" 1084 | } 1085 | }, 1086 | "kleur": { 1087 | "version": "3.0.3", 1088 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 1089 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" 1090 | }, 1091 | "livereload": { 1092 | "version": "0.9.1", 1093 | "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", 1094 | "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", 1095 | "dev": true, 1096 | "requires": { 1097 | "chokidar": "^3.3.0", 1098 | "livereload-js": "^3.1.0", 1099 | "opts": ">= 1.2.0", 1100 | "ws": "^6.2.1" 1101 | } 1102 | }, 1103 | "livereload-js": { 1104 | "version": "3.2.3", 1105 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.3.tgz", 1106 | "integrity": "sha512-dXL/WgTGI2K3oeYX/z1lngFXSKtjCB2j7n9WSSluoU6/6+N4LWNoMiCBFNgn8dh3luBn4JBajVSvM5I7Xn6SLA==", 1107 | "dev": true 1108 | }, 1109 | "loader-utils": { 1110 | "version": "1.4.0", 1111 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 1112 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 1113 | "dev": true, 1114 | "requires": { 1115 | "big.js": "^5.2.2", 1116 | "emojis-list": "^3.0.0", 1117 | "json5": "^1.0.1" 1118 | } 1119 | }, 1120 | "local-access": { 1121 | "version": "1.0.1", 1122 | "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz", 1123 | "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==" 1124 | }, 1125 | "lodash.isobject": { 1126 | "version": "3.0.2", 1127 | "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", 1128 | "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=" 1129 | }, 1130 | "lodash.tonumber": { 1131 | "version": "4.0.3", 1132 | "resolved": "https://registry.npmjs.org/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz", 1133 | "integrity": "sha1-C5azGzVnJ5Prf1pj7nkfG56QJdk=" 1134 | }, 1135 | "magic-string": { 1136 | "version": "0.25.7", 1137 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 1138 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 1139 | "dev": true, 1140 | "requires": { 1141 | "sourcemap-codec": "^1.4.4" 1142 | } 1143 | }, 1144 | "maxmin": { 1145 | "version": "2.1.0", 1146 | "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", 1147 | "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", 1148 | "dev": true, 1149 | "requires": { 1150 | "chalk": "^1.0.0", 1151 | "figures": "^1.0.1", 1152 | "gzip-size": "^3.0.0", 1153 | "pretty-bytes": "^3.0.0" 1154 | }, 1155 | "dependencies": { 1156 | "ansi-styles": { 1157 | "version": "2.2.1", 1158 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1159 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1160 | "dev": true 1161 | }, 1162 | "chalk": { 1163 | "version": "1.1.3", 1164 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1165 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1166 | "dev": true, 1167 | "requires": { 1168 | "ansi-styles": "^2.2.1", 1169 | "escape-string-regexp": "^1.0.2", 1170 | "has-ansi": "^2.0.0", 1171 | "strip-ansi": "^3.0.0", 1172 | "supports-color": "^2.0.0" 1173 | } 1174 | }, 1175 | "supports-color": { 1176 | "version": "2.0.0", 1177 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1178 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1179 | "dev": true 1180 | } 1181 | } 1182 | }, 1183 | "media-typer": { 1184 | "version": "0.3.0", 1185 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1186 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 1187 | "dev": true 1188 | }, 1189 | "merge-descriptors": { 1190 | "version": "1.0.1", 1191 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1192 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", 1193 | "dev": true 1194 | }, 1195 | "merge-stream": { 1196 | "version": "2.0.0", 1197 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1198 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1199 | "dev": true 1200 | }, 1201 | "methods": { 1202 | "version": "1.1.2", 1203 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1204 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 1205 | "dev": true 1206 | }, 1207 | "mime": { 1208 | "version": "2.4.6", 1209 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", 1210 | "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" 1211 | }, 1212 | "mime-db": { 1213 | "version": "1.44.0", 1214 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 1215 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", 1216 | "dev": true 1217 | }, 1218 | "mime-types": { 1219 | "version": "2.1.27", 1220 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 1221 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 1222 | "dev": true, 1223 | "requires": { 1224 | "mime-db": "1.44.0" 1225 | } 1226 | }, 1227 | "minimatch": { 1228 | "version": "3.0.4", 1229 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1230 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1231 | "requires": { 1232 | "brace-expansion": "^1.1.7" 1233 | } 1234 | }, 1235 | "minimist": { 1236 | "version": "1.2.5", 1237 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1238 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1239 | }, 1240 | "moment": { 1241 | "version": "2.27.0", 1242 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", 1243 | "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" 1244 | }, 1245 | "mqtt": { 1246 | "version": "4.1.0", 1247 | "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.1.0.tgz", 1248 | "integrity": "sha512-dBihVZzaB8p9G/2ktSfamiaHmMnpCpP2du08317ZuEX1kBAbZOG9aMJQ11EChXnOX3GKUeiZYaSITueceQKT2A==", 1249 | "requires": { 1250 | "base64-js": "^1.3.0", 1251 | "commist": "^1.0.0", 1252 | "concat-stream": "^1.6.2", 1253 | "debug": "^4.1.1", 1254 | "end-of-stream": "^1.4.1", 1255 | "es6-map": "^0.1.5", 1256 | "help-me": "^1.0.1", 1257 | "inherits": "^2.0.3", 1258 | "minimist": "^1.2.0", 1259 | "mqtt-packet": "^6.0.0", 1260 | "pump": "^3.0.0", 1261 | "readable-stream": "^2.3.6", 1262 | "reinterval": "^1.1.0", 1263 | "split2": "^3.1.0", 1264 | "websocket-stream": "^5.1.2", 1265 | "xtend": "^4.0.1" 1266 | }, 1267 | "dependencies": { 1268 | "debug": { 1269 | "version": "4.1.1", 1270 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1271 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1272 | "requires": { 1273 | "ms": "^2.1.1" 1274 | } 1275 | }, 1276 | "ms": { 1277 | "version": "2.1.2", 1278 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1279 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1280 | } 1281 | } 1282 | }, 1283 | "mqtt-packet": { 1284 | "version": "6.3.2", 1285 | "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.3.2.tgz", 1286 | "integrity": "sha512-i56+2kN6F57KInGtjjfUXSl4xG8u/zOvfaXFLKFAbBXzWkXOmwcmjaSCBPayf2IQCkQU0+h+S2DizCo3CF6gQA==", 1287 | "requires": { 1288 | "bl": "^1.2.2", 1289 | "debug": "^4.1.1", 1290 | "inherits": "^2.0.3", 1291 | "process-nextick-args": "^2.0.0", 1292 | "safe-buffer": "^5.1.2" 1293 | }, 1294 | "dependencies": { 1295 | "debug": { 1296 | "version": "4.1.1", 1297 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1298 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1299 | "requires": { 1300 | "ms": "^2.1.1" 1301 | } 1302 | }, 1303 | "ms": { 1304 | "version": "2.1.2", 1305 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1306 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1307 | } 1308 | } 1309 | }, 1310 | "mri": { 1311 | "version": "1.1.5", 1312 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", 1313 | "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==" 1314 | }, 1315 | "ms": { 1316 | "version": "2.0.0", 1317 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1318 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1319 | "dev": true 1320 | }, 1321 | "negotiator": { 1322 | "version": "0.6.2", 1323 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1324 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 1325 | "dev": true 1326 | }, 1327 | "next-tick": { 1328 | "version": "1.0.0", 1329 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 1330 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" 1331 | }, 1332 | "nollup": { 1333 | "version": "0.12.2", 1334 | "resolved": "https://registry.npmjs.org/nollup/-/nollup-0.12.2.tgz", 1335 | "integrity": "sha512-6woSoPmP06icHfp8D/CAOUXgSBbpm2mh4y1h7WtLCPyYuHnEV3dxIXS+DHsxLPWHs9oFupS2cMoLA1RfhSZ71A==", 1336 | "dev": true, 1337 | "optional": true, 1338 | "requires": { 1339 | "@rollup/pluginutils": "^3.0.8", 1340 | "acorn": "^7.0.0", 1341 | "chokidar": "^3.0.0", 1342 | "convert-source-map": "^1.5.1", 1343 | "express": "^4.16.3", 1344 | "express-history-api-fallback": "^2.2.1", 1345 | "express-http-proxy": "^1.5.1", 1346 | "express-ws": "^4.0.0", 1347 | "magic-string": "^0.24.0", 1348 | "mime-types": "^2.1.24", 1349 | "source-map": "^0.5.6" 1350 | }, 1351 | "dependencies": { 1352 | "magic-string": { 1353 | "version": "0.24.1", 1354 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.24.1.tgz", 1355 | "integrity": "sha512-YBfNxbJiixMzxW40XqJEIldzHyh5f7CZKalo1uZffevyrPEX8Qgo9s0dmcORLHdV47UyvJg8/zD+6hQG3qvJrA==", 1356 | "dev": true, 1357 | "optional": true, 1358 | "requires": { 1359 | "sourcemap-codec": "^1.4.1" 1360 | } 1361 | }, 1362 | "source-map": { 1363 | "version": "0.5.7", 1364 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1365 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1366 | "dev": true, 1367 | "optional": true 1368 | } 1369 | } 1370 | }, 1371 | "normalize-path": { 1372 | "version": "3.0.0", 1373 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1374 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1375 | "dev": true 1376 | }, 1377 | "number-is-nan": { 1378 | "version": "1.0.1", 1379 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1380 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1381 | "dev": true 1382 | }, 1383 | "object-assign": { 1384 | "version": "4.1.1", 1385 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1386 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1387 | "dev": true 1388 | }, 1389 | "on-finished": { 1390 | "version": "2.3.0", 1391 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1392 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1393 | "dev": true, 1394 | "requires": { 1395 | "ee-first": "1.1.1" 1396 | } 1397 | }, 1398 | "once": { 1399 | "version": "1.4.0", 1400 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1401 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1402 | "requires": { 1403 | "wrappy": "1" 1404 | } 1405 | }, 1406 | "opts": { 1407 | "version": "2.0.0", 1408 | "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.0.tgz", 1409 | "integrity": "sha512-rPleeyX48sBEc4aj7rAok5dCbvRdYpdbIdSRR4gnIK98a7Rvd4l3wlv4YHQr2mwPQTpKQiw8uipi/WoyItDINg==", 1410 | "dev": true 1411 | }, 1412 | "ordered-read-streams": { 1413 | "version": "1.0.1", 1414 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", 1415 | "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", 1416 | "requires": { 1417 | "readable-stream": "^2.0.1" 1418 | } 1419 | }, 1420 | "parseurl": { 1421 | "version": "1.3.3", 1422 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1423 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1424 | "dev": true 1425 | }, 1426 | "path-dirname": { 1427 | "version": "1.0.2", 1428 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 1429 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" 1430 | }, 1431 | "path-is-absolute": { 1432 | "version": "1.0.1", 1433 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1434 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1435 | }, 1436 | "path-key": { 1437 | "version": "3.1.1", 1438 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1439 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1440 | "dev": true 1441 | }, 1442 | "path-parse": { 1443 | "version": "1.0.6", 1444 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1445 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1446 | "dev": true 1447 | }, 1448 | "path-to-regexp": { 1449 | "version": "0.1.7", 1450 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1451 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 1452 | "dev": true 1453 | }, 1454 | "picomatch": { 1455 | "version": "2.2.2", 1456 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1457 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1458 | "dev": true 1459 | }, 1460 | "pretty-bytes": { 1461 | "version": "3.0.1", 1462 | "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", 1463 | "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", 1464 | "dev": true, 1465 | "requires": { 1466 | "number-is-nan": "^1.0.0" 1467 | } 1468 | }, 1469 | "process-nextick-args": { 1470 | "version": "2.0.1", 1471 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1472 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1473 | }, 1474 | "proxy-addr": { 1475 | "version": "2.0.6", 1476 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 1477 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 1478 | "dev": true, 1479 | "requires": { 1480 | "forwarded": "~0.1.2", 1481 | "ipaddr.js": "1.9.1" 1482 | } 1483 | }, 1484 | "pump": { 1485 | "version": "3.0.0", 1486 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1487 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1488 | "requires": { 1489 | "end-of-stream": "^1.1.0", 1490 | "once": "^1.3.1" 1491 | } 1492 | }, 1493 | "pumpify": { 1494 | "version": "1.5.1", 1495 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", 1496 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", 1497 | "requires": { 1498 | "duplexify": "^3.6.0", 1499 | "inherits": "^2.0.3", 1500 | "pump": "^2.0.0" 1501 | }, 1502 | "dependencies": { 1503 | "pump": { 1504 | "version": "2.0.1", 1505 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 1506 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 1507 | "requires": { 1508 | "end-of-stream": "^1.1.0", 1509 | "once": "^1.3.1" 1510 | } 1511 | } 1512 | } 1513 | }, 1514 | "qs": { 1515 | "version": "6.7.0", 1516 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1517 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", 1518 | "dev": true 1519 | }, 1520 | "randombytes": { 1521 | "version": "2.1.0", 1522 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1523 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1524 | "dev": true, 1525 | "requires": { 1526 | "safe-buffer": "^5.1.0" 1527 | } 1528 | }, 1529 | "range-parser": { 1530 | "version": "1.2.1", 1531 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1532 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1533 | "dev": true 1534 | }, 1535 | "raw-body": { 1536 | "version": "2.4.0", 1537 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1538 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1539 | "dev": true, 1540 | "requires": { 1541 | "bytes": "3.1.0", 1542 | "http-errors": "1.7.2", 1543 | "iconv-lite": "0.4.24", 1544 | "unpipe": "1.0.0" 1545 | } 1546 | }, 1547 | "readable-stream": { 1548 | "version": "2.3.7", 1549 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1550 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1551 | "requires": { 1552 | "core-util-is": "~1.0.0", 1553 | "inherits": "~2.0.3", 1554 | "isarray": "~1.0.0", 1555 | "process-nextick-args": "~2.0.0", 1556 | "safe-buffer": "~5.1.1", 1557 | "string_decoder": "~1.1.1", 1558 | "util-deprecate": "~1.0.1" 1559 | } 1560 | }, 1561 | "readdirp": { 1562 | "version": "3.4.0", 1563 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", 1564 | "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", 1565 | "dev": true, 1566 | "requires": { 1567 | "picomatch": "^2.2.1" 1568 | } 1569 | }, 1570 | "reinterval": { 1571 | "version": "1.1.0", 1572 | "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", 1573 | "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=" 1574 | }, 1575 | "remove-trailing-separator": { 1576 | "version": "1.1.0", 1577 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 1578 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" 1579 | }, 1580 | "require-relative": { 1581 | "version": "0.8.7", 1582 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 1583 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 1584 | "dev": true 1585 | }, 1586 | "resolve": { 1587 | "version": "1.17.0", 1588 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1589 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1590 | "dev": true, 1591 | "requires": { 1592 | "path-parse": "^1.0.6" 1593 | } 1594 | }, 1595 | "rollup": { 1596 | "version": "2.22.0", 1597 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.22.0.tgz", 1598 | "integrity": "sha512-TNuj5gQTwMu3hcM65HcBTx62N04/7v+4LRH6HOWe497hG0ic5RRfe+Vr88km8XfeApd/AIIQtVfRVNHk92Knmg==", 1599 | "dev": true, 1600 | "requires": { 1601 | "fsevents": "~2.1.2" 1602 | } 1603 | }, 1604 | "rollup-plugin-analyzer": { 1605 | "version": "3.3.0", 1606 | "resolved": "https://registry.npmjs.org/rollup-plugin-analyzer/-/rollup-plugin-analyzer-3.3.0.tgz", 1607 | "integrity": "sha512-zUPGitW4usmZcVa0nKecRvw3odtXgnxdCben9Hx1kxVoR3demek8RU9tmRG/R35hnRPQTb7wEsYEe3GUcjxIMA==", 1608 | "dev": true 1609 | }, 1610 | "rollup-plugin-bundle-size": { 1611 | "version": "1.0.3", 1612 | "resolved": "https://registry.npmjs.org/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz", 1613 | "integrity": "sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==", 1614 | "dev": true, 1615 | "requires": { 1616 | "chalk": "^1.1.3", 1617 | "maxmin": "^2.1.0" 1618 | }, 1619 | "dependencies": { 1620 | "ansi-styles": { 1621 | "version": "2.2.1", 1622 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1623 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1624 | "dev": true 1625 | }, 1626 | "chalk": { 1627 | "version": "1.1.3", 1628 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1629 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1630 | "dev": true, 1631 | "requires": { 1632 | "ansi-styles": "^2.2.1", 1633 | "escape-string-regexp": "^1.0.2", 1634 | "has-ansi": "^2.0.0", 1635 | "strip-ansi": "^3.0.0", 1636 | "supports-color": "^2.0.0" 1637 | } 1638 | }, 1639 | "supports-color": { 1640 | "version": "2.0.0", 1641 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1642 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1643 | "dev": true 1644 | } 1645 | } 1646 | }, 1647 | "rollup-plugin-hot": { 1648 | "version": "0.1.0", 1649 | "resolved": "https://registry.npmjs.org/rollup-plugin-hot/-/rollup-plugin-hot-0.1.0.tgz", 1650 | "integrity": "sha512-bmeH8Hls40nstmwIq6EPKBG5yHOdvcSjONIijDxLQ+8vK15jJp/9nM+TPX0Xmoq5IiV4lVEyqmgQnat3GOr8Lg==", 1651 | "dev": true, 1652 | "requires": { 1653 | "cors": "^2.8.5", 1654 | "express": "^4.17.1", 1655 | "mime-types": "^2.1.26", 1656 | "rollup-plugin-hot-nollup": "^0.1.0", 1657 | "rollup-pluginutils": "^2.8.2", 1658 | "ws": "^7.1.2" 1659 | }, 1660 | "dependencies": { 1661 | "ws": { 1662 | "version": "7.3.1", 1663 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", 1664 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", 1665 | "dev": true 1666 | } 1667 | } 1668 | }, 1669 | "rollup-plugin-hot-nollup": { 1670 | "version": "0.1.1", 1671 | "resolved": "https://registry.npmjs.org/rollup-plugin-hot-nollup/-/rollup-plugin-hot-nollup-0.1.1.tgz", 1672 | "integrity": "sha512-x+SCqvHQKJ+SfiFM4JxaR4ZwuUYN+RTQ6pIUu34SpSC13e4p/dNS8kRLQY9t6ZHcJGvvB0dZkD/udDT4OXXoQA==", 1673 | "dev": true, 1674 | "requires": { 1675 | "@rollup/pluginutils": "^3.1.0" 1676 | } 1677 | }, 1678 | "rollup-plugin-livereload": { 1679 | "version": "1.3.0", 1680 | "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.3.0.tgz", 1681 | "integrity": "sha512-abyqXaB21+nFHo+vJULBqfzNx6zXABC19UyvqgDfdoxR/8pFAd041GO+GIUe8ZYC2DbuMUmioh1Lvbk14YLZgw==", 1682 | "dev": true, 1683 | "requires": { 1684 | "livereload": "^0.9.1" 1685 | } 1686 | }, 1687 | "rollup-plugin-svelte": { 1688 | "version": "5.2.3", 1689 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.2.3.tgz", 1690 | "integrity": "sha512-513vOht9A93OV7fvmpIq8mD1JFgTZ5LidmpULKM2Od9P1l8oI5KwvO32fwCnASuVJS1EkRfvCnS7vKQ8DF4srg==", 1691 | "dev": true, 1692 | "requires": { 1693 | "require-relative": "^0.8.7", 1694 | "rollup-pluginutils": "^2.8.2", 1695 | "sourcemap-codec": "^1.4.8" 1696 | } 1697 | }, 1698 | "rollup-plugin-svelte-hot": { 1699 | "version": "0.10.0", 1700 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte-hot/-/rollup-plugin-svelte-hot-0.10.0.tgz", 1701 | "integrity": "sha512-taHP/kS4GnJTeJ3nXCqerOVKh6mEGXffTR6XYzd+WkXCyAJADFrWjExFYshV54GHyKv69Gdf7eGBMIL6OWSPaQ==", 1702 | "dev": true, 1703 | "requires": { 1704 | "nollup": ">=0.8.4", 1705 | "require-relative": "^0.8.7", 1706 | "rollup-plugin-hot-nollup": "^0.1.0", 1707 | "rollup-pluginutils": "^2.8.2", 1708 | "sourcemap-codec": "^1.4.8", 1709 | "svelte-hmr": "^0.10.1" 1710 | } 1711 | }, 1712 | "rollup-plugin-terser": { 1713 | "version": "6.1.0", 1714 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz", 1715 | "integrity": "sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw==", 1716 | "dev": true, 1717 | "requires": { 1718 | "@babel/code-frame": "^7.8.3", 1719 | "jest-worker": "^26.0.0", 1720 | "serialize-javascript": "^3.0.0", 1721 | "terser": "^4.7.0" 1722 | } 1723 | }, 1724 | "rollup-pluginutils": { 1725 | "version": "2.8.2", 1726 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 1727 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1728 | "dev": true, 1729 | "requires": { 1730 | "estree-walker": "^0.6.1" 1731 | }, 1732 | "dependencies": { 1733 | "estree-walker": { 1734 | "version": "0.6.1", 1735 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1736 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1737 | "dev": true 1738 | } 1739 | } 1740 | }, 1741 | "sade": { 1742 | "version": "1.7.3", 1743 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.3.tgz", 1744 | "integrity": "sha512-m4BctppMvJ60W1dXnHq7jMmFe3hPJZDAH85kQ3ACTo7XZNVUuTItCQ+2HfyaMeV5cKrbw7l4vD/6We3GBxvdJw==", 1745 | "requires": { 1746 | "mri": "^1.1.0" 1747 | } 1748 | }, 1749 | "safe-buffer": { 1750 | "version": "5.1.2", 1751 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1752 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1753 | }, 1754 | "safer-buffer": { 1755 | "version": "2.1.2", 1756 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1757 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1758 | "dev": true 1759 | }, 1760 | "semiver": { 1761 | "version": "1.1.0", 1762 | "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", 1763 | "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==" 1764 | }, 1765 | "send": { 1766 | "version": "0.17.1", 1767 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1768 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1769 | "dev": true, 1770 | "requires": { 1771 | "debug": "2.6.9", 1772 | "depd": "~1.1.2", 1773 | "destroy": "~1.0.4", 1774 | "encodeurl": "~1.0.2", 1775 | "escape-html": "~1.0.3", 1776 | "etag": "~1.8.1", 1777 | "fresh": "0.5.2", 1778 | "http-errors": "~1.7.2", 1779 | "mime": "1.6.0", 1780 | "ms": "2.1.1", 1781 | "on-finished": "~2.3.0", 1782 | "range-parser": "~1.2.1", 1783 | "statuses": "~1.5.0" 1784 | }, 1785 | "dependencies": { 1786 | "mime": { 1787 | "version": "1.6.0", 1788 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1789 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1790 | "dev": true 1791 | }, 1792 | "ms": { 1793 | "version": "2.1.1", 1794 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1795 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1796 | "dev": true 1797 | } 1798 | } 1799 | }, 1800 | "serialize-javascript": { 1801 | "version": "3.1.0", 1802 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", 1803 | "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", 1804 | "dev": true, 1805 | "requires": { 1806 | "randombytes": "^2.1.0" 1807 | } 1808 | }, 1809 | "serve-static": { 1810 | "version": "1.14.1", 1811 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1812 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1813 | "dev": true, 1814 | "requires": { 1815 | "encodeurl": "~1.0.2", 1816 | "escape-html": "~1.0.3", 1817 | "parseurl": "~1.3.3", 1818 | "send": "0.17.1" 1819 | } 1820 | }, 1821 | "setprototypeof": { 1822 | "version": "1.1.1", 1823 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1824 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 1825 | "dev": true 1826 | }, 1827 | "shebang-command": { 1828 | "version": "2.0.0", 1829 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1830 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1831 | "dev": true, 1832 | "requires": { 1833 | "shebang-regex": "^3.0.0" 1834 | } 1835 | }, 1836 | "shebang-regex": { 1837 | "version": "3.0.0", 1838 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1839 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1840 | "dev": true 1841 | }, 1842 | "sirv": { 1843 | "version": "1.0.1", 1844 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.1.tgz", 1845 | "integrity": "sha512-5prQxJFybxXkI6fGffgiJgnbMmcdGWd2K5NH+yw4zF5GIZCb2PdCb9+1qr1Y+ntNJsIRvJ6hnR+NlI9vdrRL2Q==", 1846 | "requires": { 1847 | "@polka/url": "^1.0.0-next.9", 1848 | "mime": "^2.3.1", 1849 | "totalist": "^1.0.0" 1850 | } 1851 | }, 1852 | "sirv-cli": { 1853 | "version": "1.0.3", 1854 | "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.3.tgz", 1855 | "integrity": "sha512-pLWMreVMKvK/7Zwdi/8AMjVPaOhkW24a6GRsXtLbvgvbZNHjAb0J8vs3x86ES5radO06AxGRVp8oMWbuf+ExTw==", 1856 | "requires": { 1857 | "console-clear": "^1.1.0", 1858 | "get-port": "^3.2.0", 1859 | "kleur": "^3.0.0", 1860 | "local-access": "^1.0.1", 1861 | "sade": "^1.6.0", 1862 | "semiver": "^1.0.0", 1863 | "sirv": "^1.0.1", 1864 | "tinydate": "^1.0.0" 1865 | } 1866 | }, 1867 | "source-map": { 1868 | "version": "0.6.1", 1869 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1870 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1871 | "dev": true 1872 | }, 1873 | "source-map-support": { 1874 | "version": "0.5.19", 1875 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 1876 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 1877 | "dev": true, 1878 | "requires": { 1879 | "buffer-from": "^1.0.0", 1880 | "source-map": "^0.6.0" 1881 | } 1882 | }, 1883 | "sourcemap-codec": { 1884 | "version": "1.4.8", 1885 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1886 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1887 | "dev": true 1888 | }, 1889 | "split2": { 1890 | "version": "3.1.1", 1891 | "resolved": "https://registry.npmjs.org/split2/-/split2-3.1.1.tgz", 1892 | "integrity": "sha512-emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q==", 1893 | "requires": { 1894 | "readable-stream": "^3.0.0" 1895 | }, 1896 | "dependencies": { 1897 | "readable-stream": { 1898 | "version": "3.6.0", 1899 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1900 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1901 | "requires": { 1902 | "inherits": "^2.0.3", 1903 | "string_decoder": "^1.1.1", 1904 | "util-deprecate": "^1.0.1" 1905 | } 1906 | } 1907 | } 1908 | }, 1909 | "statuses": { 1910 | "version": "1.5.0", 1911 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1912 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1913 | "dev": true 1914 | }, 1915 | "stream-shift": { 1916 | "version": "1.0.1", 1917 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 1918 | "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" 1919 | }, 1920 | "string_decoder": { 1921 | "version": "1.1.1", 1922 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1923 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1924 | "requires": { 1925 | "safe-buffer": "~5.1.0" 1926 | } 1927 | }, 1928 | "strip-ansi": { 1929 | "version": "3.0.1", 1930 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1931 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1932 | "dev": true, 1933 | "requires": { 1934 | "ansi-regex": "^2.0.0" 1935 | } 1936 | }, 1937 | "supports-color": { 1938 | "version": "5.5.0", 1939 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1940 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1941 | "dev": true, 1942 | "requires": { 1943 | "has-flag": "^3.0.0" 1944 | } 1945 | }, 1946 | "svelte": { 1947 | "version": "3.24.0", 1948 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.24.0.tgz", 1949 | "integrity": "sha512-VFXom6EP2DK83kxy4ZlBbaZklSbZIrpNH3oNXlPYHJUuW4q1OuAr3ZoYbfIVTVYPDgrI7Yq0gQcOhDlAtO4qfw==", 1950 | "dev": true 1951 | }, 1952 | "svelte-dev-helper": { 1953 | "version": "1.1.9", 1954 | "resolved": "https://registry.npmjs.org/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz", 1955 | "integrity": "sha1-fRh9tcbNu9ZNdaMvkbiZi94yc8M=", 1956 | "dev": true 1957 | }, 1958 | "svelte-hmr": { 1959 | "version": "0.10.1", 1960 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.10.1.tgz", 1961 | "integrity": "sha512-WRKVeR+iRsDzyM0nH+Q9TchnVV+WfeOoJNxqhnGuFmO01ZvnxDfWXD4UvbWdrtGUe/ijPK8erFqQMAHkNvPSww==", 1962 | "dev": true 1963 | }, 1964 | "svelte-icons": { 1965 | "version": "2.1.0", 1966 | "resolved": "https://registry.npmjs.org/svelte-icons/-/svelte-icons-2.1.0.tgz", 1967 | "integrity": "sha512-rHPQjweEc9fGSnvM0/4gA3pDHwyZyYsC5KhttCZRhSMJfLttJST5Uq0B16Czhw+HQ+HbSOk8kLigMlPs7gZtfg==" 1968 | }, 1969 | "svelte-loader": { 1970 | "version": "2.13.6", 1971 | "resolved": "https://registry.npmjs.org/svelte-loader/-/svelte-loader-2.13.6.tgz", 1972 | "integrity": "sha512-7uf7ZQdPAl+lwb1ldUYJFY/raZRUCuaNx7lMJ+F16jrVwN1+c35C2pBMGIY0mCqdKm5sm45jqELJJLGM3UG9Pw==", 1973 | "dev": true, 1974 | "requires": { 1975 | "loader-utils": "^1.1.0", 1976 | "svelte-dev-helper": "^1.1.9" 1977 | } 1978 | }, 1979 | "svelte-watch": { 1980 | "version": "1.1.0", 1981 | "resolved": "https://registry.npmjs.org/svelte-watch/-/svelte-watch-1.1.0.tgz", 1982 | "integrity": "sha512-StKuun6xUALj517hMqFrJEKmm7taRba4xNH4xaEp+nOb8VUIvdgyhJ4LpNWIQqpjMENyKZWxK11Ec3SS+/65wA==", 1983 | "dev": true 1984 | }, 1985 | "sveltestrap": { 1986 | "version": "3.5.0", 1987 | "resolved": "https://registry.npmjs.org/sveltestrap/-/sveltestrap-3.5.0.tgz", 1988 | "integrity": "sha512-5fGj3W/f2hPQ3BhYLOG9WHsXacokAQ7k2x3msBeVk0sVizXdWRMp57ase8UnMncuKFzdcUMX3odmhoCWXubayg==", 1989 | "requires": { 1990 | "clsx": "^1.0.4", 1991 | "lodash.isobject": "^3.0.2", 1992 | "lodash.tonumber": "^4.0.3" 1993 | } 1994 | }, 1995 | "terser": { 1996 | "version": "4.8.0", 1997 | "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", 1998 | "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", 1999 | "dev": true, 2000 | "requires": { 2001 | "commander": "^2.20.0", 2002 | "source-map": "~0.6.1", 2003 | "source-map-support": "~0.5.12" 2004 | } 2005 | }, 2006 | "through2": { 2007 | "version": "2.0.5", 2008 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 2009 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 2010 | "requires": { 2011 | "readable-stream": "~2.3.6", 2012 | "xtend": "~4.0.1" 2013 | } 2014 | }, 2015 | "through2-filter": { 2016 | "version": "3.0.0", 2017 | "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", 2018 | "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", 2019 | "requires": { 2020 | "through2": "~2.0.0", 2021 | "xtend": "~4.0.0" 2022 | } 2023 | }, 2024 | "tinydate": { 2025 | "version": "1.3.0", 2026 | "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", 2027 | "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" 2028 | }, 2029 | "to-absolute-glob": { 2030 | "version": "2.0.2", 2031 | "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", 2032 | "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", 2033 | "requires": { 2034 | "is-absolute": "^1.0.0", 2035 | "is-negated-glob": "^1.0.0" 2036 | } 2037 | }, 2038 | "to-regex-range": { 2039 | "version": "5.0.1", 2040 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2041 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2042 | "dev": true, 2043 | "requires": { 2044 | "is-number": "^7.0.0" 2045 | } 2046 | }, 2047 | "toidentifier": { 2048 | "version": "1.0.0", 2049 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2050 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 2051 | "dev": true 2052 | }, 2053 | "totalist": { 2054 | "version": "1.1.0", 2055 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", 2056 | "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" 2057 | }, 2058 | "type": { 2059 | "version": "1.2.0", 2060 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 2061 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 2062 | }, 2063 | "type-is": { 2064 | "version": "1.6.18", 2065 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2066 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2067 | "dev": true, 2068 | "requires": { 2069 | "media-typer": "0.3.0", 2070 | "mime-types": "~2.1.24" 2071 | } 2072 | }, 2073 | "typedarray": { 2074 | "version": "0.0.6", 2075 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2076 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 2077 | }, 2078 | "ultron": { 2079 | "version": "1.1.1", 2080 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", 2081 | "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" 2082 | }, 2083 | "unc-path-regex": { 2084 | "version": "0.1.2", 2085 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2086 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" 2087 | }, 2088 | "unique-stream": { 2089 | "version": "2.3.1", 2090 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", 2091 | "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", 2092 | "requires": { 2093 | "json-stable-stringify-without-jsonify": "^1.0.1", 2094 | "through2-filter": "^3.0.0" 2095 | } 2096 | }, 2097 | "unpipe": { 2098 | "version": "1.0.0", 2099 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2100 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 2101 | "dev": true 2102 | }, 2103 | "util-deprecate": { 2104 | "version": "1.0.2", 2105 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2106 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2107 | }, 2108 | "utils-merge": { 2109 | "version": "1.0.1", 2110 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2111 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 2112 | "dev": true 2113 | }, 2114 | "vary": { 2115 | "version": "1.1.2", 2116 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2117 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 2118 | "dev": true 2119 | }, 2120 | "websocket-stream": { 2121 | "version": "5.5.2", 2122 | "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.2.tgz", 2123 | "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==", 2124 | "requires": { 2125 | "duplexify": "^3.5.1", 2126 | "inherits": "^2.0.1", 2127 | "readable-stream": "^2.3.3", 2128 | "safe-buffer": "^5.1.2", 2129 | "ws": "^3.2.0", 2130 | "xtend": "^4.0.0" 2131 | }, 2132 | "dependencies": { 2133 | "ws": { 2134 | "version": "3.3.3", 2135 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", 2136 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", 2137 | "requires": { 2138 | "async-limiter": "~1.0.0", 2139 | "safe-buffer": "~5.1.0", 2140 | "ultron": "~1.1.0" 2141 | } 2142 | } 2143 | } 2144 | }, 2145 | "which": { 2146 | "version": "2.0.2", 2147 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2148 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2149 | "dev": true, 2150 | "requires": { 2151 | "isexe": "^2.0.0" 2152 | } 2153 | }, 2154 | "wrappy": { 2155 | "version": "1.0.2", 2156 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2157 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 2158 | }, 2159 | "ws": { 2160 | "version": "6.2.1", 2161 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", 2162 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", 2163 | "dev": true, 2164 | "requires": { 2165 | "async-limiter": "~1.0.0" 2166 | } 2167 | }, 2168 | "xtend": { 2169 | "version": "4.0.2", 2170 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2171 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 2172 | } 2173 | } 2174 | } 2175 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-app", 3 | "version": "1.0.0", 4 | "private": true, 5 | "license": "MIT", 6 | "scripts": { 7 | "build": "rollup -c", 8 | "dev": "rollup -c -w", 9 | "start": "sirv public", 10 | "sb": "start-storybook" 11 | }, 12 | "devDependencies": { 13 | "@rollup/plugin-commonjs": "^14.0.0", 14 | "@rollup/plugin-node-resolve": "^8.4.0", 15 | "@rollup/plugin-replace": "^2.3.3", 16 | "cross-env": "^7.0.2", 17 | "dotenv": "^8.2.0", 18 | "rollup": "^2.22.0", 19 | "rollup-plugin-analyzer": "^3.3.0", 20 | "rollup-plugin-bundle-size": "^1.0.3", 21 | "rollup-plugin-hot": "^0.1.0", 22 | "rollup-plugin-livereload": "^1.3.0", 23 | "rollup-plugin-svelte": "^5.2.3", 24 | "rollup-plugin-svelte-hot": "^0.10.0", 25 | "rollup-plugin-terser": "^6.1.0", 26 | "svelte": "^3.24.0", 27 | "svelte-loader": "^2.13.6", 28 | "svelte-watch": "^1.1.0" 29 | }, 30 | "dependencies": { 31 | "core-js": "^3.6.5", 32 | "moment": "^2.27.0", 33 | "mqtt": "^4.1.0", 34 | "sirv-cli": "^1.0.3", 35 | "svelte-icons": "^2.1.0", 36 | "sveltestrap": "^3.5.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /public/android-chrome-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/android-chrome-72x72.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | #2d89ef 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/css/global.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; 3 | } 4 | 5 | a { 6 | text-decoration: none; 7 | } 8 | 9 | a:hover { 10 | text-decoration: underline; 11 | } 12 | 13 | .string { 14 | color: #5cb85c; 15 | } 16 | 17 | .number { 18 | color: #5bc0de; 19 | } 20 | 21 | .boolean { 22 | color: blue; 23 | } 24 | 25 | .null { 26 | color: magenta; 27 | } 28 | 29 | .key { 30 | color: #f0ad4e; 31 | } -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/images/logo.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/images/logo.ai -------------------------------------------------------------------------------- /public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/images/logo.png -------------------------------------------------------------------------------- /public/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 13 | 24 | 25 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Svelte MQTT Monitor 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/mstile-150x150.png -------------------------------------------------------------------------------- /public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/mstile-310x150.png -------------------------------------------------------------------------------- /public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/mstile-70x70.png -------------------------------------------------------------------------------- /public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Svelte", 3 | "short_name": "Svelte", 4 | "icons": [ 5 | { 6 | "src": "android-chrome-72x72.png", 7 | "sizes": "72x72", 8 | "type": "image/png" 9 | } 10 | ], 11 | "theme_color": "#ffffff", 12 | "background_color": "#ffffff", 13 | "display": "standalone" 14 | } 15 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import svelte from 'rollup-plugin-svelte'; 2 | import resolve from '@rollup/plugin-node-resolve'; 3 | import commonjs from '@rollup/plugin-commonjs'; 4 | import livereload from 'rollup-plugin-livereload'; 5 | import { terser } from 'rollup-plugin-terser'; 6 | import bundleSize from 'rollup-plugin-bundle-size'; 7 | import dotenv from 'dotenv'; 8 | import replace from '@rollup/plugin-replace'; 9 | 10 | // load ENV var from .env file 11 | dotenv.config(); 12 | 13 | const production = !process.env.ROLLUP_WATCH; 14 | 15 | export default { 16 | input: 'src/main.js', 17 | output: { 18 | sourcemap: true, 19 | format: 'iife', 20 | name: 'app', 21 | file: 'public/build/bundle.js' 22 | }, 23 | plugins: [ 24 | replace({ 25 | DEVICE_ID: JSON.stringify(process.env.DEVICE_ID), 26 | MQTT_PROTOCOL: JSON.stringify(process.env.MQTT_PROTOCOL), 27 | MQTT_HOST: JSON.stringify(process.env.MQTT_HOST), 28 | MQTT_PORT: JSON.stringify(process.env.MQTT_PORT), 29 | MQTT_USERNAME: JSON.stringify(process.env.MQTT_USERNAME), 30 | MQTT_PASSWORD: JSON.stringify(process.env.MQTT_PASSWORD), 31 | MQTT_PATH: JSON.stringify(process.env.MQTT_PATH), 32 | MQTT_SUBSCRIBE_TOPIC: JSON.stringify(process.env.MQTT_SUBSCRIBE_TOPIC), 33 | MQTT_MAX_MESSAGES: JSON.stringify(process.env.MQTT_MAX_MESSAGES), 34 | DATE_FORMAT: JSON.stringify(process.env.DATE_FORMAT), 35 | }), 36 | 37 | svelte({ 38 | // enable run-time checks when not in production 39 | dev: !production, 40 | // we'll extract any component CSS out into 41 | // a separate file - better for performance 42 | css: css => { 43 | css.write('public/build/bundle.css'); 44 | } 45 | }), 46 | 47 | // If you have external dependencies installed from 48 | // npm, you'll most likely need these plugins. In 49 | // some cases you'll need additional configuration - 50 | // consult the documentation for details: 51 | // https://github.com/rollup/plugins/tree/master/packages/commonjs 52 | resolve({ 53 | browser: true, 54 | dedupe: ['svelte'], 55 | preferBuiltins: true 56 | }), 57 | commonjs(), 58 | 59 | // In dev mode, call `npm run start` once 60 | // the bundle has been generated 61 | !production && serve(), 62 | 63 | // Watch the `public` directory and refresh the 64 | // browser on changes when not in production 65 | !production && livereload('public'), 66 | 67 | // If we're building for production (npm run build 68 | // instead of npm run dev), minify 69 | production && terser(), 70 | production && bundleSize(), 71 | ], 72 | watch: { 73 | clearScreen: false 74 | } 75 | }; 76 | 77 | function serve() { 78 | let started = false; 79 | 80 | return { 81 | writeBundle() { 82 | if (!started) { 83 | started = true; 84 | 85 | require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { 86 | stdio: ['ignore', 'inherit', 'inherit'], 87 | shell: true 88 | }); 89 | } 90 | } 91 | }; 92 | } 93 | -------------------------------------------------------------------------------- /src/App.svelte: -------------------------------------------------------------------------------- 1 | 154 | 155 | 216 | 217 | 232 | 233 | 234 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 |
Enviroment variableValue
DEVICE ID{DEVICE_ID}
MQTT PROTOCOL{MQTT_PROTOCOL}
MQTT HOST{MQTT_HOST}
MQTT PORT{MQTT_PORT}
MQTT USERNAME{MQTT_USERNAME}
MQTT PASSWORD******
MQTT PATH{MQTT_PATH}
MQTT SUBSCRIBE TOPIC{MQTT_SUBSCRIBE_TOPIC}
MQTT MAX MESSAGES{MQTT_MAX_MESSAGES}
DATE FORMAT{date_format}
316 |
317 |
318 | {#if messages.length === 0 && connected} 319 | Waiting for messages... 320 | {/if} 321 | {#if !connected} 322 | 323 | Client disconnected, messages will not be received. 324 | 325 | {/if} 326 | {#each messages as message, i} 327 | 328 | 329 |
330 | 338 |
339 | 340 | 341 | {moment(message.time).format(date_format)} 342 | 343 | 344 | {moment(message.time).fromNow()} 345 | 346 | {message.topic} 347 |
348 | 349 | 350 | 351 | 352 |
353 |               {@html message.colored}
354 |             
355 |
356 | 357 |
358 |
359 | {/each} 360 |
361 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import App from './App.svelte'; 2 | 3 | const app = new App({ 4 | target: document.body, 5 | props: { 6 | name: 'MQTT Monitor' 7 | } 8 | }); 9 | 10 | export default app; --------------------------------------------------------------------------------